本ブログは、オラクル・クラウドの個人ブログの1つです。
初めに
Autonomous Database (ADB)でData Pumpファイルをエクスポート・インポートするのに、いくつかの方法があります。各種の方法をまとめてみたいと思います。
本ブログでは、オフィシャルな製品・サービスのみを含め、サードパーティーの製品については言及しません。
索引
エクスポート・インポート方法
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
※、事前にクレデンシャルとディレクトリを作成してください。
SQLcl の "dp export/import" コマンド
この例では、OCI Cloud ShellからSQLclを実行する。
※、Coud Shellにインストール済で、直接に使える。
ステップ
- OCI Cloud Shellを開く。
- ADBウォレットをCloud Shellにアップロードする。
- SQLclを起動し、エクスポート対象ユーザーでADBへ接続する。
コマンド例:sql -cloudconfig Wallet_adw01.zip <username>/<password>@adw01_high
-
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 をインストール
SQL Developer (GUI)
SQL Developerは、オラクルが提供する便利なGUIツールで、ざまざまなDBに接続できます。
前提
ADBに接続できる端末に、SQL Developerのインストールが必要です。
インストール手順: (次の記事をご参照)
Windows OS: SQL Developerで様々なDBに接続する方法
Linux OS: Oracle LinuxでSQL Developerを利用する方法
ステップ
- DBAパネルを開く
メニュー → View → DBA - ADBへの接続を追加
既存の接続があれば、それを選択する。既存の接続がなければ、新規作成する(接続方法の詳細は、上記Windows版の記事を参照)。 - 接続後、"Data Pump"を右クリックし、Wizardを起動する。
- Wizardの指示に従って、進んでください(後続のステップを省略)。
データベース・アクション (OCIコンソール)
入口
できること
- ジョブ監視(Export/Import両方)
- DUMPファイルのダウンロード
- インポート・ジョブの作成
できないこと
エクスポート・ジョブの作成
Oracle Data Pump API
開発者向き。DBMS_DATAPUMPパッケージを利用する。
詳細はドキュメントをご参照ください。
Using the Oracle Data Pump API
エクスポートの出力先
ローカル・ファイル・システム
デフォルトの出力先は、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ファイルを外に出したい時、出力先をオブジェクト・ストレージか、ファイル・ストレージに変更するのは可能。
OCIオブジェクト・ストレージへ
DUMPファイルをオブジェクト・ストレージに格納するのは、一般的なケースとなる。サービスGWを経由する場合、OCI内部通信で済み、インターネットを経由しない。
手順の詳細は、次の記事をご参照ください。
Autonomous DBからOCIオブジェクト・ストレージへデータ・ポンプをエクスポートする手順
※、上記の構成図と手順は、プライベートADBを例にしたけど、この方法はパブリックADBにも適用する。
OCIファイル・ストレージへ
ファイル・ストレージも選択肢の一つであるけど、制限事項がある。
サイズの大きいDUMPファイルを転送する場合、性能面がよくて、代わりにストレージ料金がオブジェクト・ストレージより約11倍ほど高くなる。
出力先の比較
ローカル以外の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 リファレンス