Linux ORACLE RAC 通过透明网关连接Sqlserver

客户的环境为linux rac 11.2.0.4

首先下载oracle 透明网关,正常我们安装rac只需要使用前三个软件包,其中第一个是集群软件,第二和第三是数据库软件

第四是客户端软件,而透明网关在oracle安装包的第五个软件包中.

执行runInstall.sh进行安装.安装过程中选择sqlserver的组件,

下一步,输入IP地址,实例名,数据库名

其中,实例名可以通过服务来查看到,默认一般为MSSQLSERVER

安装完成之后,下面就开始配置了,所有的配置都需要在两个节点运行

1.配置initdg4msql.ora

 这里安装完成之后自动已经配置完成了,你只需要检查一下,如果需要修改地址,可以进行修改

 cd  /u01/app/oracle/product/11.2.0/db_1/dg4msql/admin
 
 [oracle@oracle1 admin]$ cat initdg4msql.ora 
# This is a customized agent init file that contains the HS parameters
# that are needed for the Database Gateway for Microsoft SQL Server

#
# HS init parameters
#
HS_FDS_CONNECT_INFO=[10.36.250.15]:1433//ris_basic
# alternate connect format is hostname/serverinstance/databasename
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER

其中连接信息,如果不是默认的实例名则配置如下:

HS_FDS_CONNECT_INFO=[192.168.30.31]:54515//RIS//RIS_BASIC
 

如果你想配置多个数据源,则需要配置多个配置文件,例如initdg4msql1.ora  initdg4msql2.ora ...

如下:

-rw-r--r-- 1 oracle oinstall 10976 Nov 30  2011 dg4msql_cvw.sql
-rw-r--r-- 1 oracle oinstall   746 Jun  8  2007 dg4msql_tx.sql
-rw-r--r-- 1 oracle oinstall   365 Feb 21 12:15 initdg4msql_lis.ora
-rw-r--r-- 1 oracle oinstall   368 Feb 21 11:27 initdg4msql.ora
-rw-r--r-- 1 oracle oinstall   426 Feb 21 13:34 initdg4msql_pacs.ora
-rw-r--r-- 1 oracle oinstall   366 Feb 21 12:14 initdg4msql_xindian.ora
-rw-r--r-- 1 oracle oinstall   412 Feb 21 11:27 listener.ora.sample
-rw-r--r-- 1 oracle oinstall   244 Feb 21 11:27 tnsnames.ora.sample
 

2.配置listener

如果是非rac环境,直接在oracle用户下进行配置,如果是RAC则需要在grid用户下配置

在刚刚的目录下面有相关的配置模板,下面为我们的配置:

cd /u01/11.2.0/grid/network/admin
[grid@oracle1 admin]$ cat listener.ora
LISTENER=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER))))		# line added by Agent
LISTENER_SCAN1=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1))))		# line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN1=ON		# line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON		# line added by Agent

LISTENER2=
 (ADDRESS_LIST=
      (ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1531))
 )

SID_LIST_LISTENER2=
  (SID_LIST=
      (SID_DESC=
         (SID_NAME=dg4msql)
         (ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1)
         (PROGRAM=dg4msql)
      )
  )

注意:

这里我们新建了一个监听,为listener2是为了不和当前的监听冲突,配置的端口号为1531

这里的sid_name就是你上面配置的配置文件的名称

program用默认的dg4msql表示使用msql的接口

如果配置了多个数据源,则在SID_LIST下面写上多个SID的描述,例如:

SID_LIST_LISTENER = 
   (SID_LIST = 
     (SID_DESC = 
       (SID_NAME = dg4msql1)      
       (ORACLE_HOME = D:\app\Administrator\product\11.2.0\tg_1)
       (PROGRAM = dg4msql)   
     ) 
     (SID_DESC = 
       (SID_NAME = dg4msql2)   ##这里的sid name保持和文件名的后缀一致   
       (ORACLE_HOME = D:\app\Administrator\product\11.2.0\tg_1)
       (PROGRAM = dg4msql)   
     ) 
   )

3.配置tnsnames.ora

这里配置tns的服务名,由于是在oracle中调用,所以需在ORACLE_HOME下配置,而不是在GRID_HOME下配置,示例如下:

DG4MSQL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1531))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SID = dg4msql)   #这里的SID保持和listener中的一致
    )
     (HS=OK)
  )

这里的IP就是上面监听的IP地址,这里由于gateway和oracle安装在本地,所以可以写127.0.0.1

如果连接多个数据源,则写上多个,注意服务名和SID进行区分

4.创建dblink

在oracle中创建dblink,示例如下:

SQL>  create public database link to_pacs connect to dsg identified by  Dsg_123 using  'dg4msql'; 

Database link created.

这里的dg4msql就是tnsnames中配置的服务名.

测试一下dblink的连通:

SQL> select count(*) from role@to_pacs;

  COUNT(*)
----------
	 9

成功连接.

5.遇到的问题

(1) 查询报错:

SQL> select count(*) from role@to_pacs;
select count(*) from role@to_pacs

ERROR at line 1:

ORA-01017: invalid username/password; logon denied
[Oracle][ODBC SQL Server Wire Protocol driver][SQL Server]用户 'XXX' 登录失败。
{28000,NativeErr = 18456}
ORA-02063: preceding 2 lines from TO_PACS

这个问题很明显,是sqlserver中提供的用户名密码错误!

(2)查询报错:

SQL> select count(*) from role@to_pacs;
select count(*) from role@to_pacs


ERROR at line 1:
ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
[Oracle][ODBC SQL Server Wire Protocol driver][SQL
Server]无法打开登录所请求的数据库 "ris_basic"。登录失败。 {08001,NativeErr =
4060}[Oracle][ODBC SQL Server Wire Protocol driver][SQL Server]用户 'dicom'
登录失败。 {28000,NativeErr = 18456}
ORA-02063: preceding 2 lines from TO_PACS

这里是由于sqlserver中所给的用户没有访问指定数据库的权限导致.

你可能感兴趣的:(oracle,管理基础,oracle,透明网关,gateway)