Oracle Database@AzureのADBへBlob Storageを使ってData Pumpで移行してみた

## はじめに
本記事では、Oracle Database@AzureのOracle Autonomous Database (ADB)へ、Oracle Data Pumpを使用してデータ移行を行う方法を紹介します。

今回利用するADBの環境は、以下の記事と同様の手順で作成しています。

https://qiita.com/yunagash/items/4e17c84c8af4335f8465

## 今回構成するアーキテクチャ
以下の図のように、Blob Storageにダンプファイルをアップロードし、Blob storageからOracle Database@Azure上のADBへダンプファイルを直接インポートしていきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/281fe728-a3c4-4a9f-a999-ae3aa62c0a38.png)

## 事前準備
### ①エクスポート済のダンプファイルの準備
事前準備として、まずは手元のPCにエクスポート済のダンプ・ファイルを用意します。
今回は、こちらのリンクの「はじめに」の章にある、以下の4つのダンプファイルを自身のPCにダウンロードしておきます。

https://oracle-japan.github.io/ocitutorials/adb/adb303-datapump/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/f0bddd5b-e366-4c0f-9caf-e35e003e7e14.png)

### ②踏み台サーバーからDatabase Actionsに接続できるようにする
以下の記事の環境が準備できている必要があります。
踏み台サーバーを構築して、RDP接続によりDatabase Actionsに接続できるようにしておきましょう。

https://qiita.com/yunagash/items/27001de1a602a59d9225

### ③踏み台サーバーからクライアントツールでADBに接続できるようにする
BaseDBやExaDB-XSなどと比較して、ADBはOSに直接SSH接続できないので、ADBにアクセスするための準備をしていきます。
#### ③-1. Oracle Instant Client をダウンロードする
まずは、踏み台サーバーにRDP接続をします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/78b6b015-2996-4e42-95b9-20c5339bf867.png)

踏み台サーバーから、[Oracle Instant Client ダウンロードページ](https://qiita.com/yunagash/items/899b05803aae4103c042)にアクセスして、最新バージョンのBasic Light Packageをダウンロードしていきます。
今回の例ですと、Version 23.7.0.25.01 > Base - one of these packages is required > Basic Light PackageのZipファイル (instantclient-basiclite-windows.x64-23.7.0.25.01)をダウンロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/1a6f0643-648e-4618-abc1-31de9285b1aa.png)

その後、Zipファイルを任意のフォルダに展開しておきます。
今回は、以下のように展開しています。
```:例
「C:\Users\ADB\Downloads\instantclient-basiclite-windows.x64-23.7.0.25.01
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/2e1a09e0-9705-41a8-b51f-fa037efdce9a.png)

また今回はData Pumpを利用するので、追加でTools Packageもダウンロードしておきます。
今回の例ですと、Version 23.7.0.25.01 > Tools - optional packages > Tools PackageのZipファイル (instantclient-tools-windows.x64-23.7.0.25.01)をダウンロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/6397aad3-b67f-47e8-be43-6e5134f81af3.png)
こちらのZipファイルも展開して、Toolsのinstantclientに入っているファイルをBasic Lightのinstantclientのフォルダの中にコピーします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/3452e7d0-b050-42e7-93d7-e07c4b5a6874.png)

:::note info
**言語設定に関して**
Windowsサーバーはデフォルトで英語になっているので、日本語が良い方は「Setting > Time & Language > Language & region」から、「Add a language」で日本語を追加して設定して、再起動すると日本語表示になります。
本記事でもここからは日本語設定で解説していきます。
:::
#### ③-2. ADBからをWalletをダウンロードする
踏み台サーバー上で、OCIコンソールのADBの画面を開き、「**データベース接続**」をクリックし、「**インスタンスウォレット**」を選択して、「**ウォレットのダウンロード**」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/38b66c13-e36d-429d-be9d-9f4074a3c164.png)

任意のパスワードを入力して、ダウンロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/28d3658a-77cb-4453-8c9f-2dabba834cb5.png)

その後、Zipファイルを任意のフォルダに展開しておきます。
今回は、以下のように展開しています。
```:例
C:\Users\ADB\Downloads\Wallet_OracleADB
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/165e82c4-360f-41d7-9390-0acbc9fecf10.png)

#### ③-3. Walletフォルダ内部のsqlnet.ora 設定手順
Walletをダウンロードした直後は、「**sqlnet.ora**」に含まれるパスが相対参照 (?/network/admin)になっており、Instant Client環境では無効のパスです。
なので、まずはコマンドプロンプトでcdコマンドを使い、sqlnet.oraがあるフォルダまで移動し、以下のコマンドを実行して、sqlnet.oraの中身をメモ帳を使って書き換えていきます。
```sqlnet.oraの中身をメモ帳で開く
notepad C:\Users\ADB\Downloads\Wallet_OracleADB\sqlnet.ora
```
sqlnet.oraの初期状態では、以下のように記載されています。この状態では、ADBに接続することはできません。
```✖ デフォルトのsqlnet.oraの中身
WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="?/network/admin")))
SSL_SERVER_DN_MATCH = no
```
なので、以下のようにsqlnet.oraの中身を書き換えてください。
DIRECTORYには、Walletファイルが格納されているフォルダの絶対パスを指定してください。
今回、私の場合だと「C:/Users/ADB/Downloads/Wallet_OracleADB」のパスになっています。
```〇 書き換え後のsqlnet.oraの中身
WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY = C:/Users/ADB/Downloads/Wallet_OracleADB)))
SSL_SERVER_DN_MATCH = yes
```

#### ③-4. Windowsで環境変数の設定をする
踏み台サーバー上で、スタートボタン横の検索窓に、「**システムの詳細**」と入力して、「**システムの詳細設定の表示**」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/e920ffba-f152-415c-a94c-1d52736f1e37.png)

「**環境変数**」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/5eebf77b-2b7d-4a28-99f7-9205860ef012.png)

「**ユーザー環境変数**」欄の中にある「**Path**」を選択し、「**編集**」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/433b11bd-48e4-4fa1-a7db-c16161c46aff.png)

「**新規**」をクリックして、次のようにインストールしたInstant Clientのフォルダパスを追加します。
※フォルダの中の「instantclient_23_7」までを含めたパスになっていることに注意。
```:例
C:\Users\ADB\Downloads\instantclient-basiclite-windows.x64-23.7.0.25.01\instantclient_23_7
```
「**OK**」をクリックして、環境変数のPathの変更は完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/e6ba5e99-46ee-4ca9-a18c-da811facf686.png)

続いて、TNS_ADMINの設定として、同じく環境変数でWalletフォルダを指定していきます。
「**ユーザー環境変数**」欄で「**新規*」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/49748ded-3b85-45b2-a335-4d88349ed137.png)

変数名と変数値 (Walletのパス)を以下のように入力していきます。
入力したら「**OK**」をクリックします。残った「**環境変数**」と「**システムのプロパティ**」のウィンドウも「**OK**」をクリックして閉じていきます。
```:変数名
TNS_ADMIN
```
```:変数値
C:\Users\ADB\Downloads\Wallet_OracleADB
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/65e8398b-5c03-40ce-b991-06b8697a4bdc.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/11982a82-58f7-4f70-8df3-e1b2b27fc278.png)

実際に環境変数が有効になっているか、コマンドプロンプトを開いて以下のように入力します。
```bash:PATHの環境変数が有効になっているか確認
echo %PATH%
```
```bash:TNS_ADMINの環境変数が有効になっているか確認
echo %TNS_ADMIN%
```
```:実行結果
C:\Users\ADB>echo %PATH%
C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\dotnet\;C:\Users\ADB\AppData\Local\Microsoft\WindowsApps;C:\Users\ADB\Downloads\instantclient-basiclite-windows.x64-23.7.0.25.01\instantclient_23_7;

C:\Users\ADB>echo %TNS_ADMIN%
C:\Users\ADB\Downloads\Wallet_OracleADB
```
%PATH% は Windowsの動作に必要なシステムフォルダも含まれるため、たくさん表示されても問題ありません。

### ④Visual C++ Redistributable のインストール
デフォルトのWindowsサーバーでは、impdpの実行に必要なVisual C++ ランタイムがシステムに存在しないため、インストールしておく必要があります。
以下のページにアクセスして、「**Visual Studio 2015, 2017, 2019, and 2022**」のセクションから、x64のインストーラーをダウンロードします。

https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170#visual-studio-2015-2017-2019-and-2022

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/40f4e8ee-9950-4e4c-a674-d2303c4d6021.png)

インストーラを実行して完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/9f91b06c-afb7-40ed-82b4-266b9d825ef7.png)


## Blob Storageの構築
ストレージ アカウントとBlob Storage Containersを構築していきます。

### ストレージアカウントの作成
まずは、Azureで画面上部の検索窓に「**storage**」と入力して、「**ストレージ アカウント**」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/91e1ac25-48ac-4767-b83b-ca40a8cc9aa5.png)

「**作成**」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/3cfb2908-4234-41b2-83e6-83984a7bd6e5.png)

「**基本情報**」に必要な情報を入力していきます。
入力し終わったら、「**次へ**」をクリックします。

**プロジェクトの詳細**
* **サブスクリプション**：ADBと同じものを選択。
* **リソースグループ**：ADBと同じものを選択。

**インスタンスの詳細**
* **ストレージアカウント名**：任意の名前を入力。
* **リージョン**：ADBと同じリージョンを選択。
* **プライマリサービス**：今回は、Blob Storageを構築するので、「**Azure Blob StorageまたはAzure Data Lake Storage Gen 2**」を選択。
* **パフォーマンス**：「**Standard**」を選択。
* **冗長性**：「**ローカル冗長ストレージ(LRA)**」を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/a1c205eb-43f6-4b8f-a283-b930b7d33dc2.png)

「**詳細**」に関しては、今回はデフォルトのままで問題ありませんので、「**次へ**」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/8e7feb9a-3d36-48e4-9254-b6e5f2ff990d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/3eb249f3-7bbe-4962-9a25-6f4265c60f4b.png)

「**ネットワーク**」も、今回はデフォルトのままで問題ありませんので、「**次へ**」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/aaec79b9-993d-49f5-a746-c8f03dba827b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/c6fcc461-391f-4df8-9be5-67f7cf603004.png)

「**データ保護**」も、今回はデフォルトのままで問題ありませんので、「**次へ**」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/6668db09-2881-4b2c-964f-e94da64511ba.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/a70c3435-473e-472b-ba6c-2659c915e88e.png)

「**暗号化**」も、今回はデフォルトのままで問題ありませんので、「**次へ**」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/2c5fdd2c-5338-4a53-91b0-66bead43bebc.png)

「**タグ**」に関しては、必要ならば追加してください。「**次へ**」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/b36ac052-c16f-421f-9cad-b1c3b46c65f3.png)

構成の概要が表示されますので、問題がなければ、「**作成**」をクリックします。
作成が終わるまで数分待機します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/3c52fdda-55dd-42f2-b337-d85e263205db.png)

デプロイが完了したら、「**リソースに移動**」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/f58ad35a-e7a0-4604-b132-46a1150f906f.png)

### コンテナーの作成
画面左側の「**データストレージ**」⇒「**コンテナー**」を選択して、「**＋コンテナー**」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/0d553dc6-8599-4594-8441-8b18d410480f.png)

任意のコンテナー名を入力し、「**作成**」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/3d6986c0-2c88-421e-901a-639c5b13f911.png)

### ダンプファイルのアップロード
コンテナーが作成されたら、そのコンテナーの名前をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/997266ec-c1be-43ba-a972-e5f16e177951.png)

「**アップロード**」をクリックすると、画面右側にBLOBのアップロード画面が出てくるので、冒頭にダウンロードした4つのダンプファイルを選択します。最後に、青いボタンの「**アップロード**」をクリックすることで、ダンプファイルをBlob Storage上に配置することができました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/0e7f3a88-177d-4669-b0fc-57bd0b90b64c.png)

アップロードされたことを確認したら、右側の「**…**」をクリックして、「**プロパティ**」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/e3182335-16c9-47fc-870d-03f062c5f66a.png)

4つダンプファイルで、記載のURLをコピーして記録していきます。
4つとも以下のような形式のURLになっていると思います。
```:URL例
https://adb.blob.core.windows.net/adb-container/export_hr_01.dmp
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/4f8af086-e741-4fb1-8ee7-a530624ef0d8.png)

## ADB@AzureへのData Pumpによる移行
下準備が終わったので、ADBへData Pumpでインポートしていきます。
### 1⃣資格情報を作成する
ADBからBlob Storageにアクセスするには、まず資格情報を作成する必要があります。
そのためには、Blob Storage上のダンプファイルにアクセスするためのアカウント名とパスワードが必要です。

先ほど作成したストレージアカウントに移動して、画面左側の「**セキュリティとネットワーク**」⇒「**アクセスキー**」選択します。
「**ストレージアカウント名**」と「**キー**」をコピーします。キーがパスワードになるので、「**表示**」をクリックするとキーをコピーできます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/63d9c612-7b72-40ae-8ade-c0889f74ac7d.png)

次に、踏み台サーバーからADBのDatabase Actionsを開き、ADMINで「**DBMS_CLOUD.CREATE_CREDENTIAL**」を実行していきます。
Database Actionsへのアクセス方法は以下をご覧ください。

https://qiita.com/yunagash/items/27001de1a602a59d9225

Database Actionsにアクセスできたら、画面左上のメニューを開き、「**SQL**」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/2986993c-266b-4b67-8f00-208477ec1006.png)

まずは、画面左側のタブが「**ADMIN**」になっていることを確認します。
その後、以下のPL/SQL文を入力した後、「**スクリプトを実行**」をクリックし、正常に出力されたら資格情報の作成は完了です。
* **credential**：任意の名前を入力します。今回は「BLOBCRED」と入力しています。
* **username**：ストレージアカウントのアクセスキーで調べた「**ストレージアカウント名**」を入力。
* **password**：ストレージアカウントのアクセスキーで調べた「**キー**」を入力。
```sql:資格情報の作成
BEGIN
  DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'BLOBCRED',
    username => '<アカウント名>',
    password => '<パスワード/キー>'
  );
END;
/
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/c561a730-c886-4628-a960-4f9b5a3a59a3.png)

### 2⃣実際にBlob Storageにアクセスできるか確認する。
Blob Storageへのアクセステストを行っていきます。
DBMS_CLOUD.LIST_OBJECTS資格情報とURLを指定して実行することで、コンテナ内のファイルを一覧表示します。
URLに関しては、ダンプファイルをアップロードした際に、ダンプファイルのURLをコピーしたと思うので、そのURLの末尾のファイル名を削除してください。

```:URLの例
✖ https://samig1.blob.core.windows.net/contmig1/HR.DMP ⇚ ファイル名がいらない。
〇 https://samig1.blob.core.windows.net/contmig1/
```
先ほどと同様に、Database Actionsで以下のSQL文を入力した後、「**文の実行**」をクリックし、アップロードしたダンプファイルが出力されたらアクセステストは完了です。
```sql:Blob StorageへのアクセステストのSQL文
SELECT * FROM DBMS_CLOUD.LIST_OBJECTS('BLOBCRED','<コンテナのURL>');
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/75f68c74-d39f-4d42-9241-ac8de5fee65e.png)

### 3⃣インポートをするためのパラメータファイルを作成
踏み台サーバーで、インポート用のパラメータファイルを作成していきます。
コマンドプロンプトを起動して、CDコマンドで、Instant Clientと同じフォルダに移動し、以下内容を自身の内容に書き換えて入力します。
今回のフォルダは、「C:\Users\ADB\Downloads\instantclient-basiclite-windows.x64-23.7.0.25.01\instantclient_23_7」です。
* **CREDENTIALS**：先ほど作成した認証情報の名前を指定。今回は「**BLOBCRED**」と入力。
* **DUMPFILE**：コンテナーにアップロードしたダンプファイルのURLを指定。今回は、ダンプファイルが複数あるので「**%L**」パラメータを利用しています。

他のパラメータの詳細については、[Oracle Data Pump ベストプラクティス](https://www.oracle.com/jp/a/ocom/docs/oracle-data-pump-best-practices-ja.pdf)を参照してください。
```:パラメータファイルを作成するためのコマンド
echo DIRECTORY=DATA_PUMP_DIR> impdp.par
echo SCHEMAS=HR >> impdp.par
echo CREDENTIAL=BLOBCRED >> impdp.par
echo PARALLEL=1 >> impdp.par
echo DUMPFILE=https://adb.blob.core.windows.net/adb-container/export_hr_%U.dmp >> impdp.par
echo LOGFILE=blobimp.log >> impdp.par
echo EXCLUDE=cluster,indextype,db_link >> impdp.par
echo METRICS=y >> impdp.par
echo LOGTIME=all >> impdp.par
```
そして、実際にパラメータファイルが作られているか確認するために以下のコマンドで確かめます。
```bash:パラメータファイルの確認
type impdp.par
```
```:パラメータファイルの内容
DIRECTORY=DATA_PUMP_DIR
SCHEMAS=HR
CREDENTIAL=BLOBCRED
PARALLEL=1
DUMPFILE=https://adb.blob.core.windows.net/adb-container/export_hr_%U.dmp
LOGFILE=blobimp.log
EXCLUDE=cluster,indextype,db_link
METRICS=y
LOGTIME=all
```

### 4⃣Data Pumpによるインポートを実行
Instant Clientと同じフォルダで、以下内容を自身の内容に書き換えて入力します。
今回のフォルダは、「C:\Users\ADB\Downloads\instantclient-basiclite-windows.x64-23.7.0.25.01\instantclient_23_7」です。
ちなみに、「**TNSサービス名**」に関しては、OCIコンソール上のADBの画面から確認することが可能です。今回は、「Oracleadb_high」を選択しますが、詳細に関しては[こちら](https://blogs.oracle.com/oracle4engineer/post/adb-services-shares-201905)をご確認ください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/b76d14bd-cdec-4658-ae62-c8af1761c842.png)

```
impdp admin/<ADBパスワード>@<TNSサービス名> parfile=impdp.par
```

<details><summary>【実行結果はこちら】</summary>

```:実行結果
Import: Release 23.0.0.0.0 - Production on Sat Apr 19 10:46:20 2025
Version 23.7.0.25.01

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

Connected to: Oracle Database 23ai Enterprise Edition Release 23.0.0.0.0 - for Oracle Cloud and Engineered Systems
19-APR-25 10:46:37.347: W-1 Startup on instance 3 took 2 seconds
19-APR-25 10:46:41.339: W-1 Master table "ADMIN"."SYS_IMPORT_SCHEMA_01" successfully loaded/unloaded
19-APR-25 10:46:42.335: Starting "ADMIN"."SYS_IMPORT_SCHEMA_01":  admin/********@oracleadb_high parfile=impdp.par
19-APR-25 10:46:42.438: W-1 Processing object type SCHEMA_EXPORT/USER
19-APR-25 10:46:42.757: W-1      Completed 1 USER objects in 0 seconds
19-APR-25 10:46:42.757: W-1 Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
19-APR-25 10:46:42.852: W-1      Completed 7 SYSTEM_GRANT objects in 0 seconds
19-APR-25 10:46:42.852: W-1 Processing object type SCHEMA_EXPORT/ROLE_GRANT
19-APR-25 10:46:43.070: W-1      Completed 1 ROLE_GRANT objects in 1 seconds
19-APR-25 10:46:43.070: W-1 Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
19-APR-25 10:46:43.259: W-1      Completed 1 DEFAULT_ROLE objects in 0 seconds
19-APR-25 10:46:43.259: W-1 Processing object type SCHEMA_EXPORT/TABLESPACE_QUOTA
19-APR-25 10:46:43.484: W-1      Completed 1 TABLESPACE_QUOTA objects in 0 seconds
19-APR-25 10:46:43.484: W-1 Processing object type SCHEMA_EXPORT/PASSWORD_HISTORY
19-APR-25 10:46:43.572: W-1      Completed 1 PASSWORD_HISTORY objects in 0 seconds
19-APR-25 10:46:43.790: W-1 Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE
19-APR-25 10:46:43.942: W-1      Completed 3 SEQUENCE objects in 0 seconds
19-APR-25 10:46:43.942: W-1 Processing object type SCHEMA_EXPORT/TABLE/TABLE
19-APR-25 10:46:45.891: W-1      Completed 8 TABLE objects in 2 seconds
19-APR-25 10:46:45.916: W-1 Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
19-APR-25 10:46:47.117: W-1 . . imported "HR"."EMPLOYEES"                              8.7 KB     107 rows in 0 seconds using external_table
19-APR-25 10:46:47.470: W-1 . . imported "HR"."LOCATIONS"                                6 KB      23 rows in 0 seconds using external_table
19-APR-25 10:46:47.812: W-1 . . imported "HR"."JOB_HISTORY"                            5.3 KB      10 rows in 0 seconds using external_table
19-APR-25 10:46:48.154: W-1 . . imported "HR"."JOBS"                                   5.4 KB      19 rows in 1 seconds using external_table
19-APR-25 10:46:48.497: W-1 . . imported "HR"."DEPARTMENTS"                            5.4 KB      27 rows in 0 seconds using external_table
19-APR-25 10:46:48.923: W-1 . . imported "HR"."COUNTRIES"                              5.2 KB      25 rows in 0 seconds using external_table
19-APR-25 10:46:49.258: W-1 . . imported "HR"."REGIONS"                                4.9 KB       4 rows in 1 seconds using external_table
19-APR-25 10:46:49.277: W-1 . . imported "HR"."NG_TAB_4ADW"                              0 KB       0 rows in 0 seconds using external_table
19-APR-25 10:46:49.288: W-1 Processing object type SCHEMA_EXPORT/TABLE/COMMENT
19-APR-25 10:46:49.515: W-1      Completed 39 COMMENT objects in 0 seconds
19-APR-25 10:46:49.515: W-1 Processing object type SCHEMA_EXPORT/PROCEDURE/PROCEDURE
19-APR-25 10:46:49.619: W-1      Completed 2 PROCEDURE objects in 0 seconds
19-APR-25 10:46:49.619: W-1 Processing object type SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE
19-APR-25 10:46:49.811: W-1      Completed 2 ALTER_PROCEDURE objects in 0 seconds
19-APR-25 10:46:49.811: W-1 Processing object type SCHEMA_EXPORT/VIEW/VIEW
19-APR-25 10:46:50.034: W-1      Completed 1 VIEW objects in 1 seconds
19-APR-25 10:46:50.093: W-1 Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
19-APR-25 10:46:50.591: W-1      Completed 17 INDEX objects in 0 seconds
19-APR-25 10:46:50.591: W-1 Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
19-APR-25 10:46:50.935: W-1      Completed 9 CONSTRAINT objects in 0 seconds
19-APR-25 10:46:50.935: W-1 Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
19-APR-25 10:46:50.959: W-1      Completed 19 INDEX_STATISTICS objects in 0 seconds
19-APR-25 10:46:50.959: W-1 Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
19-APR-25 10:46:51.321: W-1      Completed 10 REF_CONSTRAINT objects in 1 seconds
19-APR-25 10:46:51.321: W-1 Processing object type SCHEMA_EXPORT/TABLE/TRIGGER
19-APR-25 10:46:51.489: W-1      Completed 2 TRIGGER objects in 0 seconds
19-APR-25 10:46:51.489: W-1 Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
19-APR-25 10:46:51.513: W-1      Completed 8 TABLE_STATISTICS objects in 0 seconds
19-APR-25 10:46:51.543: W-1      Completed 1 [internal] STATISTICS objects in 0 seconds
19-APR-25 10:46:51.635: W-1      Completed 8 SCHEMA_EXPORT/TABLE/TABLE_DATA objects in 3 seconds
19-APR-25 10:46:51.743: Job "ADMIN"."SYS_IMPORT_SCHEMA_01" successfully completed at Sat Apr 19 10:46:51 2025 elapsed 0 00:00:24
```
</details>

### 5⃣データがインポートできているか確認
最後に、実際にデータ移行ができているか確認するために、Database Actionsで確認してみます。
例として、以下のコマンドで、HRスキーマのCOUNTRIES表の件数を見てみます。25件であれば大丈夫です！
```SQL:HRスキーマのCOUNTRIES表の件数確認
select count(1) from hr.COUNTRIES;
```
```:実行結果
  COUNT(1)
----------
        25
```

## まとめ
今回は、Oracle Database@AzureのADBへData Pumpによる移行作業を実施しました。
他にもOracleのマルチクラウドに関する記事を発信しているので、以下の関連記事も合わせてご参考ください。

## 関連記事
:::note info
**Oracle Database@Azureに関して**
* [Oracle Database@Azureについてまとめてみた](https://qiita.com/yunagash/items/e603ef227928824921a3)
* [Oracle Database@AzureをPAYGで利用する手順](https://qiita.com/yunagash/items/1073a8a69cf4f0448960)
* [Oracle Database@AzureでADBをプロビジョニングしてみた](https://qiita.com/yunagash/items/4e17c84c8af4335f8465)
* [Oracle Database@AzureでADBのDatabase Actionsに接続してみた](https://qiita.com/yunagash/items/27001de1a602a59d9225)
* [Oracle Database@AzureのADBへData Pumpで移行してみた](https://qiita.com/yunagash/items/037d00df68d8f17fc144)
* [Oracle Database@Azureでのリージョン数のService Limit引き上げ方法](https://qiita.com/yunagash/items/60036ef2f585d8ab75bf)
* [Oracle Database@AzureでExaDB-XSをプロビジョニングしてみた](https://qiita.com/yunagash/items/cd848c4a9b585be561e6)
* [Oracle Database@AzureのExaDB-XSへData Pumpで移行してみた](https://qiita.com/yunagash/items/e8886945aa33e249132d)
:::

:::note info
**Oracle Database@AWSに関して**
* [Oracle Database@AWSについてまとめてみた](https://qiita.com/yunagash/items/5f6565db017e20d20a34)
:::

:::note info
**Oracle Database@Googleに関して**
* [Oracle Database@Google Cloudについてまとめてみた](https://qiita.com/yunagash/items/478e9a10f80ebcc45804)
* [Oracle Database@Google CloudでADBをプロビジョニングしてみた](https://qiita.com/yunagash/items/e44bde42f1bcebacceba)
* [Oracle Database@Google CloudでADBのDatabase Actionsに接続してみた](https://qiita.com/yunagash/items/c9443e866bbaa15d4ce8)
* [Oracle Database@Google CloudのADBでコンソール上でできる操作をまとめてみた](https://qiita.com/yunagash/items/5eb02f8482c5724582dd)
* [Oracle Database@Google CloudでCloud DNSの課金が発生する理由](https://qiita.com/yunagash/items/899b05803aae4103c042)
:::


## 編集履歴
* 2025/04/19 記事公開