sybase oracle dblink,[转载]DbLink 实现从Oracle 连接 SQLServer 2000
发布日期:2021-06-27 04:24:34 浏览次数:10 分类:技术文章

本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:oracle全备份和增量备份,使用Rman 全备份以及增量备份
下一篇:cad自动填写页码lisp,CAD 中 如何自动添加页码?

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年03月22日 09时27分53秒