2

返信先: Redhat Enterprise Linux 5.4 に Oracle 11g r2 をインストールしました。Sql Server 2005 に接続しようとしています。いくつかのメモを適用した後、次のエラーが表示されます。「異種リモート エージェントでの ORA-28513 内部エラー」。


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' として、サーバーを 'local' として選択しました。

この問題を解決するためのアイデアをお待ちしております。

4

1 に答える 1

1

Heterogeneous Gateway (ODBC 接続用) ではなく、Gateway for MySQL セットアップを使用しているようです。プロセスの概要は次のとおりです

SQL Server でデータベース ユーザーを作成し、Oracle データベース リンクを介して読み取りたいデータベース/テーブルへの読み取りアクセスを付与します。

ゲートウェイ ホームで、アクセスする各 SQL Server データベースには、$OH/dg4msql/admin にある init.ora が initsid.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セクションを使用して、ゲートウェイ・ホームの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 がアクティブになるように、ゲートウェイ リスナーを停止して再起動する必要があります。注意:リロードだけでは不十分です。

リンクを作成する各データベースのリスナーの tnsnames.ora ファイルに新しい sid を追加する必要があります。データベース・リンクを作成するデータベース・ホームでもある場合を除き、ゲートウェイ・ホームでこれを行う必要はありません。

bob =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = severname.example.com)(PORT = 1690))
(CONNECT_DATA = (SID = bob))
(HS = OK)
)

注意: ホストとポートはゲートウェイ用であり、SQL Server データベース用ではありません

MS-SQL データベースへのリンクが必要な各データベースで、新しいゲートウェイ 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 ファイルを変更して、接続に合わせてパラメーターを追加できます。このようにすると、ゲートウェイを介してさまざまなデータベースを簡単に追加および管理できます。

于 2011-03-24T13:16:15.260 に答える