LoginSignup
2

[Oracle Cloud] SQLcl のdatapumpを使って Base Database Serviceから Object Storage への エクスポート/インポートしてみた。

Posted at

はじめに

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>;
  • 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/
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を使ったエクスポート/インポートできました。

参考情報

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
2