[OCI]Autonomous DatabaseからObject StorageへのExportしてみた。


OCI Autonomous Database(ADW/ATP)からData Pump Exportユーティリティを使って
Object StorageにExportをしてみた。

参考情報

事前準備

Object StoregeにData Pump Exportするための事前準備として以下の作業を実施

  • Autonomous Databaseバージョンの確認
  • 作業クライアントの準備
  • OCI ユーザの準備(認証トークン)
  • Credential の作成

Autonomous Databaseバージョンの確認

Data Pump Exportユーティリティは接続するサーバのバージョンより新しいものは利用できないため
接続するAutonomous Databaseのバージョンを確認

作業クライアントの準備

Export対象のAutonomous DatabaseのバージョンにあったOracle ClientおよびExportユーティリティをインストールしたClientを用意し、Autonomous Databaseに接続できるようにウォレットをダウンロード・展開し、sqlplus で ADMINユーザで接続できることを確認します。
(Oracle Instant Clientを使って準備する場合はToolsパッケージをインストールすることでData Pumpがインストールされます)

OCI ユーザの準備(認証トークン)

Object StorageにObject作成ができる権限を持つOCIユーザの認証トークンを生成します。

生成されたトークンをコピー

Credential の作成

SQL実行ができるツール(SQL*Plusなど)でExport対象のAutonomous DatabaseにADMINユーザで接続し、以下のPL/SQLを実行し、Credentialを生成します。

BEGIN
  DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'DEF_CRED_NAME',
    username => '[email protected]',
    password => 'password'
  );
END;
/

credential_name => Credentialの名前のなる任意の文字列
username => 認証トークンを生成したOCIユーザ名
password => 生成されたトークン

Data Pump Exportの実行

Exportを実行します。
expdpパラメータについては、次の点に注意してください。

  • Oracle Cloud Infrastructure Object Storageエクスポートの最大filesizeパラメーター値は10Gです。
  • Oracle Cloud Infrastructure Object Storage Classicエクスポートの最大filesizeパラメーター値は20Gです。
  • export.logログファイルのために、directoryパラメータは、data_pump_dirディレクトリを指定します。

Exportのコマンドオプションは、利用するData Pump Exportユーティリティのバージョンによって違います。

バージョン 19.6 か それ以前のバージョンの場合

事前準備で作成した Credential をDEFAULT_CREDENTIALとしてPropertyにセットします。

ALTER DATABASE PROPERTY SET DEFAULT_CREDENTIAL = 'ADMIN.DEF_CRED_NAME'

Exportコマンドの実行します。

expdp admin/password@ADWC1_high \
     filesize=5G \
     dumpfile=default_credential:https://objectstorage.us-ashburn-1.oraclecloud.com/n/namespace-string/b/bucketname/o/exp%U.dmp \
     parallel=16 \
     encryption_pwd_prompt=yes \
     logfile=export.log \
     directory=data_pump_dir

「namespace-string」はExport先のObject Storageのネームスペースを指定
「bucketname」はExport先のObject Storageバケットを指定
例では、Export接続にHIGHデータベースサービスを使用し、PARALLELのOCPUの数にパラメーターを設定し高速に実行することを考慮しています。
補足:Fullエクスポートを実行するか、他のユーザーが所有するオブジェクトをエクスポートするには、DATAPUMP_CLOUD_EXP ロールが必要です。

バージョン 19.7 か それ以降のバージョンの場合

Exportコマンドで事前準備で作成した Creditial を指定し、Exportを実行します。

expdp admin/password@ADWC1_high \
     filesize=5G \
     credential=def_cred_name \
     dumpfile=https://objectstorage.us-ashburn-1.oraclecloud.com/n/namespace-string/b/bucketname/o/exp%U.dmp \
     parallel=16 \
     encryption_pwd_prompt=yes \
     logfile=export.log \
     directory=data_pump_dir

「namespace-string」はExport先のObject Storageのネームスペースを指定
「bucketname」はExport先のObject Storageバケットを指定
例では、Export接続にHIGHデータベースサービスを使用し、PARALLELのOCPUの数にパラメーターを設定し高速に実行することを考慮しています。
補足:Fullエクスポートを実行するか、他のユーザーが所有するオブジェクトをエクスポートするには、DATAPUMP_CLOUD_EXP ロールが必要です。

Autonomous Database (18c)に対して実行したコマンドログ

$ expdp admin/<password>@ADWC1_high \
     filesize=5G \
     dumpfile=default_credential:https://objectstorage.us-ashburn-1.oraclecloud.com/n/namespace-string/b/bucketname/o/exp%U.dmp \
     parallel=16 \
     encryption_pwd_prompt=yes \
     logfile=export.log \
     directory=data_pump_dir \
     tables='SH.SALES_TRANS_CUST,SH.CUSTOMERS,SH.ORDERS'

Export: Release 18.0.0.0.0 - Production on Wed Mar 25 06:03:56 2020
Version 18.5.0.0.0

Copyright (c) 1982, 2018, Oracle and/or its affiliates.  All rights reserved.

Connected to: Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production

Encryption Password:
Starting "ADMIN"."SYS_EXPORT_TABLE_01":  admin/********@orcl_high filesize=5G dumpfile=default_credential:https://objectstorage.ap-tokyo-1.oraclecloud.com/n/nr9k7zt1ylwk/b/kenwatan/o/exp%U.dmp parallel=16 encryption_pwd_prompt=yes logfile=export.log directory=data_pump_dir tables=SCOTT.SALES_TRANS_CUST,SCOTT.CUSTOMERS,SCOTT.FACTORY_D
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Processing object type TABLE_EXPORT/TABLE/TABLE
. . exported "SH"."CUSTOMERS"                             0 KB       0 rows
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type TABLE_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT
Processing object type TABLE_EXPORT/TABLE/STATISTICS/MARKER
. . exported "SH"."ORDERS"                         4.195 GB 132120597 rows
. . exported "SH"."SALES_TRANS_CUST"                  153.2 KB    2804 rows
Master table "ADMIN"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded
******************************************************************************
Dump file set for ADMIN.SYS_EXPORT_TABLE_01 is:
  https://swiftobjectstorage.ap-tokyo-1.oraclecloud.com/v1/nr9k7zt1ylwk/kenwatan/exp01.dmp
  https://swiftobjectstorage.ap-tokyo-1.oraclecloud.com/v1/nr9k7zt1ylwk/kenwatan/exp02.dmp
  https://swiftobjectstorage.ap-tokyo-1.oraclecloud.com/v1/nr9k7zt1ylwk/kenwatan/exp03.dmp
  https://swiftobjectstorage.ap-tokyo-1.oraclecloud.com/v1/nr9k7zt1ylwk/kenwatan/exp04.dmp
  https://swiftobjectstorage.ap-tokyo-1.oraclecloud.com/v1/nr9k7zt1ylwk/kenwatan/exp05.dmp
  https://swiftobjectstorage.ap-tokyo-1.oraclecloud.com/v1/nr9k7zt1ylwk/kenwatan/exp06.dmp
  https://swiftobjectstorage.ap-tokyo-1.oraclecloud.com/v1/nr9k7zt1ylwk/kenwatan/exp07.dmp
  https://swiftobjectstorage.ap-tokyo-1.oraclecloud.com/v1/nr9k7zt1ylwk/kenwatan/exp08.dmp
  https://swiftobjectstorage.ap-tokyo-1.oraclecloud.com/v1/nr9k7zt1ylwk/kenwatan/exp09.dmp
Job "ADMIN"."SYS_EXPORT_TABLE_01" successfully completed at Wed Mar 25 06:13:19 2020 elapsed 0 00:09:21

$

「encryption_pwd_prompt=yes」を指定し暗号化します。
途中プロンプト「Encryption Password:」が表示され暗号化パスワードを入力します。
impdp実行時に同じ暗号化パスワードを入力して復号化するため、覚えておいてください。
(暗号化パスワードの最大長は128バイト)

--
Autonomous Databaseから直接Object StorageにExportができました。