初めに
Autonomous AI Database (ADB) でData Pumpファイルをエクスポート・インポートする方法はいくつか存在します。本記事では、それらの代表的な方法を比較・整理してご紹介します。
なお、ここで紹介する内容は、公式に提供されている製品・サービスに限定しており、サードパーティー製のツール等については言及しておりません。
1. エクスポート・インポート方法
1-1. CLI/API
a) expdp/impdpコマンド
前提
- ADBに接続できる端末から実施(例: OCI VM, On-Pクライアント)
- 実施端末に、Oracle Clientのインストールは必要。インストール手順は、次の記事の"STEP 1-5"をご参照ください。(OS: Oracle Linux 8)
Autonomous DBからOCIオブジェクト・ストレージへデータ・ポンプをエクスポートする手順
コマンド例
次の例の出力先は、OCIオブジェクト・ストレージです。
- エクスポート:
expdp DATA_PUMP_USER/<password>@adw_high \
credential=<credential_name> \
dumpfile=https://objectstorage.ap-tokyo-1.oraclecloud.com/n/<ObjectStorageNamespace>/b/<bucket_name>/o/data_pump_file.dmp \
logfile=export.log \
directory=data_pump_dir- インポート:
impdp DATA_PUMP_USER/<password>adw_high \
credential=<credential_name> \
dumpfile=https://objectstorage.ap-tokyo-1.oraclecloud.com/n/<ObjectStorageNamespace>/b/<bucket_name>/o/data_pump_file.dmp \
tables=<table_name> \
table_exists_action=append \
logfile=import.log \
directory=data_pump_dir※、事前にクレデンシャルとディレクトリを作成してください。
b) SQLcl の "dp export/import" コマンド
この例では、OCI Cloud ShellからSQLclを実行する。
※、Coud Shellにインストール済で、直接に使える。
ステップ
- OCI Cloud Shellを開く。
- ADBウォレットをCloud Shellにアップロードする。
- SQLclを起動し、エクスポート対象ユーザーでADBへ接続する。
コマンド例:sql -cloudconfig Wallet_adw01.zip dp exportを実行し、スキーマをエクスポートする。
<username>@cloudshell:~ (ap-tokyo-1)$ sql -cloudconfig Wallet_adw01.zip DATA_PUMP_USER/<password>@adw01_high
<中略>
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.21.0.1.0
SQL> show user;
USER is "DATA_PUMP_USER"
SQL> dp export
Initiating DATA PUMP
Database Time Zone: VERSION:42 CON_ID:0
Log Location: DATA_PUMP_DIR:ESQL_46.LOG
Starting "DATA_PUMP_USER"."ESQL_46":
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
Processing object type SCHEMA_EXPORT/POST_SCHEMA/PROCACT_SCHEMA
. . exported "DATA_PUMP_USER"."ZIPCODEJP" 6.006 MB 124523 rows
ORA-39173: Encrypted data has been stored unencrypted in dump file set.
Master table "DATA_PUMP_USER"."ESQL_46" successfully loaded/unloaded
******************************************************************************
Dump file set for DATA_PUMP_USER.ESQL_46 is:
/u03/dbfs/0A6784B0EE797006E0635A10000A776A/data/dpdump/ESQL_46.DMP
Job "DATA_PUMP_USER"."ESQL_46" successfully completed at Mon Nov 20 02:56:55 2023 elapsed 0 00:00:27
DataPump Operation Status 'COMPLETED'
Jobname = ESQL_46
SQL>
インポートdp import -dumpfile <dumpfile_name>でスキーマをインポートする(結果を省略)。
備考
- dp export/importコマンドの詳細は、SQlcl リファレンスをご参照ください。
- SQLclをインストールするのに、次の記事をご参照ください。
LinuxとWindowsインスタンスに SQLcl をインストール
c) Oracle Data Pump API
開発者向き。DBMS_DATAPUMPパッケージを利用する。
詳細については、ドキュメント Using the Oracle Data Pump API をご参照ください。
1-2. GUI/OCIコンソール
a) SQL Developer (GUI)
SQL Developerは、オラクルが提供する便利なGUIツールで、ざまざまなDBに接続できます。
前提
ADBに接続できる端末に、SQL Developerのインストールが必要です。
インストール手順: (次の記事をご参照)
Windows OS: PowerShellでSQL DeveloperをWindowsに自動インストール
Linux OS: Oracle LinuxでSQL Developerを使用する方法
ステップ
1) DBAパネルを開く
メニュー → View → DBA
2) ADBへの接続を追加
既存の接続があれば、それを選択する。既存の接続がなければ、新規作成する(接続方法の詳細は、上記Windows版の記事を参照)。
3) 接続後、"Data Pump"を右クリックし、Wizardを起動する。
4) Wizardの指示に従って、進んでください(後続のステップを省略)。
b) データベース・アクション (OCIコンソール)
入口
1. ADB起動中の時、ADB詳細画面より、「データベース・アクション」をクリック。
※、プライベートADBの場合、同プライベート・サブネットの端末より実施してください。
2. ユーザーとパスワードを入力し、ログインする。
3. Administration > "DATA PUMP"をクリック
4. 右上のIMPORTをクリック。
5. 画面の指示に従って、インポート・ジョブを新規作成する。
できること
- ジョブ監視(Export/Import両方)
- DUMPファイルのダウンロード
- インポート・ジョブの作成
できないこと
エクスポート・ジョブの作成
2. エクスポートの出力先
2-1. ローカル・ファイル・システム
デフォルトの出力先は、ADBローカルのファイル・システムとなる。
SQL> select owner, directory_name, directory_path FROM dba_directories where directory_name='DATA_PUMP_DIR';
OWNER DIRECTORY_NAME DIRECTORY_PATH
---------- -------------------- ----------------------------------------------------------------------
SYS DATA_PUMP_DIR /u03/dbfs/FFA038E37518AFA8E0534310000AC205/data/dpdump
SQL>ADBローカル・ファイルシステムに直接ログインできないため、DUMPファイルを外部へ取り出したい場合、出力先をオブジェクト・ストレージまたはファイル・ストレージに変更することが可能。
2-2. OCIオブジェクト・ストレージへ
DUMPファイルをオブジェクト・ストレージに格納するのは、一般的なケースとなる。サービスGWを経由する場合、OCI内部通信で済み、インターネットを経由しない。
Autonomous DBからOCIオブジェクト・ストレージへデータ・ポンプをエクスポートする手順
この手順は、プライベートADBを例にしたけど、パブリックADBにも適用できます。
2-3. OCIファイル・ストレージへ
ファイル・ストレージも選択肢の一つであるけど、制限事項がある。
サイズの大きいDUMPファイルを転送する場合、性能面がよくて、代わりにストレージ料金がオブジェクト・ストレージより約11倍ほど高くなる。
制限事項
※、この方法はパブリックADBには適用できない。
2-4. 出力先の比較
ローカル以外の2つを比較してみましょう。
| 出力先 | OCI Object Storage | OCI FSS |
|---|---|---|
| ADBのアクセス・タイプ | パブリック or プライベート・エンドポイント | プライベート・エンドポイントのみ |
| 認証トークン | 必要 | 不要 |
| 関連プロシージャ | DBMS_CLOUD.CREATE_CREDENTIAL | DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM |
| DBMS_CLOUD.DROP_CREDENTIAL | DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEM | |
| DBMS_CLOUD.UPDATE_CREDENTIAL | - | |
| DBMS_CLOUD.LIST_OBJECTS | DBMS_CLOUD.LIST_FILES | |
| 価格 (2023年11月) | 標準の場合:3.57円 (GB per month) | 42円 (GB per month) |
※、DBMS_CLOUD_ADMINを実行するためには、管理者ユーザーでログインする必要がある。
以上
オフィシャル・ドキュメント
Access Network File System from Autonomous Database
SQlcl リファレンス