当前位置 > 主页 > 万和大讲堂 >


南京Oracle认证培训学习:在Oracle里设置访问多个SQL数据库

2016-03-31 11:14

  在Oracle的学习过程中,我们经常会遇到很多问题。今天南京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_HOME\tg4msql\admin下新写initpubs.ora和initnorthwind.ora配置文件

  initpubs.ora内容如下:

  HS_FDS_CONNECT_INFO="SERVER=sqlserver_hostname;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

  

  (有部分可以根据具体要访问的SQL Server数据库的情况而修改)

  

  $ORACLE9I_HOME\network\admin 下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:\oracle\ora92)

  (SID_NAME = test9)

  )

  (SID_DESC=

  (SID_NAME=pubs)

  (ORACLE_HOME=d:\Oracle\Ora92)

  (PROGRAM=tg4msql)

  )

  (SID_DESC=

  (SID_NAME=northwind)

  (ORACLE_HOME=d:\Oracle\Ora92)

  (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_HOME\tg4msql\admin目录下的initsqlserver_databaseid.ora

  

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

  (SID_DESC=

  (SID_NAME=sqlserver_databaseid)

  (ORACLE_HOME=d:\Oracle\Ora92)

  (PROGRAM=tg4msql)

  )

  

  UNIX或WINDOWS下ORACLE8I,ORACLE9I服务器tnsnames.ora里面

  northwind =

  (DESCRIPTION =

  (ADDRESS_LIST =

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

  )

  (CONNECT_DATA =

  (SID = sqlserver_databaseid)

  )

  (HS = sqlserver_databaseid)

  )


  以上就是南京Oracle认证培训关于在Oracle里设置访问多个SQL数据库的讲解,后续也会给大家多多给大家补充Oracle技术相关的知识。

  

  想和兴趣相投的朋友们一起交流吗?那就来江苏万和计算机培训中心吧。江苏万和作为南京专业的Oracle认证培训中心,也是Oracle等众多厂商的授权培训、考试机构,欢迎广大有志于此行业发展的学员们加入。

最近开班 more>
  • Python基础班
  • Java全栈开发
  • 前端基础班
  • 软件测试
  • 云原生精英班
  • 云网预科班
  • CISP
  • HCIE-Datacom(HCIA,HCIP基础)
  • HCIP-Datacom(HCIA基础)
  • HCIA-Datacom(0基础)
  • HCIE-Datacom(HCIA,HCIP基础)
  • HCIP-Datacom(HCIA基础)
  • HCIA-Datacom(0基础)
  • OCM 12C
  • OCP 19C
  • RHCE 9.0
  • 随时开课
  • 12月26日
  • 随时开课
  • 12月4日
  • 12月16日
  • 12月9日
  • 12月21日
  • 1月6日
  • 12月30日
  • 12月16日
  • 12月21日
  • 12月7日
  • 12月7日
  • ——
  • 随时开课
  • 12月16日
    • 姓 名 :
    • 电 话 :
    • 课 程 :

技术交流群

  • Java大数据交流群560819979加入
  • Python技术交流群595083299加入
  • Oracle技术交流群595119011加入
  • Web前端技术交流群604697610加入
  • Huawei技术交流群482919361加入
  • Redhat技术交流群587875348加入
  • UI设计技术交流群511649801加入
  • Cisco技术交流群596886705加入
  • IT运维技术交流群605888381加入