2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[OCI]Autonomous Database : Azure SQL Databaseに対するデータベース・リンクを作成してデータを参照してみた

Last updated at Posted at 2022-10-08

はじめに

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のサーバ名を確認し、メモしておきます。
スクリーンショット 2022-10-08 15.04.38.png

3. Azure SQL Databaseのファイアウォールの設定

「サーバーファイアウォールの設定」をクリックします。
スクリーンショット 2022-10-08 15.08.43.png

ファイアウォール規則の「ファイアウォール ルールの追加」をクリックします。
スクリーンショット 2022-10-08 15.10.47.png

Autonomous Databaseからのネットワークアクセスを許可するために、以下の内容を入力し「OK」をクリックします。
ルール名:「Autonomous Database」
開始IP:Autonomous DatabaseのアウトバウンドIPアドレス
終了IP:Autonomous DatabaseのアウトバウンドIPアドレス
スクリーンショット 2022-10-08 15.13.41.png
ブラウザからクエリエディターを使用するために「クライアントIPv4アドレスの追加」をクリックして、使用中のPCからのアクセスを許可します。
スクリーンショット 2022-10-08 15.26.33.png

4. Azure SQL Databaseのサンプルデータの確認

左のメニューから「クエリ エディター」に移動します。
スクリーンショット 2022-10-08 15.18.45.png
サーバ管理者としてサインインします。
スクリーンショット 2022-10-08 15.20.53.png
クエリエディターに以下のSQLを入力し、「実行」をクリックします。

SELECT * FROM SalesLT.ProductCategory;

スクリーンショット 2022-10-08 15.22.30.png
SalesLT.ProductCategory表に41件のレコードが保存されていることが確認できました。
スクリーンショット 2022-10-08 15.33.30.png

5. データベース・リンクの作成

Azure SQL Databaseの準備が整ったので、Autonomous DatabaseからAzure SQL Databaseに対するデータベース・リンクを作成します。

Azure SQL Databaseに対するデータベース・リンクを作成するには、以下の2つの手順が必要です。

  1. Azure SQL DatabaseにアクセスするためのクレデンシャルをDBMS_CLOUD.CREATE_CREDENTIALプロシージャで作成する
  2. 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

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?