环境说明:

数据库版本: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的密码。

oracle直接读写ms sqlserver数据库(二)配置透明网关的更多相关文章

  1. oracle直接读写ms sqlserver数据库(一)如何下载oracle database gateway for sqlserver

    想从Oracle实时同步数据到Ms Sqlserver,需要在Oracle里面直连Sqlserver进行数据的读写,可以在Oracle服务器上安装oracle database gateway for ...

  2. SQLServer数据库镜像配置

    目录 一.目标...2 二.前提条件.限制和建议...2 三.设置概述...2 四.安装Sql Server 2008 enterprise X64.3 4.1.安装.NET3.5.3 4.2.安装时 ...

  3. Oracle SQL developer 连接 MySQL 数据库安装配置

    1. 下载 JDBC driver for MySQL 下载链接: https://dev.mysql.com/downloads/connector/j/ 下载成功后,解压缩,得到 mysql jd ...

  4. MS SQLserver数据库安装

    SQL2008的安装 1,双击打开setup安装文件 2,点击“全新安装或向现有安装添加功能” 3,安装程序支持规则,安装完之后,点击确定 4,输入产品的密钥,点击下一步 5,弹出“安装程序支持文件” ...

  5. linux 使用 pyodbc 访问 ms sqlserver 数据库

    一.安装linux下Sqlserver的驱动程序: 我们先来安装SqlServer的驱动程序,再安装ODBC相关的,目的是想尽快可以进行测试,因为在安装完Freetds之后,我们马上就可以在linux ...

  6. Oracle HA 之 基于活动数据库复制配置oracle 11.2 dataguard

    规划:主库:db_name=dbking               db_unique_name=dbkingpri               备库:db_name=dbking          ...

  7. Oracle通过ODBC链接SqlServer数据库

    原网址:https://www.cnblogs.com/jijm123/p/11598515.html 第一步.创建ODBC数据源 这一步要考虑数据源是32位还是64位的问题,其实就是选择不同的exe ...

  8. ms sqlserver数据库主文件特别大怎么办

    因为项目中需要复制数据库,作为外网测试的数据库,但是数据库特别大,复制特别费劲,即使只复制主文件,主文件也特别大. 然后百度了下,发现数据库有个收缩功能,数据库右键——任务——收缩,可以对数据库进行收 ...

  9. ms sqlserver数据库建索引

    索引分类:从物理结构上可分为两种:聚集索引和非聚集索引 (此外还有空间索引.筛选索引.XML索引) 因为聚集索引是索引顺序与物理存储顺序一致,所以只能建一个. 聚集索引就是把数据按主键顺序存储: 因为 ...

随机推荐

  1. 史上最全的浏览器 CSS & JS Hack 手册

    浏览器渲染页面的方式各不相同,甚至同一浏览器的不同版本(“杰出代表”是 IE)也有差异.因此,浏览器兼容成为前端开发人员的必备技能.如果有一份浏览器 Hack 手册,那查询起来就方便多了.这篇文章就向 ...

  2. 洛谷 P2089 烤鸡

    看了前面大佬的代码,发现这道题的解题思路都大同小异. 首先肯定要定义一个变量累加方案数量,因为方案数量要最先输出,所以所有方案要先储存下来.个人不喜欢太多数组,就只定义一个字符串. 然后我们发现只有1 ...

  3. Python 入门基础3 --流程控制

    今日目录: 一.流程控制 1. if 2. while 3. for 4. 后期补充内容 一.流程控制--if 1.if判断: # if判断 age = 21 weight = 50 if age & ...

  4. linux的内存文件系统tmpfs

    在centos系统上自带的内存文件系统.这个tmpfs是temporary file system的意思. 一. 使用命令 df -h 查看tmpfs是否正在运行. Filesystem Size U ...

  5. Mini Twitter

    Implement a simple twitter. Support the following method: postTweet(user_id, tweet_text). Post a twe ...

  6. apropos找命令助手

    apropos (意即"关于")能够搜索 Linux 帮助文档来帮你找到你想要的命令.比如说,你不记得你用的发行版用的什么防火墙工具了.你可以输入 apropos "fi ...

  7. memcache 键名的命名规则以及和memcached的区别

    2014年3月27日 07:47:46 Keys---- Data stored by memcached is identified with the help of a key. A keyis ...

  8. linux:根据名称杀死进程

    参考网址:https://www.cnblogs.com/foohack/p/5359985.html pkill -f "process_name_pattern"

  9. C++学习笔记(原创)

    以下内容为自己一年多的C++学习心得,纯原创,转载请注明源地址. 一年多的C++学习过程中,自己阅读了很多C++经典著作,有<effective c++>,<more effecti ...

  10. 算法笔记(C++)

    一.基础篇 C++标准模板库(STL) 1.vector 可以理解为“变长数组” #include <vector> vector<typename> name; vector ...