文章詳情頁(yè)
ORACLE 8i的普通連接技術(shù)的介紹
瀏覽:111日期:2023-11-19 09:09:45
Oracle 8i的普通連接技術(shù)的介紹====================================歡迎大家同我交流:小白; enhydra_boy@tom.com歡迎轉(zhuǎn)載,請(qǐng)保留本聲明,謝謝!==================================== ;Oracle 8.1.6 中引入普通連接技術(shù)的概念(Generic connectivity),這一連接解決方案滿(mǎn)足了對(duì)許多異種數(shù)據(jù)庫(kù)存儲(chǔ)的數(shù)據(jù)訪(fǎng)問(wèn)需求,同時(shí)并不需要安裝ORACLE的透明網(wǎng)關(guān)(ORACLE Transparent Gateway)。該特性答應(yīng)使用業(yè)界標(biāo)準(zhǔn) ODBC 和 OLEDB 建立透明連接。什么是普通連接(Generic connectivity)普通連接是ORACLE的一個(gè)低端數(shù)據(jù)集成解決方案,目標(biāo)是提供ORACLE 8i可以連接到非oracle數(shù)據(jù)庫(kù)的能力。它的實(shí)現(xiàn),是通過(guò)異種服務(wù)代理(Heterogeneous Services)來(lái)實(shí)現(xiàn)的。異種服務(wù)代理的類(lèi)型:ODBC agent for Accessing ODBC data providersOLE DB agent for accessing OLE DB data providers that support SQL processing--sometimes referred to as OLE DB (SQL)ODBC agent for acceng OLE DB data providers without SQL processing support--sometimes referred to as OLE DB (FS) 普通連接的系統(tǒng)結(jié)構(gòu)圖ORACLE客戶(hù)端程序訪(fǎng)問(wèn)非ORACLE數(shù)據(jù)庫(kù)的過(guò)程:客戶(hù)端程序是通過(guò)SQL*NET連接ORACLE服務(wù)器,關(guān)于異種數(shù)據(jù)庫(kù)的訪(fǎng)問(wèn),交給HS代理實(shí)現(xiàn)。HS代理通過(guò)下面的功能組件實(shí)現(xiàn):ODBC治理器->ODBC驅(qū)動(dòng)程序->數(shù)據(jù)庫(kù)的網(wǎng)絡(luò)客戶(hù)端->目標(biāo)數(shù)據(jù)庫(kù)。假如異種庫(kù)和ORACLE數(shù)據(jù)庫(kù)位于同一臺(tái)服務(wù)器上,一般來(lái)說(shuō)驅(qū)動(dòng)程序是可以直接和本機(jī)的數(shù)據(jù)庫(kù)通訊,就可以省去數(shù)據(jù)庫(kù)的網(wǎng)絡(luò)客戶(hù)端這一層。數(shù)據(jù)類(lèi)型的轉(zhuǎn)換ORACLE自動(dòng)實(shí)現(xiàn)ODBC和OLEDB數(shù)據(jù)類(lèi)型到ORACLE數(shù)據(jù)類(lèi)型的轉(zhuǎn)換,具體的對(duì)應(yīng)轉(zhuǎn)換可以參考ORACLE的聯(lián)機(jī)幫助http://download-west.oracle.com/docs/cd/A87860_01/doc/server.817/a76960/datatype.htm。普通連接的限制1; 含有BLOB列的表必須要有一個(gè)主鍵字段;2; BLOB/CLOB數(shù)據(jù)不直接通過(guò)pass-through的查詢(xún)方式;3; 在WHERE子句中包括了函數(shù)的Updates或deletes語(yǔ)句不被答應(yīng);4; 不支持存儲(chǔ)過(guò)程的調(diào)用;HS代理(odbc/oledb)不支持分布式事務(wù)(distributed transactions),只支持單點(diǎn)的事務(wù)(single-site transactions)。普通連接代理的配置下面,我介紹一下,利用普通連接的ODBC配置。利用HS odbc代理連接SQL SERVER 2000。第一步初始化文件的建立首先,你必須要?jiǎng)?chuàng)建初始化文件。ORACLE提供了樣例初始化文件,名字是init<agent>.ora,<agent>可能是hsodbc,hsoledb,hsolefs,分別代表了三種類(lèi)型的代理,位于$ORACLE_HOME/HS/ADMIN下。把對(duì)應(yīng)的文件復(fù)制一份出來(lái),并且改名為init<HS_SID>.ora,<HS_SID>是你SQL SERVER ODBC代理起的別名。復(fù)制并創(chuàng)建了一個(gè)inithssql2k.ora文件,編輯inithssql2k.ora文件。參數(shù)有:# This is a sample agent init file that contains the HS parameters that are# needed for an ODBC Agent. ## HS init parameters##HS_FDS_CONNECT_INFO = <odbc data_source_name>#HS_FDS_TRACE_LEVEL = <trace_level>HS_FDS_CONNECT_INFO = SQL2KHS_FDS_TRACE_LEVEL = ONHS_AUTOREGISTER = TRUE## Environment variables required for the non-Oracle system##set <envvar>=<value>第二步 創(chuàng)建異種服務(wù)代理的數(shù)據(jù)字典執(zhí)行$ORACLE_HOME/rdbms/admin/caths.sql,創(chuàng)建相關(guān)的系統(tǒng)表和視圖。 第三步 創(chuàng)建異種服務(wù)代理的工作環(huán)境添加hssql2k的偵聽(tīng)服務(wù),$ORACLE_HOME/NETWORK/ADMIN/listener.oraSID_DESC= (SID_NAME=hssql2k) (ORACLE_HOME=d:oracleora81) (PROGRAM=hsodbc) )修改$ORACLE_HOME/NETWORK/ADMIN/tnsnames.ora,添加一個(gè)網(wǎng)絡(luò)服務(wù)名sql2k,將在后面創(chuàng)建數(shù)據(jù)庫(kù)聯(lián)接時(shí)用到。sql2k = (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)) (CONNECT_DATA=(SID=hssql2k)) (HS=OK))重新啟動(dòng)偵聽(tīng),并且察看服務(wù)狀態(tài)LSNRCTL for 32-bit Windows: Version 8.1.7.0.0 - ProdUCtion on 02-JUL-2003 12:49:30(c) Copyright 1998 Oracle Corporation.; All rights reserved.Welcome to LSNRCTL, type 'help' for information.LSNRCTL> statusConnecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=SAM)(PORT=1521)))STATUS of the LISTENER------------------------Alias;;LISTENERVersionTNSLSNR for 32-bit Windows: Version 8.1.7.0.0 - ProdutionStart Date;;;;;02-JUL-2003 11:08:31Uptime;0 days 1 hr. 41 min. 2 secTrace Level;;;;offSecurity; OFFSNMP;;;OFFListener Parameter Filed:oracleora81networkadminlistener.oraListener Log File d:oracleora81networkloglistener.logServices Summary... ORCL; has 1 service handler(s) ORCL; has 3 service handler(s) PLSExtProc;has 1 service handler(s) hssql2k;;;;has 1 service handler(s)The command completed successfullyLSNRCTL>Hssql2k的偵聽(tīng)服務(wù)已經(jīng)正常運(yùn)行了。 第四步 修改數(shù)據(jù)庫(kù)啟動(dòng)參數(shù)文件修改數(shù)據(jù)庫(kù)啟動(dòng)參數(shù)文件,設(shè)置global_names=false,假如設(shè)置為true(缺省),那么數(shù)據(jù)庫(kù)連接名和全局?jǐn)?shù)據(jù)庫(kù)名一樣,這將會(huì)導(dǎo)致ORA-02085的錯(cuò)誤。第五步 創(chuàng)建訪(fǎng)問(wèn)non-oracle數(shù)據(jù)庫(kù)的連接(Database Link) 在sqlplus中,執(zhí)行create database link命令。Connect to 指定了連接到SQL SERVER的用戶(hù)名和密碼。SQL>create public database link sql2k connect to sa identified by manager using ‘sql2k’;Database link created.第六步 測(cè)試Oracle8i Enterprise Edition Release 8.1.7.0.0 - ProductionWith the Partitioning optionJServer Release 8.1.7.0.0 - ProductionSQL> connect scott/tiger;Connected.SQL> select count(*) from sysobjects@sql2k; COUNT(*)---------- 135現(xiàn)在,oracle已經(jīng)可以訪(fǎng)問(wèn)sqlserver數(shù)據(jù)庫(kù)了。以上都是,筆者參考了oracle的聯(lián)機(jī)幫助,并且實(shí)際測(cè)試的經(jīng)過(guò)。筆者同時(shí)也發(fā)現(xiàn),采用hsodbc其實(shí)也并不是很穩(wěn)定,有的sql語(yǔ)句會(huì)引起hsodb agent的致命錯(cuò)誤,同時(shí)有很多限制,采用透明網(wǎng)關(guān)應(yīng)該就可以獲得很好的效果。但是, oracle 8i的這個(gè)特性,可以不安裝額外的Transparent Gateway產(chǎn)品。因此,只要能夠滿(mǎn)足應(yīng)用的數(shù)據(jù)訪(fǎng)問(wèn)要求,采用Generic connectivity也不失為一個(gè)快速,經(jīng)濟(jì)的方法。筆者的測(cè)試環(huán)境:Windows2000 Server+ORACLE 8i(8.1.7)
標(biāo)簽:
Oracle
數(shù)據(jù)庫(kù)
排行榜
