ADW(Autonomous Data Warehouse) に OCI の Object Storage にアップロードした dmp を インポート(impdp)してみる。
- 1. データのエクスポート(expdp)
- 2. dmpファイルの Object Storage へのアップロード
- 3. Object Storage にアップロードしたdmpファイルの Pre-authenticated URL生成
- 4. OCIユーザーの作成とGROUP設定、Auth Token生成
- 5. DBMS_CLOUDパッケージで ADW に Credential を作成
- 6. インポート(impdp)の実行
- 7. まとめ
ADW(Autonomous Data Warehouse) は ORACLE が提供する
Full Managed なデータベースの Cloud Service なんやで彡(゚)(゚)
Autonomous Data Warehouse
https://docs.oracle.com/en/cloud/paas/autonomous-data-warehouse-cloud/
今回はこの ADW に OCI(Oracle Cloud Infrastructure) の Object Storage に
アップロードした dmp をインポート(impdp)してみます。
1. データのエクスポート(expdp)
まずはデータをエクスポート(expdp)します。オプションは下記参照彡(゚)(゚)
Export Your Existing Oracle Database to Import into Autonomous Data Warehouse
https://docs.oracle.com/en/cloud/paas/autonomous-data-warehouse-cloud/user/load-data.html#GUID-7068E963-C464-4ABB-AC60-BA56DFC98650
実際に流したコマンドは下記です。index は exclude してません。
Object Storage に置けるファイルは 1ファイルあたり5GB までという制限があるので、
FILESIZEパラメータでdmpファイルのサイズを制限します。
expdp xxxxxxxx/yyyyyyyy@zzzzzzzz \ exclude=cluster,indextype,materialized_view,materialized_view_log,materialized_zonemap,db_link \ data_options=group_partition_table_data \ parallel=4 \ schemas=soe \ directory=DATA_PUMP_DIR \ LOGFILE=exp_soe.log \ DUMPFILE=exp_soe%U.dmp \ FILESIZE=4900MB \ REUSE_DUMPFILES=YES \ VERSION=12.2.0
expdpの実行結果は下記の通りです。
Export: Release 18.0.0.0.0 - Production on Mon Jan 21 16:25:09 2019 Version 18.2.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 Starting "PDBADMIN"."SYS_EXPORT_SCHEMA_01": PDBADMIN/********@10.0.2.3:1521/ayspdb2.sub12070931432.vcnayshibat.oraclevcn.com exclude=cluster,indextype,materialized_view,materialized_view_log,materialized_zonemap,db_link data_options=group_partition_table_data parallel=4 schemas=soe directory=DATA_PUMP_DIR LOGFILE=exp_soe.log DUMPFILE=exp_soe%U.dmp FILESIZE=4900MB REUSE_DUMPFILES=YES VERSION=12.2.0 Processing object type SCHEMA_EXPORT/PACKAGE/PACKAGE_BODY Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/FUNCTIONAL_INDEX/INDEX_STATISTICS Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS : : /u01/app/oracle/product/18.2/dbhome_1/rdbms/log/7C6D751E07A94BB2E0530302000AFD1F/exp_soe01.dmp /u01/app/oracle/product/18.2/dbhome_1/rdbms/log/7C6D751E07A94BB2E0530302000AFD1F/exp_soe02.dmp /u01/app/oracle/product/18.2/dbhome_1/rdbms/log/7C6D751E07A94BB2E0530302000AFD1F/exp_soe03.dmp /u01/app/oracle/product/18.2/dbhome_1/rdbms/log/7C6D751E07A94BB2E0530302000AFD1F/exp_soe04.dmp Job "xxxxxxxx"."SYS_EXPORT_SCHEMA_01" successfully completed at Mon Jan 21 16:27:24 2019 elapsed 0 00:02:13
2. dmpファイルの Object Storage へのアップロード
dmpファイルを Object Storage にアップロードします。ブラウザ画面から
アップロードすることも可能なんですが、今回は OCI CLI の
コマンド(oci os object bulk-upload ...)で Object Storage にアップロードしてしまいました。
oci os object bulk-upload -ns xxxxxxxx -bn yyyyyyyy-objs001 --src-dir /u01/app/oracle/product/18.2/dbhome_1/rdbms/log/7C6D751E07A94BB2E0530302000AFD1F/ Uploaded exp_soe02.dmp [####################################] 100% { "skipped-objects": [], "upload-failures": {}, "uploaded-objects": { "exp_soe01.dmp": { "etag": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "last-modified": "Mon, 21 Jan 2019 16:35:00 GMT", "opc-multipart-md5": "yyyyyyyyyyyyyyyyyyyyyyyyyyy" : }
成功するとアップロードされたファイルの情報がJSON形式で返ってきます。
OCI CLIのセットアップ方法は下記のブログ群が参考になります。
コマンドライン(CLI)でOCIを操作する - Oracle Cloud Infrastructureアドバンスド
https://community.oracle.com/docs/DOC-1019624#jive_content_id_3_CLIOracle Cloud Infrastructure CLIの導入 (後編:環境設定)
https://cloudii.atomitech.jp/entry/2018/08/01/104038[Oracle Cloud] OCI DatabaseにCLIを設定してみた
http://itedge.stars.ne.jp/http-itedge-stars-ne-jp-oracle-cloud-oci-database-cli/
3. Object Storage にアップロードしたdmpファイルの Pre-authenticated URL生成
※(追記)2019年8月現在では Object Storage の Native な URL で impdp できるようになったため、本手順によるPRA-URLの生成は不要です。
下記ドキュメント(※要アカウント)の記載の通り、Object Storage に
アップロードした dmpファイル の Pre-authenticated URL を生成します。
ATP : Import to ATP From Object Store Fails with
'ORA-17500: ODM Err:ODM HTTP Unauthorized' (ドキュメントID 2446550.1)
https://support.oracle.com/epmos/faces/DocumentDisplay?id=2446550.1
これもブラウザ画面から生成可能なんですが、今回は OCI CLI の
コマンド(oci os preauth-request create ...)で生成してしまいました。
oci os preauth-request create -ns xxxxxxxx -bn yyyyyyyy-objs001 --access-type ObjectRead --name prauth_exp_soe01 --time-expires 2099-12-31 -on exp_soe01.dmp oci os preauth-request create -ns xxxxxxxx -bn yyyyyyyy-objs001 --access-type ObjectRead --name prauth_exp_soe02 --time-expires 2099-12-31 -on exp_soe02.dmp oci os preauth-request create -ns xxxxxxxx -bn yyyyyyyy-objs001 --access-type ObjectRead --name prauth_exp_soe03 --time-expires 2099-12-31 -on exp_soe03.dmp oci os preauth-request create -ns xxxxxxxx -bn yyyyyyyy-objs001 --access-type ObjectRead --name prauth_exp_soe04 --time-expires 2099-12-31 -on exp_soe04.dmp
下記が実行ログです。成功すると生成された Pre-authenticated URL が
JSON形式で出力されます。後からは参照不可なので、テキストファイル等に保全しておきます。
oci os preauth-request create -ns xxxxxxxx -bn yyyyyyyy-objs001 --access-type ObjectRead --name prauth_exp_soe01 --time-expires 2099-12-31 -on exp_soe01.dmp { "data": { "access-type": "ObjectRead", "access-uri": "/p/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/n/xxxxxxx/b/yyyyyyyy-objs001/o/exp_soe01.dmp", "id": "...exp_soe01.dmp", "name": "prauth_exp_soe01", "object-name": "exp_soe01.dmp", "time-created": "2019-01-21T16:38:20.118000+00:00", "time-expires": "2099-12-31T00:00:00+00:00" } } : }
4. OCIユーザーの作成とGROUP設定、Auth Token生成
Menu => Identity => Users => Create User で OCIユーザーを作成します。
作成したOCIユーザーをクリック => Groups で Administrator を付与します。
作成したOCIユーザーをクリック => Auth Tokens で Auth Token を生成します。
後から参照する事はできないので、テキストファイル等に保全しておきます。
5. DBMS_CLOUDパッケージで ADW に Credential を作成
下記マニュアルの手順を元に ADW に Credantial を作成します。
Import Data Using Oracle Data Pump Version 18.3 or Later
https://docs.oracle.com/en/cloud/paas/autonomous-data-warehouse-cloud/user/load-data.html#GUID-297FE3E6-A823-4F98-AD50-959ED96E6969
ADW に接続して DBMS_CLOUD.CREATE_CREDENTIALプロシージャを実行します。
credential_name には任意の文字列、username には上記 4. で作成したOCIユーザー名、
passwordには上記 4. で生成した Auth Token をセットします。
CONNECT ADMIN/xxxxxxxxxxxxx@yyyyyy_high BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'OCI_CLI_AYS_ADW', -- 任意の文字列 username => 'aysapi', -- OCIユーザー名 password => 'xxxxxxxxxxxxxxxxxxxx' -- 生成したAuth Token ); END; / PL/SQL procedure successfully completed.
6. インポート(impdp)の実行
impdpを実行してADWにデータをロードします。dumpfileパラメータには
3. で生成した Pre-authenticated URL を ,(カンマ)区切りで指定します。
impdp ADMIN/xxxxxxxxxxxxx@yyyyyy_high \ credential=OCI_CLI_AYS_ADW \ directory=data_pump_dir \ dumpfile=https://objectstorage.us-ashburn-1.oraclecloud.com/p/zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz/n/xxxxxxxx/b/yyyyyyyy-objs001/o/exp_soe01.dmp,\ https://objectstorage.us-ashburn-1.oraclecloud.com/p/zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz/n/xxxxxxxx/b/yyyyyyyy-objs001/o/exp_soe02.dmp,\ https://objectstorage.us-ashburn-1.oraclecloud.com/p/zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz/n/xxxxxxxx/b/yyyyyyyy-objs001/o/exp_soe03.dmp,\ https://objectstorage.us-ashburn-1.oraclecloud.com/p/zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz/n/xxxxxxxx/b/yyyyyyyy-objs001/o/exp_soe04.dmp \ parallel=2 \ partition_options=merge \ transform=segment_attributes:n \ exclude=cluster, indextype, materialized_view, materialized_view_log, materialized_zonemap, db_link \ logfile=impdp_schema_SOE.log
impdpの実行結果は以下の通りです。
Import: Release 18.0.0.0.0 - Production on Tue Jan 22 06:24:47 2019 Version 18.3.0.0.0 Copyright (c) 1982, 2018, Oracle and/or its affiliates. All rights reserved. Connected to: Oracle Database 18c Enterprise Edition Release 12.2.0.1.0 - 64bit Production Master table "ADMIN"."SYS_IMPORT_FULL_03" successfully loaded/unloaded : Processing object type SCHEMA_EXPORT/USER Processing object type SCHEMA_EXPORT/SYSTEM_GRANT : Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA . . imported "SOE"."ORDERS" 1.289 GB 14298586 rows . . imported "SOE"."ORDER_ITEMS" 2.236 GB 42511747 rows : Job "ADMIN"."SYS_IMPORT_FULL_03" completed with 1 error(s) at Tue Jan 22 06:42:27 2019 elapsed 0 00:17:25
データを確認してみると。。。
sqlplus /nolog connect SOE/yyyyyyyy@xxxxxx_high SELECT COUNT(*) FROM ORDERS; COUNT(*) ---------- 14298586
データがセットされてるで!彡(^)(^)
7. まとめ
上記3. の Pre-authenticated URL生成 がハマりポイントかも。つかワイはハマった彡(-)(-)
※(追記)2019年8月現在では Object Storage の Native な URL で impdp できるようになったため、PRA-URLの生成は不要です。
だがコレでexpdp/impdpでデータ移行して、ADWをバリバリ(死語)使うんや!彡(゚)(゚)