本文共 3972 字,大约阅读时间需要 13 分钟。
从Oracle 9i连接SQL
Server2000,需要用透明网关(Transparent Gateway),通过它,我们可以 sqlplus
操纵其他数据库,如 ms sqlserver 、 sybase 、 infomix 等,实现数据库的异构服务。
在Oracle 8i中没有透明网关,9i自带,但是默认不安装。
(一)安装Transparent Gateway for Windows SQL
Server:
*如果在Oracle主目录下有tg4msql文件夹,那么不需要重新安装。
1. 启动Oracle安装盘里面的setup.exe。
2. 按Next两次,选择Oracle 9i Database 9.2.0.1.0,按Next。
3. 选择Custom,按Next。
4. 按Oracle Transparent Gateway
9.2.0.1.0旁边的"+",选择Oracle Transparent Gateway for Microsoft SQL
Server 9.2.0.1.0,按Next。(这里可以看到,还可以选择其他的数据库如,sybase等)5. 接着安装。
6. 安装完毕之后,确认透明网关安装成功,在Oracle主目录下,会有tg4msql文件夹。
(二)配置:
Oracle 服务器:
OS: Windows
XP (SP2) IP:
192.168.1.180 PORT: 1521
SQL 服务器:
OS: Windows
2000 IP:
192.168.1.213 Database
Server Name: BIO549
Database
Name: salesdata1
(a)通过tg4msql连接:
1.
在Oracle主目录下tg4msqladmin目录下,拷贝inittg4msql.ora并改名为init.ora。例如,我用的SID是MSSQL,那么我的文件名是initMSSQL.ora。
2.
配置initMSSQL.ora,以我的例子,如下:
******************************
# This is a sample agent init file that contains the HS parameters
that are
# needed for the Transparent Gateway for SQL Server
#
# HS init parameters
#
HS_FDS_CONNECT_INFO="SERVER=BIO549;DATABASE=salesdata1"
#或者直接HS_FDS_CONNECT_INFO=BIO549.salesdata1HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER
******************************
3.
配置Oracle主目录下networkadmin目录下的listener.ora。以我的例子,如下:
*NEWLISTENER是我新建的LISTENER的名字,默认应该是LISTENER
******************************
# LISTENER.ORA Network Configuration File:
C:oracleora92networkadminlistener.ora
# Generated by Oracle configuration tools.
NEWLISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION
=
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.180)(PORT =
1521))
)
)
)
SID_LIST_NEWLISTENER =
(SID_LIST =
(SID_DESC
=
(ORACLE_HOME = C:oracleora92)
(SID_NAME = MSSQL)
(PROGRAM = tg4msql)
)
)
注意:oracle10G,修改listener.ora文件是在
tg1networdadmin目录下
(SID_DESC =
(ORACLE_HOME = D:oracleproduct10.2.0tg1)
(SID_NAME = MSSQL)
(PROGRAM = tg4msql)
)
同时注释LISTENER中的:
#(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
******************************
4.配置Oracle主目录下networkadmin目录下的tnsnames.ora,以我的例子,如下:
******************************
MSSQL =
(DESCRIPTION =
(ADDRESS =
(PROTOCOL = TCP)(HOST = 192.168.1.180)(PORT = 1521))
(CONNECT_DATA = (SID = MSSQL))
(HS= OK) )
******************************
5. 重起listener。推出当前登陆
6. 用sqlplus建立并测试Database
Link。在命令行中,用以下命令:
sqlplus /nolog
conn sys/webpos as
sysdba ---->用sysdba的身份登陆
alter system set global_names =
true; ---->设置global_names=false不要求建立的数据库链接和目的数据库的全局名称一致
create database link test1 connect to sa identified by sa using
'mssql';
select * from salesdata1@test1;
7.连接成功。其中,connect to后面是用户名,identified by后面是密码,using后面是SID。
(b)通过hsodbc连接: 1.
在ODBC中建立SQL Server连接的System
DSN,我用名字BIO549。(步骤不详述,请查MSDN) 2.
在Oracle主目录下hsadmin的目录下,拷贝inithsodbc.ora并改名为init.ora。这次用的SID是BIO549,所以文件名是initBIO549.ora。以我的例子,如下:
*HS_FDS_CONNECT_INFO后面是数据源名称。
******************************
# This is a sample agent init file that contains the HS parameters
that are
# needed for an ODBC Agent.
#
# HS init parameters
#
HS_FDS_CONNECT_INFO = BIO549
HS_FDS_TRACE_LEVEL = OFF
#
# Environment variables required for the non-Oracle system
#
#set
=
****************************** 3.
配置listener.ora,这次加入下面一段:
****************************** ****************** 因此,listener.ora内加的内容如下紫色部分: (允许有以前的listener内容)
****************************** ****************** SID_LIST_NEWLISTENER =
(SID_LIST =
(SID_DESC=
(ORACLE_HOME = C:oracleora92)
(SID_NAME=BIO549)
(PROGRAM=hsodbc)
) )
******************************
4. 配置tnsnames.ora,如下:
****************************** BIO549 =
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.180)(PORT=1521))
(CONNECT_DATA= (SID=BIO549))
(HS=OK)
)
******************************
5.
重起listener并建立连接。
然后通过建立dblink和synonym就可以象访问当前oracle的表一样访问sql server的表了
create public database link BIO549
connect to aa identified by aa111 using 'BIO549';
create synonym user_sql for users@BIO549;
这样就可以访问 sql server中的users表了,只是要注意在oracle中访问对列都需要加双引号""
select "username" from user_sql where "username"='aa';
转载地址:https://blog.csdn.net/weixin_42166105/article/details/116337908 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!