每日一得

          不求多得,只求一得 about java,hibernate,spring,design,database,Ror,ruby,快速開(kāi)發(fā)
          最近關(guān)心的內(nèi)容:SSH,seam,flex,敏捷,TDD
          本站的官方站點(diǎn)是:顛覆軟件

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            220 隨筆 :: 9 文章 :: 421 評(píng)論 :: 0 Trackbacks
          如何在Oracle里設(shè)置訪問(wèn)多個(gè)SQL Server數(shù)據(jù)庫(kù)?假設(shè)我們要在ORACLE里同時(shí)能訪問(wèn)SQL Server里默認(rèn)的pubs和Northwind兩個(gè)數(shù)據(jù)庫(kù)。

          1、 在安裝了ORACLE9i Standard Edition或者ORACLE9i Enterprise Edition的windows機(jī)器上(IP:192.168.0.2), 產(chǎn)品要選了透明網(wǎng)關(guān)(Oracle Transparent Gateway)里訪問(wèn)Microsoft SQL Server數(shù)據(jù)庫(kù)

          $ORACLE9I_HOME\tg4msql\admin下新寫(xiě)initpubs.ora和initnorthwind.ora配置文件.
          initpubs.ora內(nèi)容如下:
          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內(nèi)容如下:
          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內(nèi)容如下:
          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)
          )
          )


          重啟動(dòng)這臺(tái)做gateway的windows機(jī)器上(IP:192.168.0.2)TNSListener服務(wù).

          (凡是按此步驟新增可訪問(wèn)的SQL Server數(shù)據(jù)庫(kù)時(shí),TNSListener服務(wù)都要重啟動(dòng))

          2、ORACLE8I,ORACLE9I的服務(wù)器端配置tnsnames.ora, 添加下面的內(nèi)容:

          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


          出現(xiàn)類(lèi)似提示,即為成功

          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毫秒)


          設(shè)置數(shù)據(jù)庫(kù)參數(shù)global_names=false。

          設(shè)置global_names=false不要求建立的數(shù)據(jù)庫(kù)鏈接和目的數(shù)據(jù)庫(kù)的全局名稱(chēng)一致。global_names=true則要求, 多少有些不方便。

          oracle9i和oracle8i都可以在DBA用戶(hù)下用SQL命令改變global_names參數(shù)

          alter system set global_names=false;


          建立公有的數(shù)據(jù)庫(kù)鏈接:

          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';
          (假設(shè)SQL Server下pubs和northwind已有足夠權(quán)限的用戶(hù)登陸testuser,
          密碼為testuser_pwd)


          訪問(wèn)SQL Server下數(shù)據(jù)庫(kù)里的數(shù)據(jù):

          select * from stores@pubs;
          ...... ......
          select * from region@northwind;
          ...... ......


          3、使用時(shí)的注意事項(xiàng)

          ORACLE通過(guò)訪問(wèn)SQL Server的數(shù)據(jù)庫(kù)鏈接時(shí),用select * 的時(shí)候字段名是用雙引號(hào)引起來(lái)的。

          例如:

          create table stores as select * from stores@pubs;
          select zip from stores;
          ERROR 位于第 1 行:
          ORA-00904: 無(wú)效列名
          select "zip" from stores;
          zip
          -----
          98056
          92789
          96745
          98014
          90019
          89076


          已選擇6行。

          用SQL Navigator或Toad看從SQL Server轉(zhuǎn)移到ORACLE里的表的建表語(yǔ)句為:

          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
          )
          /


          總結(jié):

          WINDOWS下ORACLE9i網(wǎng)關(guān)服務(wù)器在$ORACLE9I_HOME\tg4msql\admin目錄下的initsqlserver_databaseid.ora

          WINDOWS下ORACLE9i網(wǎng)關(guān)服務(wù)器listener.ora里面

          (SID_DESC=
          (SID_NAME=sqlserver_databaseid)
          (ORACLE_HOME=d:\Oracle\Ora92)
          (PROGRAM=tg4msql)
          )
          UNIX或WINDOWS下ORACLE8I,ORACLE9I服務(wù)器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一致才行.
          posted on 2006-07-27 19:49 Alex 閱讀(345) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): dataBase
          主站蜘蛛池模板: 乌拉特中旗| 竹溪县| 德州市| 合肥市| 襄汾县| 顺义区| 中西区| 社旗县| 饶河县| 左贡县| 富锦市| 武功县| 宜黄县| 连平县| 黔西县| 保德县| 七台河市| 九龙县| 徐闻县| 修文县| 且末县| 抚远县| 宝坻区| 徐水县| 陈巴尔虎旗| 吴川市| 福建省| 宁海县| 北京市| 论坛| 定安县| 社旗县| 五常市| 揭西县| 张家港市| 武胜县| 齐河县| 雷波县| 呼伦贝尔市| 奉节县| 喀喇沁旗|