همانطور که می دانید، نوع داده LONG در اوراکل محدودیتهای زیادی دارد، مانند محدودیت در تعداد ستونها، محدودیت طول و … با وجود این محدودیتها، اوراکل هنوز بعضی از ستونهای دیتا دیکشنری را به نوع داده LOB تغییر نداده است. هرچند، اوراکل قابلیت جدیدی را در نسخه 12.2 با عنوان “ستونهای *_VC در ویوهای data dictionary” در این زمینه معرفی کرده است.
در برخی دیتابیسها، بسیاری از جداول هنوز از نوع داده LONG هستند و تبدیل آنها به LOB میتواند چالشبرانگیز باشد. اوراکل در نسخه 23ai قابلیت جدیدی را در این زمینه ارائه کرده است. در این نسخه، می توان نوع داده LONG را هنگام اجرای دستور impdp
به LOB تبدیل کنند.
اوراکل یک عبارت جدید به پارامتر TRANSFORM
به نام LONG_TO_LOB
اضافه کرده است. برای انجام تبدیل در حین وارد کردن دادهها، کافیست این پارامتر را روی Y
تنظیم کنید (به عنوان مثال: TRANSFORM=LONG_TO_LOB:Y
).
در زیر نحوه استفاده از این ویژگی را توضیح میدهم.
مرحله 1: ایجاد یک جدول با ستون نوع داده LONG
SQL> create table tbl (id number, full_name long); Table created. SQL> insert into tbl values(1, 'Vahid Yousefzadeh'); 1 row created. SQL> commit; Commit complete.
مرحله 2: گرفتن دامپ از جدول
SQL> create directory dir2025 as '/home/oracle/dump'; Directory created. [oracle@OEL9 ~]$ expdp directory=dir2025 dumpfile=tbl.dmp tables=usef.tbl Export: Release 23.0.0.0.0 - for Oracle Cloud and Engineered Systems on Mon Mar 17 07:47:35 2025 Version 23.7.0.25.01 Copyright (c) 1982, 2025, Oracle and/or its affiliates. All rights reserved. Username: usef/a@OEL9:1521/derazkolah Connected to: Oracle Database 23ai Enterprise Edition Release 23.0.0.0.0 - for Oracle Cloud and Engineered Systems Starting "USEF"."SYS_EXPORT_TABLE_01": usef/********@OEL9:1521/derazkolah directory=dir2025 dumpfile=tbl.dmp tables=usef.tbl Processing object type TABLE_EXPORT/TABLE/TABLE_DATA Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS Processing object type TABLE_EXPORT/TABLE/TABLE . . exported "USEF"."TBL" 5.5 KB 1 row Master table "USEF"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded ****************************************************************************** Dump file set for USEF.SYS_EXPORT_TABLE_01 is: /home/oracle/dump/tbl.dmp Job "USEF"."SYS_EXPORT_TABLE_01" successfully completed at Mon Mar 17 07:49:17 2025 elapsed 0 00:01:25
مرحله 3: برگرداندن دامپ جدول با تبدیل LONG به LOB
SQL> create directory dir2025 as '/home/oracle/dump'; Directory created. [oracle@OEL9 ~]$ impdp directory=dir2025 dumpfile=tbl.dmp tables=usef.tbl remap_table=tbl:tbl_new TRANSFORM=LONG_TO_LOB:Y Import: Release 23.0.0.0.0 - for Oracle Cloud and Engineered Systems on Mon Mar 17 07:51:17 2025 Version 23.7.0.25.01 Copyright (c) 1982, 2025, Oracle and/or its affiliates. All rights reserved. Username: usef/a@OEL9:1521/derazkolah Connected to: Oracle Database 23ai Enterprise Edition Release 23.0.0.0.0 - for Oracle Cloud and Engineered Systems Master table "USEF"."SYS_IMPORT_TABLE_01" successfully loaded/unloaded Starting "USEF"."SYS_IMPORT_TABLE_01": usef/********@OEL9:1521/derazkolah directory=dir2025 dumpfile=tbl.dmp tables=usef.tbl remap_table=tbl:tbl_new TRANSFORM=LONG_TO_LOB:Y Processing object type TABLE_EXPORT/TABLE/TABLE Processing object type TABLE_EXPORT/TABLE/TABLE_DATA . . imported "USEF"."TBL_NEW" 5.5 KB 1 row Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS Job "USEF"."SYS_IMPORT_TABLE_01" successfully completed at Mon Mar 17 07:52:26 2025 elapsed 0 00:01:04
مرحله 4: بررسی جدول جدید
SQL> desc tbl_new; Name Null? Type ------------------ -------- --------- ID NOT NULL NUMBER FULL_NAME CLOB SQL> select * from tbl_new; ID FULL_NAME ---- ------------------------------ 1 Vahid Yousefzadeh
همانطور که مشاهده می کنید، نوع داده FULL_NAME از LONG به CLOB تغییر کرده است.