国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

Oracle 異構服務實踐

2024-08-29 13:36:22
字體:
來源:轉載
供稿:網友

  近期公司預備開發一個計費項目,數據庫當然還是選用我最信賴的Oracle了。由于一部分基礎數據在一臺Win2000 Server的SQL Server 7.0數據庫中,需要考慮靈活、可靠的方法實現從Oracle數據庫端訪問SQL Server中的數據。 于是我有機會真正體驗Oracle 9I 中的新增強功能“異構服務”(Heterogeneous Services)并為此痛苦了近兩天。
  
  先簡單介紹一下Oracle異構服務。它是包含在Oracle數據庫中的一個模塊,通過使用透明網關(Transparent Gateway)或通用連接(Generic Connectivity)來訪問其它非Oracle系統的數據。異構服務的主要結構如下:
  
  各模塊簡要說明如下:
  
  異構服務模塊:屬于Oracle數據庫的內核部分,負責大部分異構連接的處理;
  
  代理通用代碼:對所有基于異構服務產品的通用代碼;
  
  驅動:是與非Oracle系統直接交互的模塊,實現從異構服務API到特定非Oracle系統API的映射。
  
  代理:是Oracle Server連接非Oracle系統的進程,包括兩部分即代理通用代碼和針對特定非Oracle系統的驅動。代理的位置可以與非Oracle系統在同一臺機器上,或與Oracle Server在同一臺機器上,或者單獨在一臺機器上。我這次實踐的環境采用的是最后一種。
  
   Oracle 異構服務實踐(圖一)
  
  我們所說的透明網關和通用連接實際是異構服務中代理的兩種類型。其中透明網關是功能較強的,它通過代理進程從Oracle Server訪問各地的異構分布式數據庫,而提供給用戶的感覺是這些數據庫仍然是Oracle數據庫,Oracle公司提供對大多數商業數據庫的透明網關。通用連接則有較多限制,它使用用戶自己提供的ODBC或OLE DB驅動程序作為異構服務的代理驅動,并且要求這些驅動必須要安裝在Oracle Server的$ORACLE_HOME目錄下。
  
  好了,讓我們開始親自動手吧!我的實驗環境如下:
  
  主機      操作系統         軟件環境
  
  ORADB     Redhat linux 7.2   Oracle 9.0.1 Database Standard Edition
  
  GATEWAY  windows 2000 PRofessional Oracle 9.0.1 Database Standard Edition
  
  SQL Server 2000 (安裝類型“僅連接”)
  
  SQLDB    Windows 2000 Server     SQL Server 7.0(訪問的數據庫是CDR)
  
  注重:Transparent Gateway for Microsoft SQL Server目前只有NT版本,因此網關程序tg4msql僅包含在Oracle Database for windows中。
  
  系統結構:
  
  Oracle 異構服務實踐(圖二)
  
  配置過程:
  
  從SQLDB開始:
  
  1. 在SQLDB上創建將要從Oracle數據庫訪問SQL Server的用戶testuser/testuser,并授予可訪問CDR的權限;
  
  接下來是GATEWAY:
  
  1.安裝好Oracle 9.0.1 Database for Windows后,會發現在%ORACLE_HOME%下有目錄tg4msql,以及網關程序$ORACLE_HOME/BIN/tg4msql;
  
  2. 確保在c:/winnt/system32下有ntwdblib.dll,若沒有則安裝SQL Server2000(安裝類型選擇“僅連接”)。此文件是訪問SQL Server的DB-Library;
  
  3. ping SQLDB看是否通,若不通則在/winnt/system32/drivers/etc/hosts文件中增加一行,用來解析SQLDB的ip地址,很簡單不多說了。
  
  4. 修改%ORACLE_HOME%/tg4msql/inittg4msql.ora,這是網關進程啟動時需要的初始化文件。
只需改下面這一行即可:
  
  HS_FDS_CONNECT_INFO=SQLDB.CDR
  
  5.修改%ORACLE_HOME%/network/admin/listener.ora如下:
  
  LISTENER =
  
  (ADDRESS_LIST=
  
  (ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))
  
  )
  
  SID_LIST_LISTENER=
  
  (SID_LIST=
  
  (SID_DESC=
  
  (SID_NAME=tg4msql)
  
  (ORACLE_HOME=e:/Oracle/OraHome_9I) #用你的%ORACLE_HOME%
  
  (PROGRAM=tg4msql)
  
  )
  
  )
  
  最后是ORADB:
  
  1.修改tnsnames.ora
  
  CDR = #CDR是我起的,你可以選用其它
  
  (DEsrciptION =
  
  (ADDRESS =
  
  (PROTOCOL = TCP)
  
  (HOST= GATEWAY)
  
  (PORT = 1521)
  
  )
  
  (CONNECT_DATA =
  
  (SID = tg4msql) #tg4msql必須要和GATEWAY上listener.ora中的SID一致
  
  )
  
  (HS = OK) #這很重要,告訴Oracle Server要調用異構服務模塊來處理
  
  )
  
  2.修改initora9i.ora(數據庫初始化文件)
  
  global_names=true,重啟數據庫。
  
  否則會在執行sql時報錯:ORA-02085: 數據庫鏈接CDR與HO.WORLD相連結
  
  原因如下:The GLOBAL_NAMES parameter when set to TRUE implies that database link name should be similar to the Global database name to which you are trying to connect.
  
  3.創建訪問SQLDB.CDR的數據庫鏈接
  
  SQL>create public database link cdr connect to testuser identified by testuser using ‘CDR’;
  
  4. OK!最后執行SQL測試看是否能正常訪問SQL Server
  
  SQL>select count(*) from all_tables@cdr;

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 定西市| 阜阳市| 内黄县| 精河县| 瑞安市| 合川市| 济宁市| 乐昌市| 平阳县| 毕节市| 定远县| 海丰县| 建昌县| 鸡东县| 习水县| 措勤县| 巴青县| 苍梧县| 界首市| 虞城县| 鄂托克前旗| 乌兰县| 漳平市| 陇川县| 茶陵县| 宁安市| 衡东县| 建宁县| 米林县| 邢台县| 安龙县| 湄潭县| 宁安市| 禹州市| 海晏县| 祁东县| 安仁县| 丹棱县| 资中县| 明水县| 庆云县|