Oracle Database 21.3および19.12のObject Storageから直接データをインポートできます。 (2021/09/20)
Oracle Database 21.3および19.12のObject Storageから直接データをインポートできます。 (2021/09/20)
https://database-heartbeat.com/2021/09/20/imp-exp-oss/
はじめに
Object Storage との間でデータを直接エクスポートおよびインポートするには、Oracle Autonomous Database で導入された DBMS_CLOUD PL/SQL パッケージが必要です。DBMS_CLOUD は、Oracle Autonomous Database 以外のデータベースではバージョン 21c で利用可能になり、その後 19.9 にバックポートされました。
しかし、Data Pump ユーティリティーを使用して Object Storage との間で直接インポートおよびエクスポートを行うことは、当初考えられていたような小さな機能ではありません。開発にはより多くの時間と労力が必要でした。現在、バージョン21.3と19.12で、ほぼ実現しています。
非常に大きなデータベースをクラウド仮想マシン、ベアメタル、Exadata Cloud Serviceに移行する際、ローカルファイルシステムにデータベースとダンプファイル用の十分なスペースがない場合は特に困難でした。このような場合、以下のような回避策が必要でした。
- File Storage Serviceを使用して、DBシステムにNFSをマウント
- Storage Gatewayを使用して、NFSマウントポイントとしてObject Storageにアクセス
- s3fs-fuse を使用して Object Storage のバケットを NFS でマウント
バージョン21.3および19.12からは、これらの回避策は必要なくなりました。Data Pumpを使ってObject Storageから直接データをインポートできるようになりました。
環境について
- Oracle CloudのVM DB System上にOracle Databaseバージョン21.3を構築
- Oracle CloudのVM DB System上のOracle Databaseバージョン19.12を構築
- Object Storageのバケット
準備
Step1: DBMS_CLOUD PL/SQLパッケージのインストール
前述の通り、DBMS_CLOUDはデータベースバージョン19.9以上で利用できるようになりましたが、データベースのインストールには(まだ)含まれていません。で説明されている手順に従ってください。
- DBMS_CLOUDパッケージのセットアップと使用方法 (Doc ID 2748362.1)
DBMS_CLOUD パッケージのセットアップと使用方法 (Doc ID 2748362.1) に記載されている手順に従って、データベースで DBMS_CLOUD をセットアップして構成します。
LIST_OBJECTS 関数を使用して、構成を検証します。
ORA-39001: invalid argument valueORA-39000: bad dump file specificationORA-31640: unable to open dump file "https://swiftobjectstorage.eu-frankfurt-1.oraclecloud.com/v1/oci_core_emea/dumps/sample213.dmp" for readORA-27037: unable to obtain file statusステップ 2: Object Store ODM ライブラリの有効化
通常、DBMS_CLOUDをインストールして設定した後は、インポートとエクスポートにObject Storageを使用する準備ができているはずです。しかし、インポートでは以下のようなエラーが発生します。
ORA-39001: invalid argument valueORA-39000: bad dump file specificationORA-31640: unable to open dump file "https://swiftobjectstorage.eu-frankfurt-1.oraclecloud.com/v1/oci_core_emea/dumps/sample213.dmp" for readORA-27037: unable to obtain file status残念ながら、そこにはまだバグがあり、以下に説明するような回避策を使って修正する必要があります。
- OCI OBJECT STORAGEへのDATA PUMP EXPORT FAILED ORA-39001 ORA-39000 ORA-31641 (Doc ID 2806178.1)
ODMライブラリを有効にします。
[oracle@host213 ~]$ dbshut $ORACLE_HOMEProcessing Database instance "CDB213": log file /u01/app/oracle/homes/OraDB21Home1/rdbms/log/shutdown.log[oracle@host213 ~]$ cd $ORACLE_HOME/rdbms/lib[oracle@host213 lib]$ make -f ins_rdbms.mk opc_onrm -f /u01/app/oracle/product/21.0.0/dbhome_1/rdbms/lib/odm/libopcodm.so; \ cp /u01/app/oracle/product/21.0.0/dbhome_1/lib/libopcodm.so /u01/app/oracle/product/21.0.0/dbhome_1/rdbms/lib/odm/libopcodm.so[oracle@host213 lib]$ dbstart $ORACLE_HOMEProcessing Database instance "CDB213": log file /u01/app/oracle/homes/OraDB21Home1/rdbms/log/startup.logデータベースのアラートログを確認してください。
-- database version 21.3[oracle@host213 ~]$ cd /u01/app/oracle/diag/rdbms/cdb213_fra18w/CDB213/trace[oracle@host213 trace]$ grep -i "ODM Library Version" alert_CDB213.log...Oracle instance running with ODM in SGA: Object Store ODM Library Version 7.0-- database version 19.12[oracle@host1912 ~]$ cd /u01/app/oracle/diag/rdbms/cdb1912_fra2cm/CDB1912/trace/[oracle@host1912 trace]$ grep -i "ODM Library Version" alert_CDB1912.log...Oracle instance running with ODM: Object Store ODM Library Version 6.0ご存知の通り、21.3のODMライブラリはバージョン7で、19.12のODMライブラリはバージョン6です。これは、リリースごとにライブラリのバージョンが異なるため、問題ありません。
オブジェクトストレージからのインポート
ステップ3: Object Storageから直接データをインポート
さて、いよいよ正念場です。
バージョン21.3でインポート
[oracle@host213 ~]$ export TNS_ADMIN=/u01/app/oracle/homes/OraDB21Home1/network/admin/[oracle@host213 ~]$ impdp SYSTEM@PDB213 credential=OSS_CRED directory=DATA_PUMP_DIR schemas=sample213 dumpfile=https://objectstorage.eu-frankfurt-1.oraclecloud.com/n/oci_core_emea/b/dumps/o/sample213.dmpImport: Release 21.0.0.0.0 - Production on Mon Sep 13 07:55:41 2021Version 21.3.0.0.0Copyright (c) 1982, 2021, Oracle and/or its affiliates. All rights reserved.Connected to: Oracle Database 21c EE Extreme Perf Release 21.0.0.0.0 - ProductionMaster table "SYSTEM"."SYS_IMPORT_SCHEMA_01" successfully loaded/unloadedStarting "SYSTEM"."SYS_IMPORT_SCHEMA_01": SYSTEM/********@PDB213 credential=OSS_CRED directory=DATA_PUMP_DIR schemas=sample213 dumpfile=https://objectstorage.eu-frankfurt-1.oraclecloud.com/n/oci_core_emea/b/dumps/o/sample213.dmpProcessing object type SCHEMA_EXPORT/USERProcessing object type SCHEMA_EXPORT/DEFAULT_ROLEProcessing object type SCHEMA_EXPORT/TABLESPACE_QUOTAProcessing object type SCHEMA_EXPORT/PASSWORD_HISTORYProcessing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMAProcessing object type SCHEMA_EXPORT/TABLE/TABLEProcessing object type SCHEMA_EXPORT/TABLE/TABLE_DATA. . imported "SAMPLE213"."SAMPLETABLE" 5.062 KB 1 rowsProcessing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICSProcessing object type SCHEMA_EXPORT/STATISTICS/MARKERJob "SYSTEM"."SYS_IMPORT_SCHEMA_01" successfully completed at Mon Sep 13 07:56:14 2021 elapsed 0 00:00:30バージョン19.12でインポート
[oracle@host1912 ~]$ impdp SYSTEM@PDB1912 credential=OSS_CRED directory=DATA_PUMP_DIR schemas=sample1912 dumpfile=https://objectstorage.eu-frankfurt-1.oraclecloud.com/n/oci_core_emea/b/dumps/o/sample1912.dmpImport: Release 19.0.0.0.0 - Production on Mon Sep 13 08:01:00 2021Version 19.12.0.0.0Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.Connected to: Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - ProductionMaster table "SYSTEM"."SYS_IMPORT_SCHEMA_01" successfully loaded/unloadedStarting "SYSTEM"."SYS_IMPORT_SCHEMA_01": SYSTEM/********@PDB1912 credential=OSS_CRED directory=DATA_PUMP_DIR schemas=sample1912 dumpfile=https://objectstorage.eu-frankfurt-1.oraclecloud.com/n/oci_core_emea/b/dumps/o/sample1912.dmpProcessing object type SCHEMA_EXPORT/USERProcessing object type SCHEMA_EXPORT/DEFAULT_ROLEProcessing object type SCHEMA_EXPORT/TABLESPACE_QUOTAProcessing object type SCHEMA_EXPORT/PASSWORD_HISTORYProcessing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMAProcessing object type SCHEMA_EXPORT/TABLE/TABLEProcessing object type SCHEMA_EXPORT/TABLE/TABLE_DATA. . imported "SAMPLE1912"."SAMPLETABLE" 5.054 KB 1 rowsProcessing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICSProcessing object type SCHEMA_EXPORT/STATISTICS/MARKERJob "SYSTEM"."SYS_IMPORT_SCHEMA_01" successfully completed at Mon Sep 13 08:01:10 2021 elapsed 0 00:00:09いいですねー。Object Storageからのインポートは、21.3と19.12の両方のバージョンで正常に動作しています。
Object Storageへのエクスポート
ステップ4: データをObject Storageに直接エクスポート
バージョン21.3でのエクスポート
[oracle@host213 ~]$ export TNS_ADMIN=/u01/app/oracle/homes/OraDB21Home1/network/admin/[oracle@host213 ~]$ expdp SYSTEM@PDB213 credential=OSS_CRED directory=DATA_PUMP_DIR schemas=sample213 dumpfile=https://objectstorage.eu-frankfurt-1.oraclecloud.com/n/oci_core_emea/b/dumps/o/exp_sample213.dmpExport: Release 21.0.0.0.0 - Production on Mon Sep 13 07:56:56 2021Version 21.3.0.0.0Copyright (c) 1982, 2021, Oracle and/or its affiliates. All rights reserved.Connected to: Oracle Database 21c EE Extreme Perf Release 21.0.0.0.0 - ProductionStarting "SYSTEM"."SYS_EXPORT_SCHEMA_01": SYSTEM/********@PDB213 credential=OSS_CRED directory=DATA_PUMP_DIR schemas=sample213 dumpfile=https://objectstorage.eu-frankfurt-1.oraclecloud.com/n/oci_core_emea/b/dumps/o/exp_sample213.dmpProcessing object type SCHEMA_EXPORT/TABLE/TABLE_DATAProcessing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICSProcessing object type SCHEMA_EXPORT/STATISTICS/MARKERProcessing object type SCHEMA_EXPORT/USERProcessing object type SCHEMA_EXPORT/DEFAULT_ROLEProcessing object type SCHEMA_EXPORT/TABLESPACE_QUOTAProcessing object type SCHEMA_EXPORT/PASSWORD_HISTORYProcessing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMAProcessing object type SCHEMA_EXPORT/TABLE/TABLE. . exported "SAMPLE213"."SAMPLETABLE" 5.062 KB 1 rowsORA-39173: Encrypted data has been stored unencrypted in dump file set.Master table "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded******************************************************************************Dump file set for SYSTEM.SYS_EXPORT_SCHEMA_01 is: https://swiftobjectstorage.eu-frankfurt-1.oraclecloud.com/v1/oci_core_emea/dumps/exp_sample213.dmpJob "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully completed at Mon Sep 13 07:57:35 2021 elapsed 0 00:00:3621.3のObject Storageに直接エクスポートしても問題ありません。
19.12クライアントを使用してバージョン19.12でエクスポートしました。
[oracle@host1912 ~]$ expdp SYSTEM@PDB1912 credential=OSS_CRED directory=DATA_PUMP_DIR schemas=sample1912 dumpfile=https://objectstorage.eu-frankfurt-1.oraclecloud.com/n/oci_core_emea/b/dumps/o/exp_sample1912.dmpExport: Release 19.0.0.0.0 - Production on Mon Sep 13 10:30:49 2021Version 19.12.0.0.0Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.Connected to: Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - ProductionORA-39001: invalid argument valueORA-39208: Parameter KU$_FILE_TYPE_URIDUMP_FILE is invalid for EXPORT jobs.また、代わりに21.3クライアントを使用した場合
[oracle@host213 ~]$ expdp SYSTEM@PDB1912 credential=OSS_CRED directory=DATA_PUMP_DIR schemas=sample1912 dumpfile=https://swiftobjectstorage.eu-frankfurt-1.oraclecloud.com/v1/oci_core_emea/dumps/exp_sample1912.dmpExport: Release 21.0.0.0.0 - Production on Mon Sep 13 17:27:49 2021Version 21.3.0.0.0Copyright (c) 1982, 2021, Oracle and/or its affiliates. All rights reserved.Connected to: Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - ProductionUDE-00023: parameter credential is incompatible with database version 19.12.0.0.0そのため、19.12ではObject Storageへの直接のエクスポートはサポートされていません(本日現在)。もう少し作業を進める必要があります。期待していてください。
Oracle Autonomous Database
Autonomous DatabaseからObject Storageに直接データをエクスポートするには、クレデンシャル・パラメータを提供する21.3クライアントが必要です。
[oracle@host213 ~]$ expdp userid=ADMIN@adbpublic_high credential=OSS_CRED2 schemas=sampleadb directory=DATA_PUMP_DIR dumpfile=https://swiftobjectstorage.eu-frankfurt-1.oraclecloud.com/v1/oci_core_emea/dumps/exp_sampleadb.dmpインポートのためのクレデンシャルパラメータは、18cですでに導入されていました。Object Storageからの直接インポートは、最初のAutonomous Databaseバージョン18cですでに可能でした。
まとめ
Object Storage からの直接インポートにより、データベースの移行が大幅に簡素化されます。また、Object Storageは、Autonomous Database、Database Cloud、オンプレミスを問わず、すべてのOracle Databaseのダンプファイルをアーカイブするための費用対効果の高いストレージを提供します。
Autonomous Database
- バージョン18c以降、Object Storageからの直接インポートがサポートされています。
- また、Object Storageへの直接エクスポートもサポートされています。Expdpクライアントのバージョン21.3が必要です。
非Autonomous Database バージョン21.3
- Object Storageからの直接インポートがサポートされています。
- また、Object Storageへの直接エクスポートもサポートされています。
Autonomous Database バージョン19.12
- Object Storageからの直接インポートがサポートされています。
- Object Storageへの直接エクスポートはまだサポートされていません。最初にローカルファイルシステムにエクスポートしてから、OCI CLIなどを使用してダンプファイルをObject Storageにアップロードする必要があります。
Further Reading


コメント
コメントを投稿