はじめに
SQLclリリース21.4以降では、PL/SQLパッケージDBMS_DATAPUMPを使用するデータ・ポンプ機能が提供されています。
この機能では、ダンプ・ファイル用にOCI Object Storageを使用することができます。
OCI Base Database ServiceのスキーマをObject Storageへエクスポートし、Object Storageのダンプ・ファイルをインポーとしてみました。
今回はDBシステム・バージョン19.17/データベースのバージョン:19.17.0.0.0のBase Database Serviceを使用しました(SQLclは21.4が利用可能)
事前準備
- SQLcl リリース21.4 の準備
Base Database 19.17 であれば導入済み - oci cli のconfigファイルの準備
Base Database DBシステム・バージョン19.17 であれば oci cli が導入済みなので、oci setup config で生成可能 - データ・ポンプを使用するデータベース・ユーザの準備
- DATA_PUMP_DIRディレクトリへのREAD/WRITE権限
grant read, write on directory DATA_PUMP_DIR to <USER>;
- DATA_PUMP_DIRディレクトリへのREAD/WRITE権限
- Object Storage バケットの作成
SQLcl での エクスポート
- SQLclでデータベースに接続
- `sql [Username]@[host]:[port]/[Service]'
$ sql scott@10.0.0.2:1521/pdb1.subnet1.vcn1.oraclevcn.com
SQLcl: Release 21.4 Production on Fri Jan 20 10:00:00 2023
Copyright (c) 1982, 2023, Oracle. All rights reserved.
Password? (**********?) ********
Connected to:
Oracle Database 19c EE High Perf Release 19.0.0.0.0 - Production
Version 19.17.0.0.0
SQL>
- 使用するociプロファイルとObject Storageバケットをセット
- oci プロファイル:DEFAULT
- oci profile DEFAULT
- Object Storageバケットとして以下を利用した場合
- リージョン:ap-tokyo-1
- namespace:XXXXXXX
- バケット名:dumpdir
cs https://objectstorage.ap-tokyo-1.oraclecloud.com/n/XXXXXXX/b/dumpdir/o/
- oci プロファイル:DEFAULT
SQL> oci profile DEFAULT
Region set to: ap-tokyo-1
OCI Profile set to DEFAULT
Transfer method set to oci
SQL>
SQL> cs https://objectstorage.ap-tokyo-1.oraclecloud.com/n/XXXXXXX/b/dumpdir/o/
DBMS_CLOUD Credential: Not Set
OCI Profile: DEFAULT
Transfer Method: oci
URI as specified: https://objectstorage.us-phoenix-1.oraclecloud.com/n/XXXXXXX/b/dumpdir/o/
SQL>
- 接続しているスキーマをエクスポート
- dpdmp.dmpというファイルとして出力
dp export -copycloud -dumpfile dpdmp.dmp
SQL> dp export -copycloud -dumpfile dpdmp.dmp
** Datapump Command Start ** at 2023.01.20-10.00.00
Initiating DATA PUMP
DATABASE TIME ZONE: VERSION:39 CON_ID:0
Log Location: DATA_PUMP_DIR:ESQL_01.LOG
FLASHBACK automatically enabled to preserve database integrity.
Starting "SCOTT"."ESQL_01":
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type SCHEMA_EXPORT/STATISTICS/MARKER
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/COMMENT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
. . exported "SCOTT"."PRODUCTS" 6.023 KB 3 rows
ORA-39173: Encrypted data has been stored unencrypted in dump file set.
Master table "SCOTT"."ESQL_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SCOTT.ESQL_84 is:
/u01/app/oracle/product/19.0.0.0/dbhome_1/rdbms/log/EFEB62421EC8378AE0539800000A8B43/dpdemo.dmp
Job "SCOTT"."ESQL_84" successfully completed at Fri Jan 20 05:53:22 2023 elapsed 0 00:00:38
DataPump Operation Status 'COMPLETED'
Jobname = ESQL_84
File DATA_PUMP_DIR/dpdemo.dmp copied to https://objectstorage.us-sanjose-1.oraclecloud.com/n/orasejapan/b/dumpdir/o/dpdemo.dmp
** Datapump Command End ** at 2023.01.20-10.03.00
SQLcl での インポート
- SQLclでデータベースに接続
- `sql [Username]@[host]:[port]/[Service]'
- 接続しているスキーマにインポート
- 上述のダンプ・ファイルをインポートする例
dp import -copycloud -dumpfile dpdemo.dmp
SQL> dp import -copycloud -dumpfile dpdemo.dmp
** Datapump Command Start ** at 2023.01.20-11.00.00
File https://objectstorage.us-sanjose-1.oraclecloud.com/n/orasejapan/b/dumpdir/o/dpdemo.dmp copied to DATA_PUMP_DIR/dpdemo.dmp
Initiating DATA PUMP
DATABASE TIME ZONE: VERSION:36 CON_ID:0
Log Location: DATA_PUMP_DIR:ISQL_2.LOG
Master table "SCOTT"."ISQL_2" successfully loaded/unloaded
Starting "SCOTT"."ISQL_2":
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
. . imported "SCOTT"."PRODUCTS" 6.148 KB 6 rows
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type TABLE_EXPORT/TABLE/STATISTICS/MARKER
Job "SCOTT"."ISQL_2" successfully completed at Fri Jan 20 11:01:00 2023 elapsed 0 00:00:12
DataPump Operation Status 'COMPLETED'
Jobname = ISQL_2
** Datapump Command End ** at 2023.01.20-11.02.00
SQL>
補足
エクスポート
- スキーマ、またはスキーマのリストが指定されていない場合は、現在のスキーマがエクスポートされます。
- ダンプ・ファイルは、OracleディレクトリまたはObject Storageに格納できます。
- -copycloudオプションを使用して、エクスポートの最後の手順として、Object Storageにダンプ・ファイルをコピーできます。
インポート
- スキーマ、またはスキーマのリストが指定されていない場合は、ダンプ・ファイル内のすべてのオブジェクトがインポートされます(デフォルトではFULLインポート)。
- OracleディレクトリまたはObject Storageに格納されている、以前にエクスポートされたダンプ・ファイルからインポートします。
おわりに
SQLcl によって設定すくなくObject Storageを使ったエクスポート/インポートできました。