您好,欢迎访问一九零五行业门户网

oracle直接读写ms sqlserver数据库(二)配置透明网关

环境说明: 数据库 版本:11gr2 透明 网关版本:11g 操作系统windows server2008_64位 oracle_home目录:d:\app\administrator\product\11.2.0\dbhome_1 ms 数据库 ip:192.168.199.245 数据库 :bwonline 默认端口:1433 oracle 数据库 ip:172.18.123.113 服
环境说明:
数据库版本:11gr2
透明网关版本:11g
操作系统windows server2008_64位
oracle_home目录:d:\app\administrator\product\11.2.0\dbhome_1
ms数据库ip:192.168.199.245 数据库:bwonline 默认端口:1433
oracle数据库ip:172.18.123.113 服务名:db1 默认端口1521
备注:现在安装数据库后安装透明网关,透明网关安装时候的home目录和数据库的home目录一样。(好处:方便服务器监听的管理)
马上进入正题:
一、透明网关参数的配置:
1.安装完gateway软件后,在oracle_home目录下有一下dg4msql的目录,这就是gateway软件的目录了。
在dg4msql/admin目录下有一个initdg4msql.ora的文件,这里的文件命名规则为initsid.ora,系统安装完毕后会自动产生一个initdg4msql.ora的文件;
2.在实际的工作中,创建一个连接ms数据库为bwonline的链接,直接拷贝默认的initdg4msql文件,修改后缀,如上图所示 。
3.编辑initbwonline.ora文件:
hs_fds_connect_info=192.168.199.245//dbonline
hs_fds_trace_level=off
hs_fds_recovery_account=recover
hs_fds_recovery_pwd=recover
hs_fds_connect_info的参数说明:
1)参数格式:hostname:port/serverinstance /databasename,其中hostname为机器名或ip地址,有网友说这里需要填写机器名才可以,但是经过实验测试机器名和ip地址都没有问题;
2)端口号:sql server2005默认的端口好为1433,也有网友介绍需要填写端口号才可以,经过测试填写和不填写都是可以的(可能测试环境不同导致测试的结果不同)
3)serverinstance是sql server的实例名,不知道什么时候sql server也搞起实例来了,一般空着就行。
4)databasename是sql server的数据库名,需要填写;
5)整个参数文件的写法本人总共尝试过4种,经测试都是可以的。
hs_fds_connect_info=192.168.199.245;database=bwonline
hs_fds_connect_info=[192.168.199.245]//bwonline
hs_fds_connect_info=192.168.199.245:1433//bwonline
hs_fds_connect_info=192.168.199.245//bwonline
二、监听文件listener的配置
1.监听文件的目录:oracle_home/network/administrator下的listener.ora文件
2.文件的格式说明:文件分成两部分:sid_list_listener和listener
sid_list_listener为监听sid的清单,listener为监听主机的信息(ip地址和端口号的设定),详细如下:
# listener.ora network configuration file: d:\app\administrator\product\11.2.0\dbhome_1\network\admin\listener.ora
# generated by oracle configuration tools.
sid_list_listener =
(sid_list =
(sid_desc =
(sid_name = dg4msql) -----前面定义sid的名称
(oracle_home = d:\app\administrator\product\11.2.0\dbhome_1) -----oracle的home目录
(program = dg4msql) -----程序的配置目录(以前部分的版本透明网关的目录为tg4msql,请大家注意)
)
(sid_desc =
(sid_name = bwonline)
(oracle_home = d:\app\administrator\product\11.2.0\dbhome_1)
(program = dg4msql)
)
)
--------加亮部分说明当在透明网关配置完相应的sid,复制加亮的这一段,修改相应的sid_name即可。
listener =
(description_list =
(description =
(address = (protocol = tcp)(host = 172.18.123.113)(port = 1521)) ----监听服务器的ip地址或hostname和端口号
(address = (protocol = ipc)(key = extproc1521))
)
)
adr_base_listener = d:\app\administrator
3.配置完以上参数,启动监听便可以看到相应的服务名:在cmd里面输入:lsnrctl status
三、配置tnsnames文件,这步比较简单,相信都很熟悉了。
1.监听文件的目录:oracle_home/network/administrator下的tnsnames.ora文件
db1 =
(description =
(address_list =
(address = (protocol = tcp)(host = 172.18.123.113)(port = 1521)) ----监听服务器的信息
)
(connect_data =
(service_name = db1) -----监听服务名称
)
(hs = ok)
)
四、透明网关的测试
1、创建dblink
脚本:
create database link bwonline
connect to sa
identified by *****
using 'bwonline';
2、查找相应ms下面的一张表,然后再oracle下面通过dblink来访问;
成功返回数据,表明相应的透明网关和dblink都是没有问题的。
3.当往sql里面插入数据时,有时会出现错误:ora-01591错误与分布式事务:
则可以用以下办法解锁:
select * from dba_2pc_pending;
找到global_tran_id=ecology.bf951efe.7.2.44893
commit force 'ecology.bf951efe.10.24.485992';
或者
rollback force 'ecology.bf951efe.10.24.485992';
后面这串字符每次都不一样。
4.还有可能出现错误:对象名  'recover.hs_transaction_log' 无效
解决办法是在sqlserver中创建这里配置的用户recover和表hs_transaction_log
hs_fds_recovery_account=recover
hs_fds_recovery_pwd=recover
表脚本:
drop table hs_transaction_log
create table hs_transaction_log(
  global_tran_id char (64) not null,
  tran_comment char (255) null
)
不过sqlserver里面创建用户比较麻烦,这里可直接改成dbo,和sa的密码。
其它类似信息

推荐信息