现在异构数据库环境比比皆是,最常见的情况是oracle与sql server数据库并存,接下来演示通过安装oracle gateway来访问sql server 2000的过程。
1.环境描述
数据库 IP地址 ORACLE_HOME
Oracle/Gateway(11g) 192.168.117.128 /u01/oracle/11.2.0/db_1
Sql server 2000 192.168.117.1 /u01/oracle/11.2.0/gw_1
2.安装oracle gateway
下载软件包,解压缩后运行runInstaller图形安装向导即可,这里有两点需要注意的地方:一如果安装的gateway和database是不同的版本需将gateway安装到另外一个ORACLE_HOME下,如果版本一致可以与database共用一个ORACLE_HOME;二在向导界面中需提供sql server的主机名和数据库名,端口号和实例名可选。
3.配置gateway参数文件
[oracle@ora11g dg4msql]$ cd $ORACLE_HOME/dg4msql/admin (此ORACLE_HOME为gateway的ORACLE_HOME)
[oracle@ora11g admin]$ cat initdg4msql.ora
HS_FDS_CONNECT_INFO=[192.168.117.1]://wilson
# alternate connect format is hostname/serverinstance/databasename
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER
从以上配置信息可以知道sql server被安装在192.168.117.1主机上,数据库名为wilson
4.为gateway配置oracle监听
[oracle@ora11g dg4msql]$ cd $ORACLE_HOME/network/admin (此ORACLE_HOME为database的ORACLE_HOME)
[oracle@ora11g admin]$ cat listener.ora
LISTENER =
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.117.128)(PORT=1521))
)
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME=dg4msql)
(ORACLE_HOME=/u01/app/oracle/product/11.2.0/gw_1)
(PROGRAM=dg4msql)
)
)
5.重启监听
[oracle@ora11g admin]$ lsnrctl stop
[oracle@ora11g admin]$ lsnrctl start
6.为gateway访问database配置网络服务名
[oracle@ora11g admin]$ cd $ORACLE_HOME/network/admin (此ORACLE_HOME为database的ORACLE_HOME)
[oracle@ora11g admin]$ cat tnsnames.ora dg4msql =
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.117.128)(PORT=1521))
(CONNECT_DATA=(SID=dg4msql))
(HS=OK)
)
7.创建dblink
[oracle@ora11g admin]$ sqlplus / as sysdba
SQL> create public database sqlsrv connect to "sa" identified by "tl1985" using 'dg4msql';
8.在sql server上建立测试表
使用sql查询分析器登陆到wilson数据库执行如下命令:
create table t(id int);
begin transaction
insert into t values(38);
commit;
9.测试连接效果
[oracle@ora11g admin]$ sqlplus / as sysdba
SQL> select * from ;
id
----------
38
OK,通过测试发现gateway配置成功,此时已可以从oracle数据库访问到sql server数据库,配置过程中出现的一个小错误是当时安装完sql server 后默认的网络服务端口1433没有打开,解决方法打上sp4的补丁包后问题解决。