DG4MSQL問題を使用したSQL ServerへのOracle 11GR2接続
-
09-10-2019 - |
質問
それが応答する可能性のある人に、Redhat Enterprise Linux 5.4にOracle 11g R2をインストールしました。 SQL Server 2005に接続しようとしています。いくつかのメモを適用した後、以下のエラーが得られた結果です。
listener.oraは以下のとおりです。
[oracle@oracledb admin]$ less listener.ora
)
(SID_DESC =
(SID_NAME = dg4msql)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(PROGRAM = dg4msql)
(ENVS=LD_LIBRARY_PATH=/u01/app/oracle/product/11.2.0/db_1/dg4msql/lib:/u01/app/oracle/product/11.2.0/db_1/lib)
)
)
LOGGING_LISTENER = on
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracledb)(PORT = 1521))
)
)
ADR_BASE_LISTENER = /u01/app/oracle
TRACE_LEVEL_LISTENER = on
tnsnames.oraは以下のとおりです。
[oracle@oracledb admin]$ less tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
fasdat =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracledb)(PORT = 1521))
)
(CONNECT_DATA =
(SID = fasdat)
)
)
dg4msql =
(DESCRIPTION =
(ADDRESS =
(PROTOCOL= TCP)
(HOST = oracledb)
(PORT = 1521)
)
(CONNECT_DATA=
(SID=dg4msql) )
(HS=OK))
init4msql.oraは次のとおりです。
[oracle@oracledb admin]$ less initdg4msql.ora
# This is a customized agent init file that contains the HS parameters
# that are needed for the Database Gateway for Microsoft SQL Server
#
# HS init parameters
#
HS_FDS_CONNECT_INFO=192.168.1.48:1433//NAVISION
# alternate connect format is hostname/serverinstance/databasename
#HS_FDS_TRACE_LEVEL=0
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER
#HS_LANGUAGE=turkish_turkey.WE8ISO8859P9
HS_NLS_NCHAR=WE8ISO8859P9
#HS_FDS_TRACE_LEVEL=DEBUG
「DG4MSQL」という名前のSQL Server 2005でシステムDSNをセットアップし、ドライバーを「SQL Server」として選択し、サーバーを「ローカル」として選択しました
この問題を解決するためのアイデアを聞いてうれしいです。
解決
不均一なゲートウェイ(ODBC接続用)ではなく、MySQLセットアップにゲートウェイを使用しているようです。プロセスの概要を次に示します
SQL Serverでデータベースユーザーを作成し、Oracle Databaseリンクから読みたいデータベース/テーブルへのアクセスを読み取ります。
ゲートウェイホームでは、アクセスする各SQL Serverデータベースには、initsid.oraの$ oh/dg4msql/adminにinit.oraがあり、sidはリンクで使用されるデータベースの名前です(initbobなどがあります。 Ora)、それを作成します
HS_FDS_CONNECT_INFO=msserver1:1234//Example_Database
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER
HS_TRANSACTION_MODEL=READ_ONLY
これで、既存のSID_LIST内の追加のSID_DESCセクションを使用して、Gateway HomeのListener.oraに新しいSIDを追加する必要があります。
(SID_DESC =
(SID_NAME=bob)
(ORACLE_HOME=/oracle/gateway/product/11.2.0)
(ENVS=LD_LIBRARY_PATH=/oracle/gateway/product/11.2.0/dg4msql/driver/lib;/oracle/gateway/product/11.2.0/lib)
(PROGRAM=dg4msql)
)
これで、新しいSIDがアクティブになるように、ゲートウェイリスナーを停止して再起動する必要があります。 nbリロードでは十分ではありません。
これで、リンクを作成する各データベースのリスナーにtnsnames.oraファイルに新しいSIDを追加する必要があります。データベースリンクを作成するデータベースホームでもない限り、ゲートウェイホームでこれを行う必要はありません。
bob =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = severname.example.com)(PORT = 1690))
(CONNECT_DATA = (SID = bob))
(HS = OK)
)
NB:ホストとポートは、SQL Serverデータベース用ではなくゲートウェイ用です
MS-SQLデータベースへのリンクが必要な各データベースでは、新しいGateway SIDへのデータベースリンクを作成する必要があります。
CREATE PUBLIC DATABASE LINK bob
CONNECT TO "ms_user" IDENTIFIED BY "ms-passwd" USING 'bob';
ここで、MS-USERとMS-PassWordは、最初に作成したSQL Serverユーザーです。
これで、新しいデータベースリンクをテストできます
SELECT COUNT(*) FROM "Table_Name"@bob;
これが機能したら、initsid.oraファイルを変更して、接続に合わせてパラメーターを追加できます。この方法で行うと、ゲートウェイを介して多くの異なるデータベースを簡単に追加および管理できます。