1安装环境介绍

  •  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。

       相关信息如下表:

2 Gateway安装

Gateway安装需注意以下几点:

  •  Gateway安装目录建议与Oracle的安装目录一致,本案例Oracle的安装目录为/usr/oracle/product,安装完成后会有名为dg4msql的文件夹产生,它就是gateway的软件目录;

  •  参详网络文摘gateway是安装在ORACLE_HOME新建的文件夹下,因为gateway直接安装在数据库ORACLE_HOME路径下面,会覆盖oracle数据库一些路径下的文件,但是本案例当时未深究直接装在了/usr/oracle/product下,目前使用并未出现问题,后面看看重新安装在新建文件夹下情况如何!

配置详情

 配置包括Gatewayinit文件、oraclelistener文件和tnsnames文件。

3.1 OracleGateway使用同一端口

3.1 .1 Gateway initSID.ora文件

该文件目录为$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 Oraclelistener.ora配置

监听文件为$ORACLE_HOME/NETWORK/ADMIN下的listener.ora文件,本文目录/usr/oracle/product/network/admin/listener.ora

文件分成SID_LIST_LISTENERLISTENER两部分,SID_LIST_LISTENER为监听SID的清单,LISTENER为监听主机的信息(IP地址和端口号的设定),因为这里GatewayOracle数据库共享一个监听端口,所以只需在已有的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


配置完监听,重启监听:


3.1.3 Oracletnsnames.ora配置

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))

查看服务是否可以连通:

3.2连接测试

通过192.183.3.17sqlplus连接SQL Server查询测试数据库测试表的数据,如下:

  • 创建数据库链接

SQL> Create database link gw connect to sa identified by "123456" using 'test';

  •  测试连接是否成功

SQL> select * from test1@gw;

SQL Server查询结果如下:

返回数据一致,测试成功!

4.1 OracleGateway使用不同端口

Oracle官方文档中建议,如果一台服务器中已有其他Oracle的监听在运行,那么建议重新设置另外一个port_numberGateway,当然前面一节讲的Oracle数据库与Gateway共享一个监听也是可以的。本节就OracleGateway使用不同端口进行简单介绍,其中Gateway安装情况与前面一样,依然是安装在$ORACLE_HOME下,这里就不赘述,下面就配置情况作简单说明。

4.1.1 GatewayinitSID.ora文件配置

inittest.ora文件不变,跟上节完全一样,这里不赘述。

4.1.2 Oraclelistener.ora文件配置

配置$ORACLE_HOME/network/admin下面的listener.ora,默认情况下该文件中只配置一个listener,下面我们为Gateway配置监听LISTENERGWSID_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

4.1.3 Oracletnsnames.ora文件配置

依然是配置$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

4.2 测试连接

创建连接测试一下能否查到MS的数据:

SQL> Create database link gw_port connect to sa identified by "123456" using 'testport';
SQL> select * from test1@gw_port;

测试成功!



Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐