Oracle Database@Azure ~ Autonomous Database で Datapump を使う

今回の記事では Oracle Database@Azure の Autonomous Database(ADB) で Datapump を使い、データのエクスポート、インポートを行います。

ADBからエクスポートしたダンプファイルを Azure の BLOBストレージ経由で取り出してみます。

Oracle Datapumpとは

Oracle Databaseのデータやメタデータを高速に移動するためのツールです。主にデータベース間の移行や論理バックアップに使用されます。

エクスポートを実行すると、Oracleデータベースが稼働するサーバー上の指定のディレクトリにダンプファイルが作成されます。データをインポートするには、サーバー上の特定のディレクトリにダンプファイルを配置してインポートを実行します。

ADB におけるエクスポート・インポート

まずは ADB でエクスポート、インポートを実行する前に、Datapumpで実行されるディレクトリを確認します。デフォルトで用意される DATA_PUMP_DIRディレクトリ のパスを確認します。

テスト用のデータベース db201 に、デフォルトで作成されるADMINユーザーでログインして確認します。

$ sqlplus admin@db201

SQL*Plus: Release 23.0.0.0.0 - Production on Sun Sep 28 16:06:29 2025
Version 23.8.0.25.04

Copyright (c) 1982, 2025, Oracle.  All rights reserved.

Enter password:
Last Successful login time: Sun Sep 28 2025 15:26:34 +09:00

Connected to:
Oracle Database 23ai Enterprise Edition Release 23.0.0.0.0 - for Oracle Cloud and Engineered Systems
Version 23.10.0.25.10

SQL> select DIRECTORY_NAME,DIRECTORY_PATH from dba_directories where directory_name = 'DATA_PUMP_DIR';

DIRECTORY_NAME       DIRECTORY_PATH
-------------------- ----------------------------------------------------------------------------------------------------
DATA_PUMP_DIR        /u03/dbfs/390000AAAABBBBCCCCDDDDEEEE123456/data/dpdump

SQL>

今回利用している環境では 「/u03/dbfs/390000AAAABBBBCCCCDDDDEEEE123456/data/dpdump」と表示されました。

※「390000AAAABBBBCCCCDDDDEEEE123456」の部分はダミーです。実際には各環境により異なります。

実際にexpdpコマンドでエクスポートを実行します。

$ expdp admin@db201 schemas=user01 dumpfile=user01.dmp

Export: Release 23.0.0.0.0 - Production on Sun Sep 28 00:42:48 2025
Version 23.8.0.25.04

Copyright (c) 1982, 2025, Oracle and/or its affiliates.  All rights reserved.
Password:

Connected to: Oracle Database 23ai Enterprise Edition Release 23.0.0.0.0 - for Oracle Cloud and Engineered Systems
Starting "ADMIN"."SYS_EXPORT_SCHEMA_01":  admin/********@db201 schemas=user01 dumpfile=user01.dmp
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type SCHEMA_EXPORT/USER
Processing object type SCHEMA_EXPORT/ROLE_GRANT
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/LOGREP
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/POST_SCHEMA/PROCACT_SCHEMA/LBAC_EXP
. . exported "USER01"."TBL01"                              5.6 KB       4 rows
ORA-39173: Encrypted data has been stored unencrypted in dump file set.
Master table "ADMIN"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded
******************************************************************************
Dump file set for ADMIN.SYS_EXPORT_SCHEMA_01 is:
  /u03/dbfs/390000AAAABBBBCCCCDDDDEEEE123456/data/dpdump/user01.dmp
Job "ADMIN"."SYS_EXPORT_SCHEMA_01" successfully completed at Sat Sep 27 15:44:32 2025 elapsed 0 00:01:08

エクスポートが正常に完了し、ダンプファイルが「/u03/dbfs/390000AAAABBBBCCCCDDDDEEEE123456/data/dpdump/user01.dmp」に作成されたことがわかります。

続いて、このダンプファイルを使ってユーザーuser02にデータをインポートします。

$ impdp admin@db201 dumpfile=user01.dmp remap_schema=user01:user02

Import: Release 23.0.0.0.0 - Production on Sun Sep 28 02:11:25 2025
Version 23.8.0.25.04

Copyright (c) 1982, 2025, Oracle and/or its affiliates.  All rights reserved.
Password:

Connected to: Oracle Database 23ai Enterprise Edition Release 23.0.0.0.0 - for Oracle Cloud and Engineered Systems
Master table "ADMIN"."SYS_IMPORT_FULL_01" successfully loaded/unloaded
Starting "ADMIN"."SYS_IMPORT_FULL_01":  admin/********@db201 dumpfile=user01.dmp remap_schema=user01:user02
Processing object type SCHEMA_EXPORT/USER
Processing object type SCHEMA_EXPORT/ROLE_GRANT
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/LOGREP
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
. . imported "USER02"."TBL01"                              5.6 KB       4 rows
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type SCHEMA_EXPORT/POST_SCHEMA/PROCACT_SCHEMA/LBAC_EXP
Job "ADMIN"."SYS_IMPORT_FULL_01" successfully completed at Sat Sep 27 17:11:40 2025 elapsed 0 00:00:09

正常にインポートできました。この操作はオンプレミスのOracleデータベースと変わりありません。

データベース内部でエクスポート・インポートを行う分には問題ありませんが、他のデータベースへデータを移行したい場合はどうすればいいのでしょうか。

オンプレミス環境であればサーバーからダンプファイルをダウンロードしてほかのサーバにアップロードすればインポート可能です。

※ ADB はOracleデータベースのマネージドサービスなので、OSのファイルにアクセスすることはできません。

ダンプファイルを外部に持ち出す

ADBでダンプファイルを外部に持ち出すには、ADBでサポートされているオブジェクトストレージにダンプファイルを出力します。以下のオブジェクトストレージがサポートされています。

  • Oracle Cloud Infrastructure Object Storage
  • Oracle Cloud Infrastructure Object Storage Classic
  • Azure Blob StorageまたはAzure Data Lake Storage
  • Amazon S3

今回は、Azure上のデータベースなので Azure BLOB Storage にダンプファイルを出力します。

ストレージアカウント作成

Azure BLOB Strageを利用するためにストレージアカウントを作成します。

テスト用にストレージアカウントを作成します。

項目 指定値
ストレージアカウント名 (ストレージアカウント名)
リージョン (ADBと同じリージョン)
優先ストレージの種類 Azure BLOB Storage または Azure Data Lake Storage Gen 2
パフォーマンス Standard
冗長性 ローカル冗長ストレージ(LRS)

基本情報以外のタブはそのままでストーレジアカウントを作成します。

コンテナーの作成

実際にファイルを格納するコンテナーを作成します。 作成したストレージアカウント に コンテナー adb-dumpfiles を作成します。

資格情報作成

コンテナーにアクセスするために必要な資格情報を作成します。

アクセスキーの確認

ストレージアカウントのセキュリティーとネットワークからアクセスキーを確認します。

資格情報作成

データベースにログインして dbms_cloud.create_credential プロシージャで資格情報を作成します。 exec dbms_cloud.create_credential('資格情報名','ストレージアカウント名','(アクセスキー)');

SQL> exec dbms_cloud.create_credential('BLOBCRED','(ストレージアカウント名)','(アクセスキー)');

PL/SQL procedure successfully completed.
SQL> 

BLOB ストレージへエクスポート

コンテナーのURL確認

コンテナーのプロパティからURLを確認します。

エクスポート

作成した資格情報とコンテナーURLを指定して expdpを実行します。 dumpfileに「コンテナURL/ファイル名.dmp」と指定します。

$ expdp admin@db201_medium schemas=user02 dumpfile=https://xxxxxx.xxxx.xxxx.xxxxxxxxx.xxx/yyyyy-yyyy/user02.dmp
credential=BLOBCRED

Export: Release 23.0.0.0.0 - Production on Sun Sep 28 17:21:46 2025
Version 23.8.0.25.04

Copyright (c) 1982, 2025, Oracle and/or its affiliates.  All rights reserved.
Password:

Connected to: Oracle Database 23ai Enterprise Edition Release 23.0.0.0.0 - for Oracle Cloud and Engineered Systems
Starting "ADMIN"."SYS_EXPORT_SCHEMA_01":  admin/********@db201_medium schemas=user02 dumpfile=https://xxxxxx.xxxx.xxxx.xxxxxxxxx.xxx/yyyyy-yyyy/user02.dmp credential=BLOBCRED
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type SCHEMA_EXPORT/USER
Processing object type SCHEMA_EXPORT/ROLE_GRANT
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/LOGREP
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/POST_SCHEMA/PROCACT_SCHEMA/LBAC_EXP
. . exported "USER02"."TBL01"                              5.6 KB       4 rows
ORA-39173: Encrypted data has been stored unencrypted in dump file set.
Master table "ADMIN"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded
******************************************************************************
Dump file set for ADMIN.SYS_EXPORT_SCHEMA_01 is:
  https://xxxxxx.xxxx.xxxx.xxxxxxxxx.xxx/yyyyy-yyyy/user02.dmp
Job "ADMIN"."SYS_EXPORT_SCHEMA_01" successfully completed at Sun Sep 28 08:22:39 2025 elapsed 0 00:00:46

expdp コマンドが完了したのでコンテナーにファイルuser02.dmpができていることを確認します。

外部からコンテナーにファイルをアップロードすればインポートも可能です。

おわりに

ADBはOSにアクセスしてファイル操作ができない不便な面もありますが、BLOBストレージを活用することでオンプレミスと同様にエクスポート・インポートできます。

今回はその方法として、Azure BLOB Storage にエクスポートする手順を紹介しました。

執筆担当者プロフィール
三条 光暢

三条 光暢(日本ビジネスシステムズ株式会社)

Oracle、PostgreSQLを中心に各種データベースの設計・構築・運用を携わっています。

担当記事一覧