5
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.

Oracle Database Gatewayを用いてOCI Database System 19cとMS SQL Server 2016を接続する方法

Last updated at Posted at 2019-10-08

2021/12/15 更新

  • 本記事を作成した時にDBCSのデータベースバージョンは19.3でしたから、Oracle Database Gateway for SQL Serverは無事でインストールできましたが、現時点(2021年12月)ではDBCSのデータベースのデフォルトバージョンは19.11になっておりますので、Oracle Database Gateway for SQL Serverをインストールする時にRU 19.11とのパッチコンフリクトの問題でインストールできなくなります。

  • Oracle Database Gateway for SQL Server はライセンスとして有償製品かつ(1コンピュータ ¥2,100,000 )、Processorライセンスではなく、Computerライセンスであることを注意してください。詳細は下記2つリンクの内容を参照してください。

はじめに

Oracle Cloud Infrastructure(以下OCI) では、Oracle DB のマネージドサービス(以下OCI Database System)を提供しています。
この記事は、OCI Database System に Oracle Database Gateway を追加でインストールして、Microsoft の SQL Server 2016 と DBlink を設定して、Oracle DB から透過的に SQL Server を使用する方法を紹介します。

前提条件

次サーバーが既に存在しているものとします。

  • OCI Database System 19c
    image.png

  • MS SQL Server 2016
    image.png

OCI Database SystemのVNCサーバーのセットアップ

事前確認

Oracle Universal Installerを使用してOracle Database GatewayをOCI Database Systemにインストールするため、最初にOCI Database SystemにVNCサーバーを設定する必要があります。

デフォルトのopcユーザーでOCI Database Systemにログインし、Linuxバージョンを確認します。

image.png

OCI Database System 19cのベースイメージはOracle Linux 7.5であり、GUI環境はベースイメージに含まれているので、インストールする必要はありません。

image.png

VNCサーバーの構成

oracleユーザーに切り替えて、VNCサーバーのパスワードを設定します。

su - oracle
vncpasswd

image.png

VNCサーバーを起動し、VNCサーバーが使用しているポートの状態を確認します。

vncserver
vncserver -list
netstat -ltp4 | grep 590

image.png

iptablesとVCN Security Listの構成

iptables

デフォルトでは、VNCサーバーのポート590XはOCI Database Systemのiptablesで許可されていないため、次のコマンドを実行してポート5901を開く必要があります。

# check the iptables
iptables -L
# allow the inbound of port 5901
iptables -I INPUT 6 -p tcp -m state --state NEW -m tcp --dport 5901 -j ACCEPT

image.png

VCN Security List

また、ポート5901が、OCI Database Systemが存在するVCN(Virtual Cloud Network)のセキュリティリストによってブロックされないようにする必要があります。

簡単にするために、このVCNへのすべての入力トラフィックを許可します。
image.png

VNC Viewerから接続

デスクトップで、TigerVNC ViewerからOCI Database Systemに接続して見ましょう。

image.png

パスワードを入力して[OK]をクリックします

image.png

以下のように、VNC ViewerでOCI Database Systemのターミナルを表示できるはずです。
image.png

Oracle Database Gatewayのインストール

ダウンロード

Oracle Database Gateway 19cはこちらからダウンロードできます。

image.png

次に、Oracle Database Gateway 19cのインストールパッケージをOCI Database Systemに転送します。

image.png

インストール

VNC Viewerを開き、Oracle Database Gatewayインストールパッケージを配置した場所に移動して解凍します。

image.png

解凍したディレクトリgatewayに移動して、./runInstallerファイルを実行します。

image.png

Oracle Universal Installerインターフェイスがポップアップされ、[Next]をクリックしてゲートウェイをOracleホームディレクトリにインストールできます

image.png

Oralce Database Gateway for Microsoft SQL Serverを選択し、[Next]をクリックします。

image.png

次に、ターゲットSQL Serverの重要な情報を入力する必要があります。

image.png

  • Host Name: SQL ServerのパブリックIPアドレスまたはホスト名
  • Port Number: 1433はSQL Serverのデフォルトのポート番号です。他のポートを使用している場合は、変更してください
  • Server Name: SQL Serverのインスタンス名。以下に示すように、SQL Server Configuration Managerから取得できます
  • Database Name: 接続したいデータベース名

Figure: SQL Server instance name
image.png

概要を確認し、[Install]をクリックします
image.png

rootユーザーとしてスクリプトを実行します
image.png

image.png

スクリプトを実行し、VNC Viewerに戻って[OK]をクリックすると、成功のメッセージが表示されます。
image.png

これまで、Oracle Database Gateway 19cがインストールされています。

Oracle Database Gatewayの構成

事前確認

OCI Database System にログインし、oracleユーザーに切り替えます。
次のディレクトリに移動し、Oracle Database Gatewayの構成を開始します。

# go to the directory
cd $ORACLE_HOME/dg4msql/admin
# have a look at the gateway initialization file
cat initdg4msql.ora

image.png

すべてが適切に見え、必要なすべてのSQL Server情報がここに反映されます。
ファイル tnsnames.ora.sample listener.ora.sampleを開き、その内容を使用して設定を行います。

tnsnames.oraの更新

ユーザーoracleとして作業していることを確認してください。 ディレクトリ$ORACLE_HOME/network/adminに移動し、tnsnames.oraファイルを更新します。 tnsnames.ora.sampleからコンテンツをコピーし、tnsnames.oraに貼り付けます。HOSTをhostanmeに変更することを忘れないでください。

image.png

listener.oraの更新

OCI Database SystemはシングルインスタンスRACとして構築されており、ユーザーgridはリスナーの所有者なので、ユーザーgridに切り替える必要があります。 次に、listener.ora.sampleからコンテンツ(SID_LIST_LISTENERの部分)をコピーして、listener.oraに貼り付けます。
以下のスクリーンショットを確認してください。

# switch to user grid
sudo su - grid
# move to the listener directory
cd $ORACLE_HOME/network/admin
vim listener.ora

image.png

リスナーをリロードして、ステータスを確認します。 リスナー dg4msqlが登録され、正常に機能していることがわかります。

lsnrctl reload
lsnrctl status

image.png

ここまで実行することで、SQL Serverに接続するためのOracle Database Gatewayの構成は完了です。
次に、動作確認を行います。

Oracle Database Gatewayの検証

ユーザーoracleとしてOCI Database Systemにログインし、sysとしてデータベースに接続します。

sudo su - oracle
sqlplus / as sysdba
-- change to pdb
alter session set container=pdb1;
-- create database link to the SQL Server
create public database link xucheng connect to "SQL_SERVER_USER" identified by "SQL_SERVER_PASSWORD" using 'dg4msql';
-- query table [trex] through the database link [xucheng]
select * from trex@xucheng;

データベースリンクはデータベース内のオブジェクトとして作成されるため、明示的に削除しない限り使用することが出来ます。再起動しても同様です。
上記のサンプルクエリでは、trexはSQL Serverデータベースxuchengのテーブル名を表しています。また、サンプルクエリのxuchengは、作成したデータベースリンクです。 このデータベースリンクを使用して、SQL Serverのデータベースに接続します。 したがって、基本的な使用法はselect * from <TARGET_TABLE_NAME>@<DB_LINK>なります

OCI Database Systemでは、デフォルトでglobal_namesパラメータがTUREに設定されているため、ORA-02085エラーが発生します。
image.png

global_namesをFALSEに設定して、セッションレベルでORA-02085の問題を解決するか、システムレベルでこのパラメーターを変更することもできます。

ALTER SESSION SET global_names = FALSE;
select * from trex@xucheng;

以下のスクリーンショットでわかるように、SQL Serverと同じクエリ結果を取得できます。
image.png

これで、OCI Database System 19cインスタンスからSQL Serverデータベース連携することが出来ました。

参照資料

5
1
4

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
5
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?