Oracle10g透明网关(oracle连sql server)
这里有3台服务器,一台装oracle10g服务器,1台sql server服务器,1台装windows系统的服务器(作为oracle透明网关服务器,因为oracle11g以前的透明网关不支持linux的系统)
具体的ip如下:
1.Oracledb服务器 IP:192.168.1.131 2.Sql server服务器 IP:192.168.10.30 3.透明网关服务器 IP:192.168.10.90 下面是详细步骤:
一.在oracle官方网站下载透明网关的安装软件大概有200多M,我安装在192.168.10.90的D:\\oracle\\product\\10.2.0下,默认情况下,安装透明网关时会在D:\\oracle\\product\\10.2.0\g_1\g4msql\\admin下生成一个默认的参数文件:inittg4msql.ora,它的sid是tg4mssql,你可以使用这个文件,也可以新建一个文件。在我们的sql server服务器上执行select db_name() 显示其sid为location,所以我们新建一个名为initlocation.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=192.168.10.30; DATABASE=location\"
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER HS_FDS_RECOVERY_PWD=RECOVER
HS_FDS_CONNECT_INFO的设置有多种格式,如:
HS_FDS_CONNECT_INFO=server_name.db_name,但这种写法server_name不能为IP,且端口必须为默认的1433,如:
HS_FDS_CONNECT_INFO=sqlserver.jss
二.在透明网关上配置监听,监听文件
listener.ora
在
D:\\oracle\\product\\10.2.0\g_1\\NETWORK\\ADMIN目录下,文件内容如下:
# listener.ora Network Configuration File:
D:\\oracle\\product\\10.2.0\g_1\\network\\admin\\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:\\oracle\\product\\10.2.0\g_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = tg4msql)
(SID_NAME = location) /*在这里的SID_NAME必须和上一步中的SID_NAME一致*/
(ORACLE_HOME = D:\\oracle\\product\\10.2.0\g_1)
(PROGRAM = tg4msql)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.90)(PORT = 1521))
)
)
三.在透明网关服务器上启动监听 LSNRCTL> start 启动tnslsnr: 请稍候...
TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production
系统参数文件为D:\\oracle\\product\\10.2.0\g_1\\network\\admin\\listener.ora 写入D:\\oracle\\product\\10.2.0\g_1\\network\\log\\listener.log的日志信息 监
听
:
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\\\.\\pipe\\EXTPROC1ipc)))
监
听
:
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.10.90)(PORT=1521)))
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
LISTENER 的 STATUS
------------------------
别名 LISTENER
版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Produ
ction
启动日期 12-1月 -2010 10:26:29 正常运行时间 0 天 0 小时 0 分 2 秒 跟踪级别 off
安全性 ON: Local OS Authentication SNMP OFF 监
听
程
序
参
数
文
件
D:\\oracle\\product\\10.2.0\g_1\\network\\admin\\listener.o
ra 监
听
程
序
日
志
文
件
D:\\oracle\\product\\10.2.0\g_1\\network\\log\\listener.log
监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\\\.\\pipe\\EXTPROC1ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.10.90)(PORT=1521)))
服务摘要..
服务 \"PLSExtProc\" 包含 1 个例程。
例程 \"PLSExtProc\状态 UNKNOWN, 包含此服务的 1 个处理程序... 服务 \"tg4msql\" 包含 1 个例程。
例程 \"location\状态 UNKNOWN, 包含此服务的 1 个处理程序... 命令执行成功 LSNRCTL>
到这一步,在透明网关服务器上的工作全部完成。 四.在192.168.1.131上配置tnsname.ora
在里面添加:
location =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.10.90)(PORT = 1521))
)
(CONNECT_DATA =
(SID = location)
)
(HS = OK)
)
五.创建数据库链接
在192.168.1.131中的sql*plus上执行 drop public database link db_sql2; create public database link db_sql2
connect to \"sa\" identified by \"wuhan_wri3g\" using 'location';
执行完后,如果配置成功就可以从192.168.1.131上访问sql server中的数据了例如 desc t_city@db_sql2;
select * from dbo.t_sid@db_sql2;
如果这个sql有记录返回,说明透明网关没有问题。
oracle的透明网关向前兼容做得不好,oracle 9i数据库不能通过10g的透明网关访问sqlserver。
补充:如果想通过透明网关连接多个sql server数据库,则要在第一步中,新建相应SID_NAME的init (SID_DESC = (GLOBAL_DBNAME = tg4msql) (SID_NAME = XXXX) /*在这里的SID_NAME必须和上一步中的SID_NAME一致*/ (ORACLE_HOME = D:\\oracle\\product\\10.2.0\g_1) (PROGRAM = tg4msql) ) 然后在第四步中的tnsname.ora中添加相应的网络服务名解释 XXXX= (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST =192.168.10.90)(PORT = 1521)) ) (CONNECT_DATA = (SID = xxxx) ) (HS = OK) ) 其余步骤一样 因篇幅问题不能全部显示,请点此查看更多更全内容