以下的例子,要通過ORACLE通用連接,建立三個ORACLE的DATABASELINK,分別用于訪問 SQL2000服務器的ET2000,OFSS2000和BK2000數(shù)據(jù)庫. 1.在ORACLE服務器上,新建三個ODBC系統(tǒng)數(shù)據(jù)源,名稱分別為ET2000,OFSS2000,BK2000; 三個數(shù)據(jù)源都訪問目標的SQLSERVER實例,不同之處僅在與默認連接的數(shù)據(jù)不同. 2.在ORACLE服務器上,ORACLE安裝目錄(本例中是D:\oracle\product\10.2.0\db_1\)的hs\admin目錄下,參照inithsodbc.ora 創(chuàng)建initET2000.ora 參數(shù)配置如下:其中ET2000是默認連接ET2000數(shù)據(jù)庫的ODBC系統(tǒng)數(shù)據(jù)源名稱 HS_FDS_CONNECT_INFO = ET2000 HS_FDS_TRACE_LEVEL = 0 類似地,創(chuàng)建initOFSS2000.ora和initBK2000 3.在ORACLE服務器上,ORACLE安裝目錄(本例中是D:\oracle\product\10.2.0\db_1\)的NETWORK\ADMIN目錄下,修改tnsname.ora 增加 ET2000 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.180)(PORT = 1521))) (CONNECT_DATA = (SID = ET2000) ) (HS=OK) ) 類似的,增加OFSS2000和BK2000的配置段 4.在ORACLE服務器上,ORACLE安裝目錄(本例中是D:\oracle\product\10.2.0\db_1\)的NETWORK\ADMIN目錄下,修改listener.ora 在這個段中,增加SID_DESC的配置 SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = D:\oracle\product\10.2.0\db_1) (PROGRAM = extproc) ) (SID_DESC = (SID_NAME = ET2000) (ORACLE_HOME = D:\oracle\product\10.2.0\db_1) (PROGRAM = hsodbc) ) (SID_DESC = (SID_NAME = OFSS2000) (ORACLE_HOME = D:\oracle\product\10.2.0\db_1) (PROGRAM = hsodbc) ) (SID_DESC = (SID_NAME = BK2000) (ORACLE_HOME = D:\oracle\product\10.2.0\db_1) (PROGRAM = hsodbc) ) ) 5.重啟ORACLE服務器TNS服務 6.創(chuàng)建ORACLE的DATABASELINK對象ET2000. CREATE PUBLIC DATABASE LINK ET2000 CONNECT TO "sa" (user) IDENTIFIED BY "000000" (password) USING 'ET2000' (tns || DBNAME) / 類似的建立DATABASELINK OFSS2000和BK2000. 這里用sa用戶連接,一般倒數(shù)據(jù)時用一個有SELECT所有表權限的用戶就可以了 7.現(xiàn)在就可以使用DATABASELINK通過ORACLE客戶端訪問SQL數(shù)據(jù)庫了,例如: SELECT * FROM "tKHXX"@ET2000 訪問ET2000庫的tKHXX表 SELECT * FROM "tOF_JJZH"@OFSS2000 訪問OFSS2000庫的tOF_JJZH表 要注意,表名和字段名最好加雙引號,否則會被按大寫解析,可能導致報對象不存在的錯誤. |
|