IT猫扑网:您身边最放心的安全下载站! 最新更新| 软件分类| 专题汇总| 手机版

您当前所在位置:IT猫扑网 > 数据库 > MSSQL > 在Oracle里设置访问多个SQL Server

在Oracle里设置访问多个SQL Server

时间:2015-06-28 00:00 来源:IT猫扑网|http://www.itmop.com/ 作者:网管联盟 我要评论(0)

如何在oracle里设置访问多个sql server数据库?假设我们要在ORACLE里同时能访问SQL Server里默认的pubs和Northwind两个数据库。

1、在安装了ORACLE9i Standard Edition或者ORACLE9i Enterprise Edition的windows机器上(IP:192.168.0.2), 产品要选了透明网关(Oracle Transparent Gateway)里访问Microsoft SQL Server数据库

$ORACLE9I_HOMEtg4msqladmin下新写initpubs.ora和initnorthwind.ora配置文件.

initpubs.ora内容如下:

HS_FDS_CONNECT_INFO=&SERVER=SQLSERVER_HOSTNMAE;DATABASE=pubs&

HS_DB_NAME=pubs

HS_FDS_TRACE_LEVEL=OFF

HS_FDS_RECOVERY_ACCOUNT=RECOVER

HS_FDS_RECOVERY_PWD=RECOVER

initnorthwind.ora内容如下:

HS_FDS_CONNECT_INFO=&SERVER=sqlserver_hostname;DATABASE=Northwind&

HS_DB_NAME=Northwind

HS_FDS_TRACE_LEVEL=OFF

HS_FDS_RECOVERY_ACCOUNT=RECOVER

HS_FDS_RECOVERY_PWD=RECOVER



$ORACLE9I_HOMEnetworkadmin 下listener.ora内容如下:

LISTENER =

  (DESCRIPTION_LIST =

   (DESCRIPTION =

    (ADDRESS_LIST =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.2)(PORT = 1521))

  )

  )

  )



SID_LIST_LISTENER =

  (SID_LIST =

  (SID_DESC =

  (GLOBAL_DBNAME = test9)

  (ORACLE_HOME = d:oracleora92)

  (SID_NAME = test9)

 )

  (SID_DESC=

  (SID_NAME=pubs)

  (ORACLE_HOME=d:OracleOra92) 

  (PROGRAM=tg4msql)

  )

  (SID_DESC=

  (SID_NAME=northwind)

  (ORACLE_HOME=d:OracleOra92) 

 (PROGRAM=tg4msql)

    )

  )


重启动这台做gateway的windows机器上(IP:192.168.0.2)TNSListener服务.

(凡是按此步骤新增可访问的SQL Server数据库时,TNSListener服务都要重启动)

2、ORACLE8I,ORACLE9I的服务器端配置tnsnames.ora, 添加下面的内容:

pubs =

  (DESCRIPTION =

  (ADDRESS_LIST =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.2)(PORT = 1521))

    )

    (CONNECT_DATA =

    (SID = pubs)

    )

    (HS = pubs) 

   )

   

northwind =

  (DESCRIPTION =

  (ADDRESS_LIST =

 (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.2)(PORT = 1521))

    )

    (CONNECT_DATA =

    (SID = northwind)

    )

    (HS = northwind) 

   )   

 保存tnsnames.ora后,在命令行下

 tnsping pubs

 tnsping northwind


出现类似提示,即为成功

Attempting to contact (DESCRIPTION = (ADDRESS_LIST = 

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.2)

(PORT = 1521))) (CONNECT_DATA = (SID = pubs)) (HS = pubs))

OK(20毫秒)

Attempting to contact (DESCRIPTION = (ADDRESS_LIST =

 (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.2)

(PORT = 1521))) (CONNECT_DATA = (SID = northwind)) (HS = northwind))

OK(20毫秒)


设置数据库参数global_names=false。

设置global_names=false不要求建立的数据库链接和目的数据库的全局名称一致。global_names=true则要求, 多少有些不方便。

oracle9i和oracle8i都可以在DBA用户下用SQL命令改变global_names参数

alter system set global_names=false;


建立公有的数据库链接:

create public database link pubs 

connect to testuser identified by testuser_pwd using 'pubs';

create public database link northwind 

connect to testuser identified by testuser_pwd using 'northwind';

(假设SQL Server下pubs和northwind已有足够权限的用户登陆testuser,

密码为testuser_pwd)


访问SQL Server下数据库里的数据:

select * from stores@pubs;

...... 	......

select * from region@northwind;

......  ......


3、使用时的注意事项

ORACLE通过访问SQL Server的数据库链接时,用select * 的时候字段名是用双引号引起来的。

例如:

create table stores as select * from stores@pubs;

select zip from stores;

ERROR 位于第 1 行:

ORA-00904: 无效列名

select &zip& from stores;

zip

-----

98056

92789

96745

98014

90019

89076


已选择6行。

用SQL Navigator或Toad看从SQL Server转移到ORACLE里的表的建表语句为:

CREATE TABLE stores

    (&stor_id&                      CHAR(4) NOT NULL,

    &stor_name&                    VARCHAR2(40),

    &stor_address&                 VARCHAR2(40),

    &city&                         VARCHAR2(20),

    &state&                        CHAR(2),

    &zip&                          CHAR(5))

  PCTFREE     10

  PCTUSED     40

  INITRANS    1

  MAXTRANS    255

  TABLESPACE  users

  STORAGE   (

    INITIAL     131072

    NEXT        131072

    PCTINCREASE 0

    MINEXTENTS  1

    MAXEXTENTS  2147483645

  )

/


总结:

WINDOWS下ORACLE9i网关服务器在$ORACLE9I_HOMEtg4msqladmin目录下的initsqlserver_databaseid.ora

WINDOWS下ORACLE9i网关服务器listener.ora里面

相关阅读 sql server系统表损坏的解决方法 SQL Server asp.net 数据提供程序连接池 SqlServer2005对现有数据进行分区具体步骤 一个Access数据库数据传递的实例方法 为导入文件加上时间戳标记的两种方法 SQL Server 2005 在不允许远程连接的情况下的破解

文章评论
发表评论

热门文章 sql server系统表损坏的解决方法 sql server系统表损坏的解决方法 SqlServer2005对现有数据进行分区具体步骤 SqlServer2005对现有数据进行分区具体步骤 解决SQL Server中Group无法实现的问题 解决SQL Server中Group无法实现的问题 SQL Server 2005降级到2000的正确操作步骤 SQL Server 2005降级到2000的正确操作步骤 手把手教你学会SQL Server镜像操作 手把手教你学会SQL Server镜像操作 实战手记:让百万级数据瞬间导入SQL Server 实战手记:让百万级数据瞬间导入SQL Server

相关下载

人气排行 配置和注册ODBC数据源-odbc数据源配置教程 如何远程备份(还原)SQL2000数据库 SQL2000数据库远程导入(导出)数据 SQL2000和SQL2005数据库服务端口查看或修改 修改Sql Server唯一约束教程 SQL Server 2005降级到2000的正确操作步骤 sql server系统表损坏的解决方法 浅谈JSP JDBC来连接SQL Server 2005的方法 SQL Server创建表语句介绍 MS-SQL2005服务器登录名、角色、数据库用户、角色、架构的关系 如何使用SQL Server中的客户端配置工具 SQL Server 分布式查询:OLE DB连接(一)