はじめに

みなさん、こんにちは。
Oracle Cloud Infrastructure検証チームです。

今回は、オンプレミス環境からOracle Cloud Infrastructure(OCI)へ移行を考えている方に向けて、 Autonomous AI Database(ADB)へのDatapumpを利用した移行を検証してみましたので、ご紹介したいと思います。

OCIへの移行を検証してみた その1 Datapumpの続編です!
こちらも併せて読んでいただけるとADBでの相違点がより分かりやすくなります!

 

 

 ADBの特徴

ADB(Autonomous AI Database)とは、Oracle Cloud上で使用できるデータベース管理を必要としないデータベースサービスです。
日本語に翻訳すると、自律型データベースとなります。

移行に際して、通常のデータベースと異なる点として以下が挙げられます。

ユーザー表領域を追加することが出来ない

 

ADBでは、システム表領域とユーザー表領域が自動的に作成されますが、ユーザーはCREATE TABLESPACE文を実行することが出来ません

そのため、ユーザー表領域としてDATA表領域またはDBFS_DATA表領域を使うことになります(基本はDATA表領域を使います。

SQL> SELECT TABLESPACE_NAME FROM DBA_TABLESPACES ORDER BY 1;

TABLESPACE_NAME
---------------
DATA           ★ユーザー表領域
DBFS_DATA      ★ADBのファイルシステムとして使われる表領域
SAMPLESCHEMA   ★サンプルスキーマが格納される読み取り専用表領域
SYSAUX         ★システム表領域
SYSTEM         ★システム表領域
TEMP           ★一時表領域
UNDOTBS1       ★UNDO表領域
UNDO_8         ★UNDO表領域

 

OS領域(ファイルシステムなど)を操作できない

 

ADBではデータベースサービスのみを提供しており、OS領域を操作することが出来ません。

そのため、ファイルシステム上にディレクトリを新規作成してディレクトリオブジェクトとして作成する、といった操作が出来ません。

それでは、Datapumpで使用するdumpファイルはどこに配置すればいいのでしょうか。それに対する解が次となります。

 

DatapumpでオブジェクトストレージのURLを直接指定可能

 

ADBでは、DatapumpのDUMPFILE句にてオブジェクトストレージ上のファイルURLを直接指定することが出来ます。

以下のような形でDUMPファイルURLを直接指定するイメージとなります。DIRECTORYとしてDATAPUMP_DIRを指定していますが、DATA_PUMP_DIRで使用しているディレクトリ配下にdumpファイルを配置する必要はありません。

C:\WORK>impdp <ユーザー名>@orcl schemas=<スキーマ名> DIRECTORY=DATA_PUMP_DIR ^
More? DUMPFILE=https://objectstorage.ap-tokyo-1.oraclecloud.com/<DUMPファイルのURL>

 

DBMS_CLOUDパッケージがデフォルトで導入されている

 

ADBでは、オブジェクト・ストレージのデータを操作するためのパッケージであるDBMS_CLOUDパッケージがデフォルトで導入されています。

これを使用することで、オブジェクトストレージやADBのディレクトリオブジェクト配下のファイルを操作することが出来ます

例えば、ADBのDATA_PUMP_DIR配下のファイルには何があるかをDBMS_CLOUD.LIST_FILESを使用して確認が出来ます。

SQL> SELECT * FROM DBMS_CLOUD.LIST_FILES('DATA_PUMP_DIR');

レコードが選択されませんでした。

ADBでDatapumpを使用するときは、オブジェクトストレージを使うことが想定されているんだね!

検証内容

今回検証した内容はこちらです。

  1. 19c環境でのexpdpの実行(オンプレミス)
  2. オブジェクトストレージへのDUMPファイルのアップロード
  3. 事前認証済リクエストの作成
  4. ADBへのdumpファイルのimpdpの実行

 

1.19c環境でのexpdpの実行(オンプレミス)

Oracle Database 19c環境にて、expdpコマンドを使用してdumpファイルを作成します。

まずは、dumpファイルの出力先を確認します。

SQL> SELECT OWNER,DIRECTORY_NAME,DIRECTORY_PATH FROM DBA_DIRECTORIES;

OWNER DIRECTORY_NAME DIRECTORY_PATH
----- -------------- --------------
SYS ORACLECLRDIR C:\app\Administrator\product\19.3.0\dbhome_1\bin\clr
SYS SDO_DIR_WORK
SYS SDO_DIR_ADMIN C:\app\Administrator\product\19.3.0\dbhome_1/md/admin
SYS XMLDIR C:\app\Administrator\product\19.3.0\dbhome_1/rdbms/xml
SYS XSDDIR C:\app\Administrator\product\19.3.0\dbhome_1/rdbms/xml/schema
SYS OPATCH_INST_DIR C:\app\Administrator\product\19.3.0\dbhome_1\OPatch
SYS ORACLE_OCM_CONFIG_DIR2 C:\app\Administrator\product\19.3.0\dbhome_1\ccr\state
SYS ORACLE_BASE C:\app\Administrator
SYS ORACLE_HOME C:\app\Administrator\product\19.3.0\dbhome_1
SYS ORACLE_OCM_CONFIG_DIR C:\app\Administrator\product\19.3.0\dbhome_1\ccr\state
SYS DATA_PUMP_DIR C:\app\Administrator\admin\orcl\dpdump/
SYS DBMS_OPTIM_LOGDIR C:\app\Administrator\product\19.3.0\dbhome_1/cfgtoollogs
SYS DBMS_OPTIM_ADMINDIR C:\app\Administrator\product\19.3.0\dbhome_1/rdbms/admin
SYS OPATCH_SCRIPT_DIR C:\app\Administrator\product\19.3.0\dbhome_1\QOpatch
SYS OPATCH_LOG_DIR C:\app\Administrator\product\19.3.0\dbhome_1\rdbms\log
SYS JAVA$JOX$CUJS$DIRECTORY$ C:\APP\ADMINISTRATOR\PRODUCT\19.3.0\DBHOME_1\JAVAVM\ADMIN\

16行が選択されました。

今回は、DATA_PUMP_DIRをdumpファイルの出力先として利用します。

次に、SCOTTスキーマを移行します。

SCOTTスキーマは表と索引を保有しています。

SQL> SELECT OBJECT_NAME,OBJECT_TYPE FROM USER_OBJECTS;

OBJECT_NAME OBJECT_TYPE
----------- -----------
DEPT        TABLE
PK_DEPT     INDEX
EMP         TABLE
PK_EMP      INDEX
BONUS       TABLE
SALGRADE    TABLE

6行が選択されました。

表と索引はUSERS表領域に作られています。

SQL> SELECT TABLE_NAME,TABLESPACE_NAME FROM USER_TABLES;

TABLE_NAME TABLESPACE_NAME
---------- ---------------
DEPT       USERS
EMP        USERS
BONUS      USERS
SALGRADE   USERS

SQL> SELECT INDEX_NAME,TABLESPACE_NAME FROM USER_INDEXES;

INDEX_NAME TABLESPACE_NAME
---------- ---------------
PK_DEPT    USERS
PK_EMP     USERS

今回はスキーマ全体を移行したいので、EXPDPはSYSTEMユーザーにて実行します。dumpファイル名はscott.dmpとします。
また、SCOTTスキーマだけを移行するため、オプションとしてschemas=scottとしています。

また、統計情報については今回は移行の対象外とするためにオプションとしてexclude=statisticsを設定しています。

C:\>expdp SYSTEM@ORCL directory=DATA_PUMP_DIR dumpfile=scott.dmp schemas=scott logfile=scott_exp.log exclude=statistics

Export: Release 19.0.0.0.0 - Production on 木 11月 16 15:18:39 2025
Version 19.27.0.0.0

Copyright (c) 1982, 2025, Oracle and/or its affiliates. All rights reserved.
パスワード:

接続先: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
"SYSTEM"."SYS_EXPORT_SCHEMA_01"を起動しています: SYSTEM/********@ORCL directory=DATA_PUMP_DIR dumpfile=scott.dmp logfile=scott_exp.log schemas=scott exclude=statistics
オブジェクト型SCHEMA_EXPORT/TABLE/TABLE_DATAの処理中です
オブジェクト型SCHEMA_EXPORT/USERの処理中です
オブジェクト型SCHEMA_EXPORT/SYSTEM_GRANTの処理中です
オブジェクト型SCHEMA_EXPORT/ROLE_GRANTの処理中です
オブジェクト型SCHEMA_EXPORT/DEFAULT_ROLEの処理中です
オブジェクト型SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMAの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/TABLEの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/COMMENTの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/INDEX/INDEXの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINTの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINTの処理中です
. . "SCOTT"."BONUS" 0 KB 0行がエクスポートされました
. . "SCOTT"."DEPT" 6.023 KB 4行がエクスポートされました
. . "SCOTT"."EMP" 8.695 KB 12行がエクスポートされました
. . "SCOTT"."SALGRADE" 5.953 KB 5行がエクスポートされました
マスター表"SYSTEM"."SYS_EXPORT_SCHEMA_01"は正常にロード/アンロードされました
******************************************************************************
SCOTT.SYS_EXPORT_SCHEMA_01に設定されたダンプ・ファイルは次のとおりです:
C:\APP\ADMINISTRATOR\ADMIN\ORCL\DPDUMP\SCOTT.DMP
ジョブ"SCOTT"."SYS_EXPORT_SCHEMA_01"が木 11月 16 15:19:40 2025 elapsed 0 00:00:47で正常に完了しました

無事正常にexpdpコマンドが完了しましたね。実際にOS上に出力されていることを確認しましょう。

C:\>dir C:\app\Administrator\admin\orcl\dpdump
ドライブ C のボリューム ラベルがありません。
ボリューム シリアル番号は B43C-E5E1 です

C:\app\Administrator\admin\orcl\dpdump のディレクトリ

2025/11/16 15:19 <DIR> .
2025/11/16 15:19 <DIR> ..
2025/11/16 15:19 401,408 SCOTT.DMP
2025/11/16 15:19 1,813 scott_exp.log
3 個のファイル 403,389 バイト
2 個のディレクトリ 31,093,538,816 バイトの空き領域

dumpファイルとしてscott.dmpファイルがきちんと出力されていますね。

このファイルを、OCI上のオブジェクトストレージへアップロードしてあげましょう。

 

2.オブジェクトストレージへのDUMPファイルのアップロード

dumpファイルのオブジェクトストレージへのアップロードには様々な方法があります。

今回は、「bucket-migration」というオブジェクトストレージにブラウザを利用してdumpファイルをアップロードしてみます。

オブジェクトストレージについては以下の記事で紹介していますので、是非ご覧ください。
OCI オブジェクト・ストレージとは

  1. 「オブジェクト」の項目から「オブジェクトのアップロード」を選択します。選択すると、オブジェクトのアップロード画面が出てきます。
  2. 「コンピュータからファイルを選択」の項目にて、dumpファイルを選択し、次へ進みます。
  3. ファイルの選択が完了したら、画面右下部の「オブジェクトのアップロード」を選択します。
  4. 無事にdumpファイル「SCOTT.DMP」がアップロード出来ていることを確認します。

 

3.事前認証済リクエストの作成

アップロードしたdumpファイルをADBがアクセス出来るようにするために、今回は事前認証済リクエストを利用します。

事前認証済みリクエストを利用すると、URLを利用するだけでアクセス認証不要でファイルへのアクセスが可能となります。

  1. dumpファイルのオプションから、「事前認証済リクエストの作成」を選択します。
  2. 事前認証済リクエスト・ターゲットは「バケット」、アクセス・タイプは「オブジェクトの読取りと書込みを許可」、有効期限は任意の時間帯を設定して「事前認証済リクエストの作成」を選択します。
  3. 事前認証済リクエストのURLが発行されるので、「コピー」を選択してURLを保存しておきます。

 

4.ADBへのdumpファイルのimpdpの実行

では、オブジェクトストレージにアップロードされたdumpファイルをADBに取り込んでいきましょう!

まずは、ADBからオブジェクトストレージ上にアップロードされたdumpファイルが見えるかを確認します。

C:\>sqlplus ADMIN@ORCL

SQL*Plus: Release 23.0.0.0.0 - Production on 日 11月 16 14:20:51 2025
Version 23.5.0.24.07

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

パスワードを入力してください:
最終正常ログイン時間: 日 11月 16 2025 14:04:52 +09:00


Oracle AI Database 26ai Enterprise Edition Release 23.26.0.1.0 - for Oracle Cloud and Engineered Systems
Version 23.26.0.1.0
に接続されました。
SQL> show user
ユーザーは"ADMIN"です。

SQL> select OBJECT_NAME,BYTES/1024 "BYTES(KB)" from DBMS_CLOUD.LIST_OBJECTS(NULL,'<事前認証済リクエストURL>'); 
OBJECT_NAM BYTES(KB)
---------- -----------
SCOTT.DMP  392.000

無事dumpファイルがあることが確認できましたね。

ではimpdpを実行していきましょう。
実行ユーザーはADBの管理者であるADMINユーザーで実行します。DIRECTORYはDATA_PUMP_DIRとします。インポートログはDATA_PUMP_DIR配下に出力されます。

C:\>impdp ADMIN@ORCL schemas=SCOTT DIRECTORY=DATA_PUMP_DIR ^
More? DUMPFILE=<事前認証済リクエストURL>/o/SCOTT.DMP LOGFILE=SCOTT_IMP.LOG

Import: Release 23.0.0.0.0 - for Oracle Cloud and Engineered Systems on 日 11月 16 16:51:21 2025
Version 23.5.0.24.07

Copyright (c) 1982, 2024, Oracle and/or its affiliates. All rights reserved.
パスワード:

接続先: Oracle AI Database 26ai Enterprise Edition Release 23.26.0.1.0 - for Oracle Cloud and Engineered Systems
マスター表"ADMIN"."SYS_IMPORT_SCHEMA_01"は正常にロード/アンロードされました
"ADMIN"."SYS_IMPORT_SCHEMA_01"を起動しています: ADMIN/********@ORCL schemas=SCOTT DIRECTORY=DATA_PUMP_DIR DUMPFILE=<事前認証済リクエストURL>/o/SCOTT.DMP LOGFILE=SCOTT_IMP.LOG
オブジェクト型SCHEMA_EXPORT/USERの処理中です
オブジェクト型SCHEMA_EXPORT/SYSTEM_GRANTの処理中です
オブジェクト型SCHEMA_EXPORT/ROLE_GRANTの処理中です
オブジェクト型SCHEMA_EXPORT/DEFAULT_ROLEの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/TABLEの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/TABLE_DATAの処理中です
. . "SCOTT"."BONUS" 0 KB 0行がインポートされました
. . "SCOTT"."DEPT" 6 KB 4行がインポートされました
. . "SCOTT"."EMP" 8.7 KB 12行がインポートされました
. . "SCOTT"."SALGRADE" 6 KB 5行がインポートされました
オブジェクト型SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINTの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINTの処理中です
ジョブ"ADMIN"."SYS_IMPORT_SCHEMA_01"が日 11月 16 07:51:34 2025 elapsed 0 00:00:06で正常に完了しました

問題なくインポートが出来ましたので、SCOTTユーザーのオブジェクトを確認してみましょう。

SQL> SELECT INDEX_NAME,TABLESPACE_NAME FROM USER_INDEXES;

INDEX_NAME TABLESPACE_NAME
---------- ---------------
PK_DEPT    DATA
PK_EMP     DATA

SQL> SELECT TABLE_NAME,TABLESPACE_NAME FROM USER_TABLES;

TABLE_NAME TABLESPACE_NAME
---------- ---------------
DEPT       DATA
EMP        DATA
SALGRADE   DATA
BONUS      DATA

impdpではremapオプションを使用していませんが、自動的にDATA表領域にオブジェクトが作られています。

 

自動的にオブジェクトの表領域はDATA表領域へ変換されるんだね!

さいごに

今回は ADBへのDatapumpを利用した移行検証を紹介いたしました。

ADBではオブジェクトストレージを直接指定出来たり表領域が自動変換されることをご理解頂けましたでしょうか?

最後までご覧いただきありがとうございました!

Oracle Cloudをご検討の際は弊社までお問い合わせください。

Oracle Cloudの課題、専門家が解決します


Oracle Cloudの相談する

豊富な実績で最適な解決策をご提供

 

投稿者プロフィール

技術チーム
技術チーム
DBひとりでできるもんを盛り上げるべく、技術チームが立ち上がり早8年。ひとりでできるもんと言いつつ、技術者が読んでプッとなるような、極めてピンポイントでマニアックな技術ネタを執筆しています!
最新技術情報や資格情報をチェックしたいアナタ!毎日遊びに来てください。きっとお役に立てます。