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-31640: unable to
open
dump
file
"https://swiftobjectstorage.eu-frankfurt-1.oraclecloud.com/v1/oci_core_emea/dumps/sample213.dmp"
for
read
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-31640: unable to
open
dump
file
"https://swiftobjectstorage.eu-frankfurt-1.oraclecloud.com/v1/oci_core_emea/dumps/sample213.dmp"
for
read
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
コメント
コメントを投稿