网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.Oracle的X$表系列介绍之-X$KSLLC.
.ORACLE备份三(ORACLE BACKUP STR.
.block内部数据存储.
.Oracle数据库最优化参数缩短反应.
.为 PL/SQL 构建代码分析实用工具.
.启动/关闭数据库归档(ARCHIVELOG.
.rman备份,未用catalog,控制文件丢.
.审计并报告Oracle用户活动.
.查看ORACLE数据库信息的一些SQL.
.Oracle 10G 最佳20位新特性:回滚.
.ORACLE公司倾情中国软件人才培训.
.Oracle的翻页Sql语句.
.在Oracle中获取磁盘空间的使用情.
.提高ORACLE数据库的查询统计速度.
.Oracle Database 10 g : 为 DBA .
.优化数据库的三板斧 大幅提高Ora.
.快速导出导入expdp/impdp的停止与.
.Oracle Spatial自定义临时表实现.
.Oracle数据库技术(43).
.Oracle非法数据库对象引起的错误.

在Oracle里设置访问多个SQL Server

发表日期:2008-2-9


  如何在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_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_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)

   )

  sqlserver_databaseid一致才行。

上一篇:Oracle数据安全面面观(一) 人气:796
下一篇:教你在oracle中编写树级代码 人气:503
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐