SQL Server2005安装系统Windows8,网址:192.183.3.147,端口1433,连接用户/密码:sa/123456,测试数据库TEST,测试表TEST1,开启允许远程连接,关闭相关防火墙,装有Oracle的服务器执行telnet 192.183.3.147 1433成功,配置成功!
Oracle 11.2.0.1.0与Gateway安装环境为Linux ,网址192.183.3.17,对于监听端口,Oracle数据库和透明网关是可以共享网关的,所以无需另外设置其他端口,当然如果想用不同监听也可以将网关监听端口和TNS端口改一下,本文将对这两种情况都加以测试,$ORACLE_HOME为/usr/oracle/product。
相关信息如下表:
Gateway安装需注意以下几点:
Gateway安装目录建议与Oracle的安装目录一致,本案例Oracle的安装目录为/usr/oracle/product,安装完成后会有名为dg4msql的文件夹产生,它就是gateway的软件目录;
参详网络文摘gateway是安装在ORACLE_HOME新建的文件夹下,因为gateway直接安装在数据库ORACLE_HOME路径下面,会覆盖oracle数据库一些路径下的文件,但是本案例当时未深究直接装在了/usr/oracle/product下,目前使用并未出现问题,后面看看重新安装在新建文件夹下情况如何!
配置包括Gateway的init文件、oracle的listener文件和tnsnames文件。
该文件目录为$ORACLE_HOME/dg4msql/admin,本文目录为/usr/oracle/product/dg4msql/admin/initdg4msql.ora。这个文件是Gateway 安装完成后自动生成的,文件名规则为initSID.ora,这里我们要连接的MS数据库为test,直接拷贝默认的initdg4msql文件,修改后缀inittest.ora。
文本如下:
HS_FDS_CONNECT_INFO=[192.183.3.147]:1433//test # alternate connect format is hostname/serverinstance/databasename HS_FDS_TRACE_LEVEL=OFF HS_FDS_RECOVERY_ACCOUNT=RECOVER HS_FDS_RECOVERY_PWD=RECOVER
3.1.2 Oracle之listener.ora配置
监听文件为$ORACLE_HOME/NETWORK/ADMIN下的listener.ora文件,本文目录/usr/oracle/product/network/admin/listener.ora。
文件分成SID_LIST_LISTENER和LISTENER两部分,SID_LIST_LISTENER为监听SID的清单,LISTENER为监听主机的信息(IP地址和端口号的设定),因为这里Gateway和Oracle数据库共享一个监听端口,所以只需在已有的SID_LIST增加Gateway的监听配置内容:
(SID_DESC= (SID_NAME=gateway_sid)--Gateway_sid,这里填写gateway的SID名字,要与init文件后缀一致 (ORACLE_HOME=oracle_home_directory)--Gateway的安装目录 (PROGRAM=dg4msql)--Gateway程序的配置目录 )
本文直接在已有的监听文本中加入红色区域的内容,该红色区域的内容可从/usr/oracle/product/dg4msql/admin/ listener.ora.sample中直接复制过来:
文本如下:
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1522)) (ADDRESS = (PROTOCOL = TCP)(HOST = nn)(PORT = 1522)) ) ) SID_LIST_LISTENER = ( SID_LIST = (SID_DESC = (GLOBAL_DBNAME = orcl) (ORACLE_HOME = /usr/oracle/product) (SID_NAME = orcl) ) (SID_DESC = (SID_NAME = test) (ORACLE_HOME = /usr/oracle/product) (PROGRAM = dg4msql) ) ) ADR_BASE_LISTENER = /usr/oracle
Tnsnames.ora目录为$ORACLE_HOME/network/admin,本文目录为/usr/oracle/product/network/admin/tnsnames.ora,本文在已有的tnsnames.ora增加gateway的服务配置信息,模板如下(也可从/usr/oracle/product/dg4msql/admin/tnsnames.ora.sample中获得配置信息模板):
connect_descriptor= --连接gateway的服务名 (DESCRIPTION= (ADDRESS= (PROTOCOL=TCP) (HOST=host_name)--Gateway所在服务器IP或者服务器名 (PORT=port_number)--Gateway的监听端口号 ) (CONNECT_DATA= (SID=gateway_sid))--Gateway_sid,这里填写gateway的SID名字,要与init文件后缀一致 (HS=OK))--表示该连接用于非Oracle系统</span>
本文配置如下红色区域的内容,
文本如下:
LISTENER_ORCL = (ADDRESS = (PROTOCOL = TCP)(HOST = nn)(PORT = 1522)) ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = nn)(PORT = 1522)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) ) test= (DESCRIPTION= (ADDRESS= (PROTOCOL=TCP) (HOST=192.183.3.17) (PORT=1522) ) (CONNECT_DATA= (SID=test)) (HS=OK))
查看服务是否可以连通:
通过192.183.3.17的sqlplus连接SQL Server查询测试数据库测试表的数据,如下:
创建数据库链接
SQL> Create database link gw connect to sa identified by "123456" using 'test';
SQL> select * from test1@gw;
SQL Server查询结果如下:
返回数据一致,测试成功!
Oracle官方文档中建议,如果一台服务器中已有其他Oracle的监听在运行,那么建议重新设置另外一个port_number给Gateway,当然前面一节讲的Oracle数据库与Gateway共享一个监听也是可以的。本节就Oracle与Gateway使用不同端口进行简单介绍,其中Gateway安装情况与前面一样,依然是安装在$ORACLE_HOME下,这里就不赘述,下面就配置情况作简单说明。
inittest.ora文件不变,跟上节完全一样,这里不赘述。
配置$ORACLE_HOME/network/admin下面的listener.ora,默认情况下该文件中只配置一个listener,下面我们为Gateway配置监听LISTENERGW与SID_LIST_LISTENERGW(图中红色区域),注意SID_LIST_ *这里的要和LISTENER*名称一致,SID_LIST_LISTENERGW中的SID_DESC注册要提供服务的数据库实例名,这样LISTENERGW才能够提供服务,这里可以温故下动态与静态监听的知识。
文本内容如下:
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1522)) (ADDRESS = (PROTOCOL = TCP)(HOST = nn)(PORT = 1522)) ) ) SID_LIST_LISTENER = ( SID_LIST = (SID_DESC = (GLOBAL_DBNAME = orcl) (ORACLE_HOME = /usr/oracle/product) (SID_NAME = orcl) ) ) LISTENERGW = (ADDRESS_LIST= (ADDRESS=(PROTOCOL=tcp)(HOST=192.183.3.17)(PORT=1521)) ) SID_LIST_LISTENERGW = (SID_LIST = (SID_DESC = (SID_NAME = test) (ORACLE_HOME = /usr/oracle/product) (PROGRAM = dg4msql) ) ) ADR_BASE_LISTENER = /usr/oracle
关闭已启动的监听,分别开启Oracle数据库以及gateway的监听:
[oracle@nn admin]$ lsnrctl start listener
[oracle@nn admin]$ lsnrctl start LISTENERGW
依然是配置$ORACLE_HOME/network/admin下面的tnsnames.ora文件,如图中红色区域:
文本如下:
LISTENER_ORCL = (ADDRESS = (PROTOCOL = TCP)(HOST = nn)(PORT = 1522)) ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = nn)(PORT = 1522)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) ) testport= (DESCRIPTION= (ADDRESS= (PROTOCOL=TCP) (HOST=192.183.3.17) (PORT=1521) ) (CONNECT_DATA= (SID=test)) (HS=OK))
看新配置的服务是否连通:
[oracle@nn admin]$ tnsping testport
创建连接测试一下能否查到MS的数据:
SQL> Create database link gw_port connect to sa identified by "123456" using 'testport'; SQL> select * from test1@gw_port;
测试成功!