zoukankan      html  css  js  c++  java
  • oracle直接读写ms sqlserver数据库(二)配置透明网关

    环境说明:

    数据库版本:11gR2

    透明网关版本:11g

    操作系统Windows Server2008_64位

    ORACLE_HOME目录:D:appAdministratorproduct11.2.0dbhome_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:appAdministratorproduct11.2.0dbhome_1 etworkadminlistener.ora

    # Generated by Oracle configuration tools.

    SID_LIST_LISTENER =

    (SID_LIST =

    (SID_DESC =

    (SID_NAME = dg4msql) -----前面定义SID的名称

    (ORACLE_HOME = D:appAdministratorproduct11.2.0dbhome_1) -----ORACLE的HOME目录

    (PROGRAM = dg4msql) -----程序的配置目录(以前部分的版本透明网关的目录为tg4msql,请大家注意)

    )

    (SID_DESC =

    (SID_NAME = bwonline)

    (ORACLE_HOME = D:appAdministratorproduct11.2.0dbhome_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:appAdministrator

    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的密码。

  • 相关阅读:
    BASIC-2 01字串
    BASIC-1 闰年判断
    BASIC-11 十六进制转十进制
    IO流之File类
    集合-下
    集合-上
    java常用类-下
    关于String的一些基础小题目
    java常用类-上
    异常
  • 原文地址:https://www.cnblogs.com/tuyile006/p/4145729.html
Copyright © 2011-2022 走看看