Data Pump とは
Data Pump は Oracle Database 標準の論理バックアップ・ツールです。コマンドラインから実行する expdp/impdp コマンドや、PL/SQL パッケージ DBMS_DATAPUMP から構成されています。バックアップやリストアはテーブル単位、スキーマ単位、データベース単位、表領域単位などを自由に選択できます。
本記事では Oracle AI Database 26ai に含まれる Data Pump の新機能ついて検証します。
Oracle AI Database 26ai の新機能
Oracle AI Database 26ai の Data Pump には LONG 型と LONG RAW 型の列を自動変換するパラメーターが追加されました。マニュアル Oracle AI Database 26ai Database Utility には以下の記載があります。
LONG_TO_LOB:[Y|N]
The default value is N. This parameter changes all LONG data types to CLOB and all LONG RAW data types to BLOB. Using this transform enables you to migrate deprecated LONG and LONG RAW data types, transparently and automatically converting them to CLOBs and BLOBs.
LONG は古い Oracle Database で利用された大規模な文字列を格納するためのデータ型ですが、Oracle 8i 以降は非推奨になっています。LONG 型は CLOB 型または NCLOB 型に変更することが推奨されます。また LONG RAW はバイナリ・データを格納する目的のデータ型ですが、こちらも Oracle 8i 以降は非推奨で、BLOB 型に変更することが推奨されます。
Data Pump ではインポート時にデータ型の変更を自動的に行うオプションを提供し、LOB 型への変更を進めようとしています。
検証
実際の変更について検証します。
エクスポート
Oracle Database 19c に LONG 型、LONG RAW 型の列を持つテーブルを作成し、エクスポートします。ダンプファイルを Oracle AI Database 26ai データベースにインポートします。
SQL> CREATE TABLE data1(col1 NUMBER PRIMARY KEY, col2 LONG);
Table created.
SQL> CREATE TABLE data2(col1 NUMBER PRIMARY KEY, col2 LONG RAW);
Table created.
SQL> INSERT INTO data1 VALUES (100, 'data1');
1 row created.
SQL> INSERT INTO data2 VALUES (10, HEXTORAW('7D'));
1 row created.
SQL> COMMIT;
Commit complete.
エクスポートを行います。
$ expdp userid=scott/{Password}@dbsrv1:1521/freepdb1 tables=data1,data2 directory=data_pump_dir dumpfile=scott.dmp
Export: Release 23.26.0.0.0 - Production on Wed Nov 5 18:35:56 2025
Version 23.26.0.0.0
Copyright (c) 1982, 2025, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle AI Database 26ai Free Release 23.26.0.0.0 - Develop, Learn, and Run for Free
Starting "SCOTT"."SYS_EXPORT_TABLE_01": userid=scott/********@dbsrv1:1521/freepdb1 tables=data1,data2 directory=data_pump_dir dumpfile=scott.dmp
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
. . exported "SCOTT"."DATA1" 5.5 KB 1 rows
. . exported "SCOTT"."DATA2" 5.5 KB 1 rows
Master table "SCOTT"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SCOTT.SYS_EXPORT_TABLE_01 is:
/opt/oracle/admin/FREE/dpdump/412FE92A5194BEEDE0639D01A8C08189/scott.dmp
Job "SCOTT"."SYS_EXPORT_TABLE_01" successfully completed at Wed Nov 5 18:36:12 2025 elapsed 0 00:00:14
インポート
元のテーブルを削除し、インポートを行います。まずはダンプファイル内の SQL 文を確認します。元のデータ型(LONG, LONG RAW)になっています。
$ impdp userid=scott/{Password}@dbsvr11:1521/freepdb1 tables=data1,data2 directory=data_pump_dir dumpfile=scott.dmp sqlfile=scott.sql
Import: Release 23.26.0.0.0 - Production on Wed Nov 5 18:43:12 2025
Version 23.26.0.0.0
...
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Job "SCOTT"."SYS_SQL_FILE_TABLE_01" successfully completed at Wed Nov 5 18:43:16 2025 elapsed 0 00:00:03
$ cat scott.sql
...
CREATE TABLE "SCOTT"."DATA2"
( "COL1" NUMBER,
"COL2" LONG RAW
) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "USERS" ;
CREATE TABLE "SCOTT"."DATA1"
( "COL1" NUMBER,
"COL2" LONG
) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "USERS" ;
...
transform=long_to_lob:y オプションを指定して SQLFILE を作成してみます。
$ impdp userid=scott/{Password}@dbsvr11:1521/freepdb1 tables=data1,data2 directory=data_pump_dir dumpfile=scott.dmp sqlfile=scott.sql transform=long_to_lob:y
Import: Release 23.26.0.0.0 - Production on Wed Nov 5 18:43:12 2025
Version 23.26.0.0.0
...
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Job "SCOTT"."SYS_SQL_FILE_TABLE_01" successfully completed at Wed Nov 5 18:42:57 2025 elapsed 0 00:00:03
$ cat scott.sql
...
CREATE TABLE "SCOTT"."DATA2"
( "COL1" NUMBER,
"COL2" BLOB
) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "USERS" ;
CREATE TABLE "SCOTT"."DATA1"
( "COL1" NUMBER,
"COL2" CLOB
) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "USERS" ;
...
LONG 型の列は CLOB 型に、LONG RAW 型の列は BLOB に変換されていることが分かります。この検証により、SQLFILE オプションを指定した場合でも LONG 型列の変換機能が有効に働くことが確認できます。
次に実際にデータのインポートを行います。
$ impdp userid=scott/{Password}@dbsvr1:1521/freepdb1 tables=data1,data2 directory=data_pump_dir dumpfile=scott.dmp transform=long_to_lob:y
Import: Release 23.26.0.0.0 - Production on Wed Nov 5 20:38:49 2025
Version 23.26.0.0.0
Copyright (c) 1982, 2025, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle AI Database 26ai Free Release 23.26.0.0.0 - Develop, Learn, and Run for Free
Master table "SCOTT"."SYS_IMPORT_TABLE_01" successfully loaded/unloaded
Starting "SCOTT"."SYS_IMPORT_TABLE_01": userid=scott/********@dbsvr1:1521/freepdb1 tables=data1,data2 directory=data_pump_dir dumpfile=scott.dmp transform=long_to_lob:y
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
. . imported "SCOTT"."DATA1" 5.5 KB 1 rows
. . imported "SCOTT"."DATA2" 5.5 KB 1 rows
Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Job "SCOTT"."SYS_IMPORT_TABLE_01" successfully completed at Wed Nov 5 20:39:20 2025 elapsed 0 00:00:30
変換されたデータ型を確認します。
SQL> DESCRIBE data1
Name Null? Type
----------------------------------------- -------- ----------------------------
COL1 NOT NULL NUMBER
COL2 CLOB
SQL> SELECT * FROM data1;
COL1 COL2
---------- ------------------------------
100 data1
SQL> DESCRIBE data2
Name Null? Type
----------------------------------------- -------- ----------------------------
COL1 NOT NULL NUMBER
COL2 BLOB
SQL> SELECT * FROM data2;
COL1 COL2
---------- ------------------------------
10 7D
LONG 型は CLOB 型に、LONG RAW 型は BLOB 型に変換されていることがわかります。
Author: Noriyoshi Shinoda / Date: November 5, 2025