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 value
ORA-39000: bad dump file specification
ORA-27037: unable to obtain file status


ステップ 2: Object Store ODM ライブラリの有効化


通常、DBMS_CLOUDをインストールして設定した後は、インポートとエクスポートにObject Storageを使用する準備ができているはずです。しかし、インポートでは以下のようなエラーが発生します。

ORA-39001: invalid argument value
ORA-39000: bad dump file specification
ORA-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_HOME
Processing 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_on
rm -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_HOME
Processing 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.dmp
 
Import: Release 21.0.0.0.0 - Production on Mon Sep 13 07:55:41 2021
Version 21.3.0.0.0
Copyright (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 - Production
Master table "SYSTEM"."SYS_IMPORT_SCHEMA_01" successfully loaded/unloaded
Starting "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.dmp
Processing object type SCHEMA_EXPORT/USER
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/TABLESPACE_QUOTA
Processing object type SCHEMA_EXPORT/PASSWORD_HISTORY
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
. . imported "SAMPLE213"."SAMPLETABLE"                  5.062 KB       1 rows
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type SCHEMA_EXPORT/STATISTICS/MARKER
Job "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.dmp
 
Import: Release 19.0.0.0.0 - Production on Mon Sep 13 08:01:00 2021
Version 19.12.0.0.0
Copyright (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 - Production
Master table "SYSTEM"."SYS_IMPORT_SCHEMA_01" successfully loaded/unloaded
Starting "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.dmp
Processing object type SCHEMA_EXPORT/USER
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/TABLESPACE_QUOTA
Processing object type SCHEMA_EXPORT/PASSWORD_HISTORY
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
. . imported "SAMPLE1912"."SAMPLETABLE"                 5.054 KB       1 rows
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type SCHEMA_EXPORT/STATISTICS/MARKER
Job "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.dmp
 
Export: Release 21.0.0.0.0 - Production on Mon Sep 13 07:56:56 2021
Version 21.3.0.0.0
Copyright (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 - Production
Starting "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.dmp
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type SCHEMA_EXPORT/STATISTICS/MARKER
Processing object type SCHEMA_EXPORT/USER
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/TABLESPACE_QUOTA
Processing object type SCHEMA_EXPORT/PASSWORD_HISTORY
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/TABLE/TABLE
. . exported "SAMPLE213"."SAMPLETABLE"                  5.062 KB       1 rows
ORA-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.dmp
Job "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully completed at Mon Sep 13 07:57:35 2021 elapsed 0 00:00:36

21.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.dmp
 
Export: Release 19.0.0.0.0 - Production on Mon Sep 13 10:30:49 2021
Version 19.12.0.0.0
 
Copyright (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 - Production
ORA-39001: invalid argument value
ORA-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.dmp
 
Export: Release 21.0.0.0.0 - Production on Mon Sep 13 17:27:49 2021
Version 21.3.0.0.0
 
Copyright (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 - Production
UDE-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

コメント

このブログの人気の投稿

Oracle Database 19cサポート・タイムラインの重要な更新 (2024/11/20)

Oracle APEXのInteractive Gridで、Oracle Formsと比較して、重複行の検証を制御/通過させる方法 (2022/07/21)

Oracle APEX 24.1の一般提供の発表 (2024/06/17)