资源描述
Oracle10g通过透明网关访问 SqlServer-2008 R2
一、 准备
A机器:
操作系统:Windows Server 2003 R2 32位
安装数据库:Oracle Database 10g 第2版 (10.2.0.3.0)
安装路径:D:\oracle\product\10.2.0\db_1
安装10g数据库透明网关:10201_gateways_win32
安装路径:D:\app\asus\oracle\product\10.2.0\tg_1
B机器:192.168.1.103
操作系统:Windows 7旗舰版
安装数据库:SQL Server 2008 R2 64位
*:网关和SQL数据库在一起,便于管理。也可单独安装一台机器。
二、 配置
B机器上安装了SQL和透明网关后, 在安装目录下D:\app\asus\oracle\product\10.2.0\tg_1\tg4msql\admin下新建init<Sql2008的SID>文件,这里我沿用inittg4msql,所以sql2008数据库tg4msql必须存在
inittg4msql的配置内容如下
透明网关主机上的listener.ora的配置内容如下(端口由于1521占用,故采用1522)
# listener.ora Network Configuration File: D:\app\asus\oracle\product\10.2.0\tg_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:\app\asus\oracle\product\10.2.0\tg_1)
(PROGRAM = extproc)
)
(SID_DESC =
(SID_NAME = tg4msql)
(ORACLE_HOME = D:\app\asus\oracle\product\10.2.0\tg_1)
(PROGRAM = tg4msql)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = asus-PC)(PORT = 1522))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
重启windows监听服务,确保透明网关服务启动
透明网关主机上的tnsnames.ora的配置内容如下(端口由于1521占用,故采用1522)
# tnsnames.ora Network Configuration File: D:\app\asus\oracle\product\10.2.0\tg_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
tg4msql=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.103)(PORT = 1522))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = tg4msql)
)
(HS=OK)
)
下来在A机器上的D:\oracle\product\10.2.0\db_1\network\ADMIN\TNSNAMES.ORA添加
tg4msql =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST=192.168.1.103)(PORT=1522))
(CONNECT_DATA =(SID=tg4msql))
(HS=OK)
)
测试连通性,此时A机器上的tg4msql就会被B机器监听侦测解析到。
若报无监听错误,请检查B机器的网关监听服务是否配置正确并正常启动。
三、 创建DBLINK,并测试
在A机器上通过PL/SQL建立database link
create public database link TG4MSQL connect to SA identified by “sa” using 'tg4msql';
tg4msql就是在TNSNAMES.ORA中的标识。
查询DBlink所见里的从sql2008读取数据的表。
四、 错误分析
1) ORA-02068:以下严重错误源于 TG4MSQL
ORA-03135:连接失去联系
原因:Oracle数据库端的TNSNAMES.ora写法有误,仔细检查是否缺少(HS=OK)或括号是否多余或者有中文括号。
正确写法:
tg4msql =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST=192.168.1.103)(PORT=1522))
(CONNECT_DATA =(SID=tg4msql))
(HS=OK)
)
2)SQLSERVER端口确保可以telnet 192.168.1.103 1433通,否则执行dblink测试不通或一直等待下去(也不报错),再无响应。
解决:开始-所有程序打开如下操作
重启即正常telnet 192.168.1.103 1433通过
此时再测试执行,结果瞬间出现。
展开阅读全文