はじめに
Autonomous Databaseは、Amazon Redshift、MySQL、PostgreSQL、SnowflakeといったOracle Database以外の様々なデータベースに対してデーターベース・リンクが作成できます。
現時点では、以下の前提条件があります。
・ターゲット・データベースがパブリック・インターネットからアクセスできること
・ターゲット・データベースがこちらに記載されているポートを使用していること
・ターゲット・データベースがSSL/TLS接続を許可する設定になっていること
ということで、今回はAutonomous DatabaseからAzure SQL Databaseに対してデータベース・リンクを作成し、Autonomous DatabaseからAzure SQL Database内のデータを参照してみました。
1. Autonomous DatabaseのアウトバウンドIPアドレスの確認
Azure SQL DatabaseのファイアウォールでAutonomous Databaseからの接続を許可する設定をするために、Autonomous DatabaseのアウトバウンドIPアドレスを確認します。
Autonomous DatabaseのアウトバウンドIPアドレスを確認には以下のSQLを実行します。
SELECT json_value(cloud_identity, '$.OUTBOUND_IP_ADDRESS[0]') outbound_ip_address FROM v$pdbs;
SQL*PlusやDatabase Actionsを使用してAutonomous Databaseにadminユーザで接続し、上記のSQLを実行してみます。
SQL> SELECT json_value(cloud_identity, '$.OUTBOUND_IP_ADDRESS[0]') outbound_ip_address FROM v$pdbs;
OUTBOUND_IP_ADDRESS
--------------------------------------------------------------------------------
xxx.xxx.xxx.xxx
SQL>
表示されたAutonomous DatabaseのアウトバウンドIPアドレスをメモしておきます。
2. Azure SQL Databaseの作成
こちらの手順に従って、サンプルデータを含むAzure SQL Databaseを作成します。
今回は以下のパラメータで作成しました。
サーバ管理者名:azureuser
パスワード:Oracle#1
作成したAzure SQL Databaseのサーバ名を確認し、メモしておきます。
3. Azure SQL Databaseのファイアウォールの設定
ファイアウォール規則の「ファイアウォール ルールの追加」をクリックします。
Autonomous Databaseからのネットワークアクセスを許可するために、以下の内容を入力し「OK」をクリックします。
ルール名:「Autonomous Database」
開始IP:Autonomous DatabaseのアウトバウンドIPアドレス
終了IP:Autonomous DatabaseのアウトバウンドIPアドレス
ブラウザからクエリエディターを使用するために「クライアントIPv4アドレスの追加」をクリックして、使用中のPCからのアクセスを許可します。
4. Azure SQL Databaseのサンプルデータの確認
左のメニューから「クエリ エディター」に移動します。
サーバ管理者としてサインインします。
クエリエディターに以下のSQLを入力し、「実行」をクリックします。
SELECT * FROM SalesLT.ProductCategory;
SalesLT.ProductCategory表に41件のレコードが保存されていることが確認できました。
5. データベース・リンクの作成
Azure SQL Databaseの準備が整ったので、Autonomous DatabaseからAzure SQL Databaseに対するデータベース・リンクを作成します。
Azure SQL Databaseに対するデータベース・リンクを作成するには、以下の2つの手順が必要です。
- Azure SQL DatabaseにアクセスするためのクレデンシャルをDBMS_CLOUD.CREATE_CREDENTIALプロシージャで作成する
- Azure SQL Databaseに対するデータベース・リンクをDBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKプロシージャで作成する
SQL*PlusやDatabase Actionsを使用して、Autonomous Databaseにadminユーザとして接続します。
DBMS_CLOUD.CREATE_CREDENTIALは以下のような形式で実行します。
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => '作成するクレデンシャルの名前',
username => 'Azure SQL Databaseユーザのユーザ名',
password => 'Azure SQL Databaseユーザのパスワード'
);
END;
/
以下のPL/SQLブロックを実行して、「AZURE_SQL_DATABASE_LINK_CRED」という名前のクレデンシャルを作成します。
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'AZURE_SQL_DATABASE_LINK_CRED',
username => 'azureuser',
password => 'Oracle#1'
);
END;
/
DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKは以下のような形式で実行します。
BEGIN
DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
db_link_name => '作成するデータベース・リンク名',
hostname => 'Azure SQL Databaseのサーバ名',
port => '1433',
service_name => 'Azure SQL Databaseのデータベース名',
credential_name => '認証に使用するクレデンシャル名',
gateway_params => JSON_OBJECT('db_type' value 'AZURE'),
ssl_server_cert_dn => NULL);
END;
/
以下のPL/SQLブロックを実行して、「AZURE_SQL_DATABASE_LINK」という名前のデータベース・リンクを作成します。
※こちらの実行には数分かかります。
BEGIN
DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
db_link_name => 'AZURE_SQL_DATABASE_LINK',
hostname => 'xxxxxxxxxx.database.windows.net',
port => '1433',
service_name => 'mySampleDatabase',
credential_name => 'AZURE_SQL_DATABASE_LINK_CRED',
gateway_params => JSON_OBJECT('db_type' value 'AZURE'),
ssl_server_cert_dn => NULL);
END;
/
6. 動作確認
以下のSQLを実行して、データベース・リンクを経由してAutonomoud DatabaseからAzure SQL Databaseのデータを参照してみます。
SELECT * FROM SalesLT.ProductCategory@AZURE_SQL_DATABASE_LINK;
SQL*Plusから上記のSQLを実行してみます。
SQL> set pagesize 300
SQL> SELECT * FROM SalesLT.ProductCategory@AZURE_SQL_DATABASE_LINK;
ProductCategoryID ParentProductCategoryID
----------------- -----------------------
Name
--------------------------------------------------------------------------------
rowguid Modified
------------------------------------ --------
1
Bikes
CFBDA25C-DF71-47A7-B81B-64EE161AA37C 02-06-01
2
Components
C657828D-D808-4ABA-91A3-AF2CE02300E9 02-06-01
<中略>
ProductCategoryID ParentProductCategoryID
----------------- -----------------------
Name
--------------------------------------------------------------------------------
rowguid Modified
------------------------------------ --------
3002A5D5-FEC3-464B-BEF3-E0F81D35F431 02-06-01
40 4
Pumps
FE4D46F2-C87C-48C5-A4A1-3F55712D80B1 02-06-01
41 4
ProductCategoryID ParentProductCategoryID
----------------- -----------------------
Name
--------------------------------------------------------------------------------
rowguid Modified
------------------------------------ --------
Tires and Tubes
3C17C9AE-E906-48B4-BDD3-60E28D47DCDF 02-06-01
41行が選択されました。
SQL>
作成したデータベース・リンクを経由して、Autonomous DatabaseからAzure SQL Databaseのデータを参照できることが確認できました。
参考資料
・クイックスタート: 単一データベースを作成する - Azure SQL Database
・Oracle管理の異機種間接続による非Oracle Databaseへのデータベース・リンクの作成
・Create Database Links to Non-Oracle Databases with Oracle-Managed Heterogeneous Connectivity
・Using Oracle Autonomous Database on Shared Exadata Infrastructure:Obtain Tenancy Details