RDS for Oracle と SQL Server 間で、 Database Gateway for ODBC  をつかった Database Link (DBLink) をやってみる

# はじめに

既存のオンプレミス環境で、Oracle Database と SQL Server で DBLink 構成をしている時があります。この Oracle Database を RDS for Oracle に移行したあとも、引き続き DBLink を利用できます。だた、RDS for Oracle 上に Database Gateway for ODBC を構成することは出来ないので、EC2 の上で  Database Gateway for ODBC を構成する必要があります。

今回は個人用途として技術的な検証を行っていきます。本番環境のときには、ぜひライセンス周りも確認してみてください。



# 構成図

この記事の構成図を紹介します。

![image-20230422131955273.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/6821dd0b-7b19-f719-2050-18f7c17312d4.png)



登場するコンポーネントは以下の 4 つがあります。

- 作業用の EC2
  - SQL Developer や、SQL Server Management Studio など、クエリーを発行するためのツールを利用するための作業用マシン
- RDS for Oracle
  - DBLink を作成する元となる Oracle Database
- Database Gateway for ODBC を稼働する EC2
  - Database Gateway for ODBC を動かして、ODBC 経由の DBLink を動かす
- SQL Server (この記事では RDS for SQL Server を利用)
  - DBLink で参照先となる SQL Server



それぞれの設定方法を紹介していきます。





# Database Gateway for ODBC

Database Gateway for ODBC を動かす EC2 インスタンスに関する設定です。



## EC2 Instance

今回の手順では、Windows Server 2022 を EC2 インスタンスで用意します。

![image-20230419231615644.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/e2ce9fea-769b-0fcd-b893-490ce2c520a8.png)



スペックについて、以下の Oracle 側の Document に記載があります。仮想メモリが RAM の 2 倍とありますが、メモリースワップは基本的にしたくないと思うのでメモリ 2 GB 以上を用意すると良さそうな気もします。

https://docs.oracle.com/cd/F19136_01/otgiw/install-odbc-gateway.html#GUID-2D50CA26-6CFC-4232-B773-4EEB47F59814

![image-20230422121231023.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/03d64467-2f49-56fb-fa5a-8e8031ab7e6d.png)



## Download

構成した Windows Server の EC2 インスタンスに、Database Gateway for ODBC のインストーラーをダウンロードします。

以下の URL からダウンロードをします。

https://www.oracle.com/jp/database/technologies/oracle19c-windows-downloads.html

![image-20230422121636350.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/80a2fecc-d08a-125a-bada-c83bb3e34d88.png)



OTN ライセンスを確認し、ログインをしつつダウンロードを行います。

![image-20230419234246383.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/4b223a61-935d-c823-9c5c-8bd0c0fc9720.png)





## Install

ダウンロードしてきた Zip ファイルを使って、Database Gateway for ODBC  のインストールを行います。

Zip ファイルを展開します。C ドライブ直下で展開しました。

![image-20230419234844784.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/af079414-ba81-aaa1-65db-d60313650740.png)



展開したフォルダの中にある setup.exe を実行します。

![image-20230419234855773.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/d61d6a71-541b-5ca7-93e9-03bfe0dc1695.png)



インストーラーが立ち上がり、次へを選択します。

![image-20230419235432482.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/43193a61-e636-2eb9-5a37-47caf4c4dda2.png)



インストール先を選択しますが、今回はデフォルトのまま次へを押します。

![image-20230419235505592.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/0560208d-fd7d-7d63-b76a-cc051a04ad0e.png)



Database Gateway for ODBC を選択して次へを押します。

![image-20230419235531276.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/82a99d64-e923-fe95-c925-78989e27f8b2.png)



待機します

![image-20230419235546043.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/b57cd6e0-7921-8edb-8409-9e495448775c.png)



インストールを押します

![image-20230419235613194.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/fe3f6baf-7816-6fde-c376-4e593928e282.png)



インストールが進み、、、

![image-20230419235625727.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/c73bc85f-5ef3-b2e5-c0a1-b11ca2459cda.png)



自動的に Oracle Net Configuration Assistant に関する設定ウィザードも表示されたので、次へを押します

![image-20230420000149517.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/0f4e4289-4865-b1b7-e65f-012c349877b3.png)



リスナー名は後から変更するので、適当に入力します。

![image-20230420000219464.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/00dd193a-4d11-a9d3-35b0-df654a7aa741.png)



デフォルトのまま次へを押します。

![image-20230420000243359.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/5283fd81-2943-9531-fe24-030da728e2cb.png)



標準のまま次へを押します。

![image-20230420000300230.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/b490517a-4e7c-f93a-f956-9f3b874a28e0.png)



次へを押します。

![image-20230420000318083.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/cd222425-8939-371c-688f-081cac9a346b.png)



次へを押します。

![image-20230420000335888.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/fa6de381-786f-8d37-c198-a19a00d13f9e.png)



はいで、次へを押します。

![image-20230420000415019.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/5e419f6d-3e31-b9b0-3744-f8daf14d7ee6.png)



次へを押します。

![image-20230420000528660.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/2ea6f299-993b-2445-4c21-2f40e0d53c1c.png)



サービス名は後から設定変更するので、適当に入力します。

![image-20230420000615882.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/bf97dc3e-d8fc-3938-fa9d-46c5deee4f74.png)



TCP

![image-20230420000633131.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/fcca728c-2a92-2fe1-d1df-15e2753b8dee.png)



これも後から変更するので、適当に入力します。

![image-20230420000715412.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/aee45520-4f62-af4e-a5fa-5a64cd1dbeaf.png)



いいえで、次へを押します。

![image-20230420000725533.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/4393f991-bd84-9505-32f1-60011a737550.png)



次へを押します。

![image-20230420000732868.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/a576f3e8-ba39-c5f7-e2c1-3d6e2b100746.png)



いいえで、次へを押します。

![image-20230420000741663.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/8ba94053-e162-3550-cf35-c2f74a056e3f.png)



次へを押します。

![image-20230420000751011.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/f2e2fd1f-92d5-7618-309f-ec33e97c430a.png)



終了を押します。

![image-20230420000804960.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/68238be9-dc8a-5947-1ff1-4ca70bf4f1f0.png)



閉じるを押します。

![image-20230420000812752.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/c8c7e5d0-afe4-cef5-dc8e-a870970ade2c.png)



すると、次の指定したディレクトリにインストールがされました。

![image-20230422123846186.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/8c0d47b4-35a1-5cda-f097-bb3310b10f1f.png)





# RDS for Oracle

## Create

RDS for Oracle を作成します。特殊な設定は無いので、普通に作成します。

Create database を押します。

![image-20230420184652173.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/8b2b3c20-5728-75d6-52f3-ef134fd7e996.png)



今回は、Oracle 19c を選びます。

![image-20230420184843347.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/850c8d41-e8d4-291d-2f52-21a49e204cb3.png)



名前やパスワードを指定します。

![image-20230420185050970.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/7ce17500-feda-8ab1-27a1-54050ba8a5bf.png)



instance type を選択し

![image-20230420185142845.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/db3aa0db-c54c-8530-58f8-8827bb464ee0.png)



Storage に関する設定を入れます。

![image-20230420185252163.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/351105ca-214a-5c9d-1b99-b0786bf3c410.png)



Multi-AZ を選択しておきます。

![image-20230420185311432.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/9d5d047f-b69e-7aae-499b-5b44538913ff.png)



Network に関する指定をします。

![image-20230420185553112.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/42b12fc2-2a42-3a4e-0c72-95ad7472e054.png)



Security Group を指定します。

![image-20230420185617411.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/ebe5ac80-219b-3fe3-f438-d4b45d8856bf.png)



このあたりはデフォルトのままで行きます。

![image-20230420185700429.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/b6ff1d32-e164-8d08-85e1-af9c8e1dc8cf.png)



他はデフォルトのまま Create database を押します。

![image-20230420185744348.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/a369dd4b-4ef5-4912-1991-85e0a50d6daf.png)



Creating となり、一定時間後に Available に変わります。

![image-20230420190036838.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/d22ea409-cfaf-5e3c-6af7-c00e6a63eb85.png)



Endpoint が確認できます。これは VPC の中に構成されています。

![image-20230420194715743.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/9732d45a-e971-2266-572c-80fb99c117fc.png)



DB name が、ORCL となっている事を確認しました。これは、SQL Developer などで接続するときに使用する SID なので、メモっておきましょう。

![image-20230420195155292.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/fa5a8e8d-54d8-5f25-2b9e-8a58a8f576a0.png)



## SQL Developer で接続

SQL Developer から RDS for Oracle に接続できることを確認します。SQL Developer を次の URL からダウンロードします。

https://www.oracle.com/jp/database/sqldeveloper/technologies/download/



接続を作成します。

![image-20230420195236374.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/6540650a-8e69-a50d-c947-30fc44d2f5a1.png)



ユーザー名とパスワードなどを指定して、接続をします。

![image-20230420195331843.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/53af306b-1f04-8d7d-687d-581fac164fde.png)



接続できました。

![image-20230420202112616.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/4eb94497-0040-56c5-4657-d2a59b585ad4.png)







# RDS for SQL Server

## Create

SQL Server も準備します。EC2 上でもいいのですが、RDS for SQL Server を利用する事にします。

![image-20230420190140784.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/a025a258-bbb0-63b2-b855-0594fc4f3347.png)



名前やパスワードなどを指定します。

![image-20230420190248885.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/4e829b82-7929-f007-307e-74df97ae93a5.png)



Instance Type を選択します。

![image-20230420190314719.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/60f74480-9370-986d-5c76-5a6eeb92f892.png)



Storage を選択します。

![image-20230420190333517.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/b709f665-f0d5-4a0a-f374-f54a7bcef0e4.png)



Network に関する指定をします。

![image-20230420190417093.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/59b9273a-ba91-a6d3-b37a-f851c644fcd5.png)



Security Group などを指定します。

![image-20230420190449475.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/97df4b07-fdc5-b96b-de76-e547a8507bc6.png)



あとはデフォルトのまま Create を押します。

![image-20230420190522819.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/11f604d3-96be-617f-3956-5e2addf67e22.png)



Creating となり、一定時間後に Available に変わります。

![image-20230420190642131.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/38b03af2-6369-d417-9885-04fa3c36e3a0.png)



## Microsoft SQL Server Management Studio

作成した RDS for SQL Server に接続するため、Microsoft SQL Server Management Studio を利用します。次の URL からダウンロードします。

https://learn.microsoft.com/ja-jp/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver16



SQL Server のホスト名やパスワードを指定して接続します。

![image-20230420224126898.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/6bdcfd8d-164b-d722-93d8-543ac96e56f0.png)



接続できました。

![image-20230420224158272.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/9bbba798-ba82-51f2-a2c6-417efa341c71.png)



## テスト用のテーブル作成

SQL Server に動作確認用のテスト用テーブルとデータを入れます。

New Database を押します。

![image-20230421153920339.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/16bd4e21-00c0-05bc-5e11-114c5e5dcdcb.png)



Database name に、testdb を入力します。

![image-20230421153948270.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/3e989375-1211-c6fe-8829-e15e8be8b70f.png)



あたらしいテーブルを作成します。

![image-20230421154029435.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/9d958175-d9d2-3acc-bd83-7aba6af57eb9.png)



テーブルを作成して

```
CREATE TABLE testtable (
	UserID   INT,
	Name     VARCHAR(50)
);
```



テスト用のデータを INSERT します。

```
INSERT INTO testtable VALUES(1, 'suzuki');
INSERT INTO testtable VALUES(2, 'sato');
```





# Database Gateway for ODBC の設定

Database Gateway for ODBC の EC2 上で、設定をしていきます。

## 初期化パラメータファイルの作成

Database Gateway for ODBS に関する次のディレクトリを開きます。

```
C:\app\tg\Administrator\product\19.0.0\tghome_1\hs\admin
```



サンプルファイルの initdg4odbc.ora があります。これを編集します。

![image-20230420213241760.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/3d4a54c8-e32e-e5e7-93bf-6b36d8be1f96.png)





HS_FDS_CONNECT_INFO の値を、sqlserverdsn に書き換えます。この名前 sqlserverdsn は、次の手順にある ODBC 設定で行うものと一致する必要があります。

```
HS_FDS_CONNECT_INFO = sqlserverdsn
```



## ODBC 設定

Windows Server のコントロールパネルから、ODBC の設定を行っていきます。

コントロールパネルの検索バーに、odbc と入れて検索します。

![image-20230420215236975.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/affd66d7-db03-6805-4f09-7eba891de022.png)



ODBC データ ソースのセットアップ (64 ビット) を押します。

![image-20230420215306683.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/62f47fc2-3cb3-787f-3bc7-21d7ba4d2b57.png)



システム DSN の追加を押します。

![image-20230420215340151.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/b864dac2-9538-7ddd-de33-604e7d30796c.png)



SQL Server が選択されており、完了を押します。

![image-20230420215407548.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/f8e1bc5a-60e2-c4bf-6356-8d491e451456.png)



「初期化パラメータファイルの作成」手順で指定した名前と一致させます。

```
sqlserverdsn
Database Gateway の SQL Server 用
sqlserver2019-dblink.cwvq7vck29x3.ap-northeast-1.rds.amazonaws.com
```

![image-20230420215553207.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/c6b0c344-e583-bacf-37dc-c48009c4a55c.png)



OK を押します。

![image-20230420215851746.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/120e6a7f-6203-78f1-7dfd-5070c2966558.png)



作成されました。構成を押します。

![image-20230422131007166.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/3d730818-b696-e3ee-ae31-beaa1119b434.png)



SQL Server に接続するための、ID とパスワードを入れます。

![image-20230421163634288.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/8b5376bd-f4ef-6db2-c410-65808e63e2d8.png)



既定のデータベースで testdb を選択し、次へを押します。

![image-20230421163705325.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/9fb8d0e1-7249-1350-f8ca-f5ada47037de.png)



このあたりは変更せず、完了を押します。

![image-20230421163745782.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/9b342678-a2bd-e3fe-7451-6eff26a60b11.png)



データ ソースのテストを押します。ｓ

![image-20230421163756871.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/cd4b7829-b7f3-1aca-94f2-e3bbbac7441a.png)



無事に接続が出来たことを確認し、OK を押します。

![image-20230421163813272.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/3132431e-aee9-e53a-0196-27d3a7d2d038.png)



## Gateway の Oracle Net Listener 設定

以下のディレクトリを開きます。

```
C:\app\tg\Administrator\product\19.0.0\tghome_1\network\admin
```



listener.ora の編集をします。

![image-20230420224655692.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/1b16cb9a-dbaf-bf6a-7efa-4b5c9f34e30c.png)



編集前のデフォルトはこんな感じです。

```
# listener.ora Network Configuration File: C:\app\tg\Administrator\product\19.0.0\tghome_1\NETWORK\ADMIN\listener.ora
# Generated by Oracle configuration tools.

ORAGW1 =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.112)(PORT = 1521))
    )
  )
```



これを次のように編集します。

```
# listener.ora Network Configuration File: C:\app\tg\Administrator\product\19.0.0\tghome_1\NETWORK\ADMIN\listener.ora
# Generated by Oracle configuration tools.

ORAGW1 =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.112)(PORT = 1521))
    )
  )

dg4odbc =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.112)(PORT = 1521))
    )
  )

SID_LIST_dg4odbc =
   (SID_LIST=
      (SID_DESC= 
         (SID_NAME=dg4odbc)
         (ORACLE_HOME=C:\app\tg\Administrator\product\19.0.0\tghome_1)
         (PROGRAM=dg4odbc)
      )
   )
```



## Firewall の無効化

Database Gateway for ODBC が稼働している EC2 インスタンス上で、Firewall を無効化します。本番環境では、無効化ではなく例外ルールを行う方がより望ましいと思いますが、今回は簡単な手順でやっています。 

![image-20230421155023408.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/f9c450db-f464-0a2f-fee0-0b9564dd8282.png)



## Oracle Net Listener の起動

コマンドプロンプトを開き、リスナ―を起動します。

```
lsnrctl start dg4odbc
```



そして、status コマンドで状況を確認します。

```
lsnrctl status dg4odbc
```



次のように、末尾に サービス "dg4odbc" が稼働している様子が見えれば大丈夫です。

```
C:\Users\Administrator>lsnrctl status dg4odbc

LSNRCTL for 64-bit Windows: Version 19.0.0.0.0 - Production on 22-4月 -2023 00:46:36

Copyright (c) 1991, 2019, Oracle.  All rights reserved.

(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.112)(PORT=1521)))に接続中
リスナーのステータス
------------------------
別名                      dg4odbc
バージョン                TNSLSNR for 64-bit Windows: Version 19.0.0.0.0 - Production
開始日                    22-4月 -2023 00:46:23
稼働時間                  0 日 0 時間 0 分 15 秒
トレース・レベル          off
セキュリティ              ON: Local OS Authentication
SNMP                      OFF
パラメータ・ファイル      C:\app\tg\Administrator\product\19.0.0\tghome_1\network\admin\listener.ora
ログ・ファイル            C:\app\tg\Administrator\diag\tnslsnr\EC2AMAZ-RMTNCLE\dg4odbc\alert\log.xml
リスニング・エンドポイントのサマリー...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.112)(PORT=1521)))
サービスのサマリー...
サービス"dg4odbc"には、1件のインスタンスがあります。
  インスタンス"dg4odbc"、状態UNKNOWNには、このサービスに対する1件のハンドラがあります...
コマンドは正常に終了しました。

```



Windows のサービスに登録されているので、自動起動を有効化にしてもいいと思います。

![image-20230422131808478.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/45df0621-5547-28ec-554b-6129ed1965ff.png)



# Database Link の作成

ここまでで準備が完了しました。やっと Database Link の作成が出来ます。SQL Developer などで、次のクエリーを実行します。

- using で Database Gateway for ODBC が稼働している EC2 インスタンスの IP アドレスを指定します。この記事の環境では、192.168.0.112 です。
- sid は、dg4odbc を指定します。初期化パラメータファイルなどで、異なる値を使っている場合は、この値も変更します。
- HS : OK を指定することで、Database Gateway for ODBC を利用する旨を指定できます。HS は多分、Heterogeneous Services の略だと思います。

```
create public database link dg4odbc connect to "admin" identified by "yourpassword-wo-iretene" 
using '(DESCRIPTION=(ADDRESS
=(PROTOCOL=TCP)(HOST=192.168.0.112)(PORT=1521))
(CONNECT_DATA=(SID=dg4odbc))
(HS=OK))';
```





# DBLink の動作確認

ここまでの作業で、次の構成図が出来ました。DBLink が動作するか確かめてみましょう。

![image-20230422132003207.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/f800cc07-0f99-bf03-4bf4-9584f8d287a0.png)



次の SQL クエリーを実行します。@ に DBLink の名前を指定することで、SQL Server 上のテーブルを呼びだせます。

```
SELECT * FROM testtable@dg4odbc;
```



実行結果です。SQL Server 上のデータを、RDS for Oracle の DBLink 経由で確認できます。

![image-20230422103847311.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/636fa39d-0d84-274f-d804-7a0b86ca78be.png)



データの INSERT もしてみましょう。

```
INSERT INTO testtable@dg4odbc VALUES(3, 'tanaka');
COMMIT;
```

![image-20230422104004681.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/25c65c79-cd86-da04-09b0-dfbd1fa4e1e8.png)



無事に更新されました。

![image-20230422104026331.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/61283946-2cda-6420-acf3-466b1ca985f1.png)



# 参考 URL

create database link 句についての Document
https://docs.oracle.com/cd/F19136_01/sqlrf/CREATE-DATABASE-LINK.html#GUID-D966642A-B19E-449D-9968-1121AF06D793
https://docs.oracle.com/cd/F19136_01/otgiw/config-odbc-gateway.html#GUID-2F4BF76B-439B-4E7E-9707-DE91B83E3579

Database Gateway for ODBC のインストール方法
https://docs.oracle.com/cd/F19136_01/otgiw/install-odbc-gateway.html

Database Gateway for ODBC の設定方法
https://docs.oracle.com/cd/F19136_01/otgiw/config-odbc-gateway.html#GUID-8BC0D3B4-A9D8-4A11-9780-B82351314A7B