اوراکل 23ai – تبدیل LONG به LOB در زمان impdp

همانطور که می دانید، نوع داده 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 تغییر کرده است.

ارائه خدمات مشاوره ، پشتیبانی و نصب و راه اندازی پایگاه داده اوراکل در سراسر کشور...................... تلفن: 09128110897 ایمیل:vahidusefzadeh@gmail.com

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *