3
1

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.

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

Last updated at Posted at 2023-04-22

はじめに

既存のオンプレミス環境で、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

登場するコンポーネントは以下の 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

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

image-20230422121231023.png

Download

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

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

image-20230422121636350.png

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

image-20230419234246383.png

Install

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

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

image-20230419234844784.png

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

image-20230419234855773.png

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

image-20230419235432482.png

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

image-20230419235505592.png

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

image-20230419235531276.png

待機します

image-20230419235546043.png

インストールを押します

image-20230419235613194.png

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

image-20230419235625727.png

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

image-20230420000149517.png

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

image-20230420000219464.png

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

image-20230420000243359.png

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

image-20230420000300230.png

次へを押します。

image-20230420000318083.png

次へを押します。

image-20230420000335888.png

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

image-20230420000415019.png

次へを押します。

image-20230420000528660.png

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

image-20230420000615882.png

TCP

image-20230420000633131.png

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

image-20230420000715412.png

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

image-20230420000725533.png

次へを押します。

image-20230420000732868.png

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

image-20230420000741663.png

次へを押します。

image-20230420000751011.png

終了を押します。

image-20230420000804960.png

閉じるを押します。

image-20230420000812752.png

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

image-20230422123846186.png

RDS for Oracle

Create

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

Create database を押します。

image-20230420184652173.png

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

image-20230420184843347.png

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

image-20230420185050970.png

instance type を選択し

image-20230420185142845.png

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

image-20230420185252163.png

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

image-20230420185311432.png

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

image-20230420185553112.png

Security Group を指定します。

image-20230420185617411.png

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

image-20230420185700429.png

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

image-20230420185744348.png

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

image-20230420190036838.png

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

image-20230420194715743.png

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

image-20230420195155292.png

SQL Developer で接続

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

接続を作成します。

image-20230420195236374.png

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

image-20230420195331843.png

接続できました。

image-20230420202112616.png

RDS for SQL Server

Create

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

image-20230420190140784.png

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

image-20230420190248885.png

Instance Type を選択します。

image-20230420190314719.png

Storage を選択します。

image-20230420190333517.png

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

image-20230420190417093.png

Security Group などを指定します。

image-20230420190449475.png

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

image-20230420190522819.png

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

image-20230420190642131.png

Microsoft SQL Server Management Studio

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

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

image-20230420224126898.png

接続できました。

image-20230420224158272.png

テスト用のテーブル作成

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

New Database を押します。

image-20230421153920339.png

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

image-20230421153948270.png

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

image-20230421154029435.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

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

HS_FDS_CONNECT_INFO = sqlserverdsn

ODBC 設定

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

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

image-20230420215236975.png

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

image-20230420215306683.png

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

image-20230420215340151.png

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

image-20230420215407548.png

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

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

image-20230420215553207.png

OK を押します。

image-20230420215851746.png

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

image-20230422131007166.png

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

image-20230421163634288.png

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

image-20230421163705325.png

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

image-20230421163745782.png

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

image-20230421163756871.png

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

image-20230421163813272.png

Gateway の Oracle Net Listener 設定

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

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

listener.ora の編集をします。

image-20230420224655692.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

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

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

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

SELECT * FROM testtable@dg4odbc;

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

image-20230422103847311.png

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

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

image-20230422104004681.png

無事に更新されました。

image-20230422104026331.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

3
1
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
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?