适用于:
Oracle Database Gateway for SQL Server - Version: 11.1.0.6 to 12.0.0.0 - Release: 11.1 to
HP-UX PA-RISC (64-bit)
IBM AIX on POWER Systems (64-bit)
Oracle Solaris on SPARC (64-bit)
HP-UX Itanium
Linux x86-64
Oracle Transparent Gateway for Microsoft SQL Server - Version: 11.1.0.6 to 12.0.0.0
目的:
从oracle 11g开始,为在64位Unix操作系统上的MS SQL Server提供了数据库网关。
11g的安装步骤与以前发行的的稍微有所不同,并且这里的提示将解释每一步在Linux上如何配置。
这个网关需要认证老的oracle 9.2.0.8发行版本,或者10.2.0.3版本。但是请注意这些让每一个数据库完全工作的关于v11网关的需要的补丁。
使用“我的oracle支持”,在页的顶部的选项“Patch & Updates”,运行简单的查询就能找到补丁。选择“Simple Search”并且在框中输入补丁号码《5965763》,然后在平台或者语言列表中选择适当的平台。
如果在平台上没有可用的可选择的补丁对应你的数据库版本(i.e. 9.2.0.8, 10.1.0.5, or 10.2.0.3),请登陆服务请求,向Oracle Support要求一个对应你的平台的‘unpublished’Bug《5965763》后台端口。
从oracle10.2.0.4以后开始,网关兼容性补丁包含在所有的oracle数据库补丁集中。
解决:
怎样在64位Unix操作系统(例如Sparc Solaris,AIX,HP-UX RISC,HP-UX Itanium 和Linux x86-64bit)上安装DG4MSQL(oracle database gateway for ms sql server)。
附注:HP-UX RISC DG4MSQL是32位的,并且代替了LD_LIBRARY_PATH SHLIB_PATH的需要。
Linux平台上MS SQL Server的 Oracle数据库网关来自一个单独的CD。它可以安装在一个已经存在的oracle_home下(请注意,如果oracle_home包含一个已经打好补丁的数据库版本,你必须重新运用这个补丁集,因为网关安装器可能用基础版本覆盖已经存在的补丁库。重新获取正确的环境,已经申请的补丁集需要重新申请)。
安装之后,下列项必须配置:
1) listener
2) tnsnames
3) init<SID>.ora
4) Oracle database
1) The listener needs a new SID entry like the following:
(SID_NAME=dg4msql)
(ORACLE_HOME=/home/oracle/oracle/product/11.1)
(ENVS=LD_LIBRARY_PATH=/home/oracle/product/11.1/dg4msql/driver/lib:/home/oracle/product/11.1/lib)
(PROGRAM=dg4msql)
请根据你的安装,更正ORACLE_HOME entry和ENVS entry。
我们强烈推荐添加LD_LIBARARY_PATH到监听器配置文件(listener.ora)中,以避免一些和已经存在的ODBC桥管理器发生冲突。
LD_LIBARARY_PATH必须包含全部合格的$ORACLE_HOME/lib和$ORACLE_HOME/dg4msql/driver/lib路径。请不要再ENVS路径中使用$ORACLE_HOME变量。
注意:
1. 在HP-UX平台上安装时请设置SHLIB_PATH 代替LD_LIBRARY_PATH,网关在HP-UX RISC上仍然是32位的,从而需要SHLIB_PATH设置。
2. 对于AIX平台,请使用LIBPATH代替LD_LIBRARY_PATH.
1)监听器文件(listener.ora)是一个监听器,用于监听1511端口,例如:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME=dg4msql)
(ORACLE_HOME=/home/oracle/oracle/product/11.1)
(ENVS=LD_LIBRARY_PATH=/home/oracle/product/11.1/dg4msql/driver/lib:/home/oracle/product/11.1/lib)
(PROGRAM=dg4msql)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = <hostname of the Oracle Server>) (PORT = 1511))
)
)
)
在改变监听器文件(listener.ora)之后,这个监听器必须关闭再打开。
2)tnsnames.ora文件需要输入DG4MSQL的别名:
dg4msql.de.oracle.com =
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=<hostname of the Oracle Server>)(PORT=1511))
(CONNECT_DATA=(SID=dg4msql))
(HS=OK)
)
这个域名(tns别名)可以不同于一个已经使用的域名之上,依赖于sqlnet.ora文件中的参数。
NAMES.DEFAULT_DOMAIN = de.oracle.com
但是重要入口是(HS=OK)关键字。(HS=)只是一个验证入口,但是DBCA和NetCA只是识别(HS=OK)入口和移除(HS=)入口。
在添加tnsnames别名之后需要重新启动监听器。
可以通过tnsping<alias>来检验连接。
connectivity
需要返回一个成功的信息。
3)网关的init.ora
有一些SID命名的限制(在NET ADMINISTRATORS GUIDE中有详细描述)。
在这里只有一个简短的说明:不要在SID中使用远点,并且保证他比较短。
SID只是和网关的安装文件有关。<SID>.ora文件。在例子中调用initdg4msql.ora。
这个文件在$ORACLE_HOME/dg4msql/admin
这需要包含至少得链接细节:
#
HS_FDS_CONNECT_INFO=<SQL Server>:<port>//<database>
# alternate connect format is hostname/serverinstance/databasename
Short explanation of the parameter HS_FDS_CONNECT_INFO:
It can be configured to use a SQL Server port# or to work with instances:
HS_FDS_CONNECT_INFO=<SQL Server>:<port>//<database>
HS_FDS_CONNECT_INFO=<SQL Server>/<instance>/<database>
<SQL Server> is the hostname where the SQL Server resides
<port> is the port number of the SQL Server (default is 1433)
<instance> is the name of a dedicated instance you want to connect to; leave it blank if your SQL Server setup does not use SQL Server instances
<database> is the name of the database DG4MSQL should connect to; for example Northwind
例如:
To connect to a Northwind database on a SQL Server (w2k3) with IP Address 192.168.0.1 using the default instance you can use:
HS_FDS_CONNECT_INFO=x2kx.de.oracle.com:1433//Northwind
or
HS_FDS_CONNECT_INFO=192.168.0.1:1433//Northwind
To connect to a SQL Server 2k5 named instance msql2k5 on this machine listening on port 4025 either use:
HS_FDS_CONNECT_INFO=x2kx.de.oracle.com:4025//Northwind
or
HS_FDS_CONNECT_INFO=192.168.2.1:4025//Northwind
or
HS_FDS_CONNECT_INFO=x2kx.de.oracle.com/MSQL2k5/Northwind
or
HS_FDS_CONNECT_INFO=192.168.2.1/MSQL2k5/Northwind
附注:
链接已经命名的实例或许可能带来麻烦,使用合适的端口号可以解决。
你可以通过链接SQL Server的服务网络实用工具找到端口号,选择你想链接的实例,强调tcp/ip在可用的协议之下,并且点击参数按钮。一个关于端口号的窗口会打开,如果那样实例正在监听。
4)配置oracle数据库
这里唯一需要做的事情就是创建一个数据库链接:
使用username/password连接数据库,需要足够的权限来创建一个数据库链接(即系统)。
语法是:
create [public] database link <name>
connect to <UID> identified by <pwd> using '<tnsalias>';
换句话说,连接MS SQL Server中,配置是最后一步。
语法必须是:
CREATE DATABASE LINK sqlserver
CONNECT TO "sa" IDENTIFIED BY "sa" USING 'dg4msql';
这个数据库链接名字是sqlserver。用户名和密码必须使用双引号,因为用户名和密码在SQL Server情况中是敏感的。‘dg4msql’指的是tnsnames.ora文件中的别名。
如果所有的配置都已经好了,那么对SQL Server中表的查询操作将会成功:
select * from "systables"@sqlserver;
附注:在MS SQL Server中systables表明是小写的。因为在SQL Server对大小写是敏感的,所以表名必须被双引号包起来。