oracel10g透明网关配置

转自《http://hi.baidu.com/unidba/blog/item/e7da5f8a16eef2dffc1f107b.html

 

Oracle MSSQL Transparent Gateway
2010-04-15 13:18

1. 环境: 同一主机Oracle 10.2.0.1, MSSQL 2000 sp4
可以同一个主机的Oracle/MSSQL, 也可以不同主机的, 但tg for mssql只适用在Windows主机
 
 
安装gateways时, 选择自定义时for MSSQL就行; 设置MSSQL主机和数据库信息可随便, 后面配置需要更改参数文件; 其它一样
安装成功后, 可查看C:\oracle\product\10.2.0\db_1\ tg4msql目 录情况, 即是Oracle MSSQL Transparent Gateway目录, 重点查看$ORACL_HOME\tg4msql\admin下 inittg4msql.ora
 
2. 新增配置参数文件: initmsql.ora
tg参数文件格式init<SID_NAME>.ora. 这边不使用默认参数文件 inittg4msql.ora
 
新增一个,为 initmsql.ora, 其中 SID_NAMEmsql
 
initmsql.ora内容如下:
# This is a sample agent init file that contains the HS parameters that are
# needed for the Transparent Gateway for SQL Server
#
# HS init parameters
#
HS_FDS_CONNECT_INFO="SERVER=127.0.0.1;DATABASE=bedb"
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER
 
3. 配置listener.oratnsnames.ora
 
修改如下红色部分:
 
 
listener.ora
 
# listener.ora Network Configuration File: C:\oracle\product\10.2.0\db_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
(PROGRAM = extproc)
)
    (SID_DESC =
(SID_NAME = msql)
(ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
(PROGRAM = tg4msql) #固定为tg4msql
)

)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = popgo.org)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)

tnsnames.ora
 
# tnsnames.ora Network Configuration File: C:\oracle\product\10.2.0\db_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.
MSQL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
(CONNECT_DATA =
(SID=msql)
)
(HS=OK)#这个很重要 Oracle Server要调用异构服务来处理
)

TSDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = tsdb)
)
)
RCAT =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = rcat)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
 
注意: 重启Oracle 监听器
> lsnrctl status
LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 23-11月-2008 16:4
5:06
Copyright (c) 1991, 2005, Oracle.  All rights reserved.
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=popgo.org)(PORT=1521)))
LISTENER 的 STATUS
------------------------
别名                      LISTENER
版本                      TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Produ
ction
启动日期                  23-11月-2008 16:08:42
正常运行时间              0 天 0 小时 36 分 24 秒
跟踪级 别                  off
安全性                    ON: Local OS Authentication
SNMP                      OFF
监听程序参数文件          C:\oracle\product\10.2.0\db_1\network\admin\listener.o
ra
监听程序日志文 件          C:\oracle\product\10.2.0\db_1\network\log\listener.log
监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=popgo-be.popgo.org)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC0ipc)))
服 务摘要..
服务 "PLSExtProc" 包含 1 个例程。
例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
服务 "msql" 包含 1 个例程。
例程 "msql", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

服务 "rcat" 包含 1 个例程。
例程 "rcat", 状态 READY, 包含此服务的 1 个处理程序...
服务 "rcatXDB" 包含 1 个例程。
例程 "rcat", 状态 READY, 包含此服务的 1 个处理程序...
服务 "rcat_XPT" 包含 1 个例程。
例程 "rcat", 状态 READY, 包含此服务的 1 个处理程序...
命令执行成功
 
4. 创建Oracle DBLink并测试
SQL> CREATE PUBLIC DATABASE LINK MSQLLink CONNECT TO "sa" IDENTIFIED BY "unidba" USING 'MSQL';
SQL> select * from t@MSQLLink;
         i
----------
1
SQL> insert into t@MSQLLink values(1);
已创建 1 行。
SQL> commit;
提交完成。
SQL> select * from t@MSQLLink;
         i
----------
1
1
SQL>
 
注意: Oracle, MSSQL库的用户安全, 这边测试用Oracle SYS, MSSQL sa;  可以创建专门负责透明网关连接的各自库用户
 
5. 常见错误
1).
ORA-28500: 连接 ORACLE 到非 Oracle 系统时返回此信息:
[Transparent gateway for MSSQL][H006] The init parameter <HS_FDS_CONNECT_INFO> is not set. Please set it in init<orasid>.ora file.
ORA-02063: 紧接着2 lines(源于MSSQLLINK)
 
解决: tg参数文件listener.ora 和tnsnames.ora对应的 SID_NAME设 置不正常, 这次测试为: msql
 
2). 如果在查询过程或其它操作一直查询不出来数据, 像卡在那边; 最好重启下Oracle或主机

你可能感兴趣的:(oracle,sql,C++,c,SQL Server)