この記事は最終更新から5年以上経過しています。内容が古くなっている可能性があります。
前回記事 でOracle Autonomous Transaction Processing (以下 ATP)の作成を紹介しましたので、本記事では、オンプレミス環境から ATP へスキーマを移行する手順を紹介したいと思います
紹介する手順は、こちらのマニュアル の手順を実施し、Object Storage や Auth Token に関する情報を補足しております
12.2.0.1 以前の Data Pump Client では、credential パラメータが存在していないため、default_credential をセットする手順が含まれます
今回は macOS 上にインストールした Instant Client 18.1.0.0.0 を使用しましたが、 credential パラメータが利用できましたので、default_credential をセットする手順は実施しておりません
今回は macOS 上にインストールした Instant Client 18.1.0.0.0 を使用しましたが、 credential パラメータが利用できましたので、default_credential をセットする手順は実施しておりません
手順
- Oracle DataPump Export を用いて、スキーマをエクスポートする
こちら に記載されているのですが、 Oracle DataPump Export では、スキーマ・モードを使用することが推奨されています
下記は、コマンド例です
1$ expdp scott/tiger@ORCLPDB1 directory=DUMP_DIR schemas=SCOTT dumpfile=scott.dmp - Object Storage にバケットを作成し、ダンプファイルをアップロードする
ここでは、 STANDARD を選択してください
- Auth Token を作成する
ここで作成したトークンは、2度と表示することはできないため、厳重に保管をお願いします - ATP から Object Storage へアクセスできるように、認証情報を登録します
1234567891011SQL> SET DEFINE OFFSQL> BEGIN2 DBMS_CLOUD.CREATE_CREDENTIAL(3 credential_name => 'AUTH_TOKEN_CREDENTIAL',4 username => 'foo@example.org',5 password => '<<auth token>>'6 );7 END;8 /PL/SQLプロシージャが正常に完了しました。 - インポートするスキーマ・ユーザを作成しておきます
1234567SQL> CREATE USER SCOTT IDENTIFIED BY TigerTiger123;ユーザーが作成されました。SQL> GRANT CONNECT,RESOURCE,UNLIMITED TABLESPACE TO SCOTT;権限付与が成功しました。
パスワードは、大小英文字、12 文字以上、数字が入っていないといけないため、tiger
で作成することはできませんでした - Oracle DataPump Import を用いて、インポートを行います
12345678910111213141516171819202122232425262728293031$ impdp admin/<<password>>@db201906200945_high \directory=data_pump_dir \credential=AUTH_TOKEN_CREDENTIAL \dumpfile= https://swiftobjectstorage.ap-tokyo-1.oraclecloud.com/v1/smartstyle/datapump/scott.dmp \parallel=1 \transform=segment_attributes:n \transform=dwcs_cvt_iots:y transform=constraint_use_default_index:y \exclude=cluster, db_linkImport: Release 18.0.0.0.0 - Production on 金 6月 28 10:49:17 2019Version 18.1.0.0.0Copyright (c) 1982, 2018, Oracle and/or its affiliates. All rights reserved.接続先: Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Productionマスター表"ADMIN"."SYS_IMPORT_FULL_01"は正常にロード/アンロードされました"ADMIN"."SYS_IMPORT_FULL_01"を起動しています: admin/********@db201906200945_high directory=data_pump_dir credential=AUTH_TOKEN_CREDENTIAL dumpfile=https://swiftobjectstorage.ap-tokyo-1.oraclecloud.com/v1/smartstyle/datapump/scott.dmp parallel=1 transform=segment_attributes:n transform=dwcs_cvt_iots:y transform=constraint_use_default_index:y exclude=cluster, db_linkオブジェクト型SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMAの処理中ですオブジェクト型SCHEMA_EXPORT/TABLE/TABLEの処理中ですオブジェクト型SCHEMA_EXPORT/TABLE/TABLE_DATAの処理中です. . "SCOTT"."BONUS" 0 KB 0行がインポートされました. . "SCOTT"."DEPT" 6.023 KB 4行がインポートされました. . "SCOTT"."EMP" 8.695 KB 12行がインポートされました. . "SCOTT"."SALGRADE" 5.953 KB 5行がインポートされましたオブジェクト型SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINTの処理中ですオブジェクト型SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICSの処理中ですオブジェクト型SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINTの処理中ですオブジェクト型SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICSの処理中ですオブジェクト型SCHEMA_EXPORT/STATISTICS/MARKERの処理中ですジョブ"ADMIN"."SYS_IMPORT_FULL_01"が金 6月 28 02:08:10 2019 elapsed 0 00:01:27で正常に完了しました
こちら に記載されている下記情報がポイントとなりますFor the best import performance use the HIGH database service for your import connection and set the PARALLEL parameter to the number of CPUs in your Autonomous Transaction Processing as shown in the example.要は、接続は HIGH を使用し、 PARALLEL パラメータは CPU 数に合わせるのが良いようです
- 確認してみます
1234567891011121314151617181920212223242526272829303132333435363738$ sqlplus scott/TigerTiger123@db201906200945_tpSQL*Plus: Release 18.0.0.0.0 Production on 金 6月 28 11:09:50 2019Version 18.1.0.0.0Copyright (c) 1982, 2018, Oracle. All rights reserved.最終正常ログイン時間: 金 6月 28 2019 10:56:48 +09:00Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - ProductionVersion 18.4.0.0.0に接続されました。SQL> SELECT TABLE_NAME FROM USER_TABLES;TABLE_NAME--------------------------------------------------------------------------------EMPSALGRADEDEPTBONUSSQL> SELECT * FROM EMP WHERE ROWNUM <= 10;EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO---------- ---------- --------- ---------- -------- ---------- ---------- ----------7369 SMITH CLERK 7902 80-12-17 800 207499 ALLEN SALESMAN 7698 81-02-20 1600 300 307521 WARD SALESMAN 7698 81-02-22 1250 500 307566 JONES MANAGER 7839 81-04-02 2975 207654 MARTIN SALESMAN 7698 81-09-28 1250 1400 307698 BLAKE MANAGER 7839 81-05-01 2850 307782 CLARK MANAGER 7839 81-06-09 2450 107839 KING PRESIDENT 81-11-17 5000 107844 TURNER SALESMAN 7698 81-09-08 1500 0 307900 JAMES CLERK 7698 81-12-03 950 3010行が選択されました。
まとめ
ATP はマネージド・サービスであるため、インスタンスに SSH 等でログインすることはできません
そのため、Object Storage を中継する必要があるなど、少し手順が多いのが難点なところでしょうか