以下的例子,要通过ORACLE通用连接,建立三个ORACLE的DATABASELINK,分别用于访问 SQL2000服务器的ET2000,OFSS2000和BK2000数据库. 1.在ORACLE服务器上,新建三个ODBC系统数据源,名称分别为ET2000,OFSS2000,BK2000; 三个数据源都访问目标的SQLSERVER实例,不同之处仅在与默认连接的数据不同. 2.在ORACLE服务器上,ORACLE安装目录(本例中是D:\oracle\product\10.2.0\db_1\)的hs\admin目录下,参照inithsodbc.ora 创建initET2000.ora 参数配置如下:其中ET2000是默认连接ET2000数据库的ODBC系统数据源名称 HS_FDS_CONNECT_INFO = ET2000 HS_FDS_TRACE_LEVEL = 0 类似地,创建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.创建ORACLE的DATABASELINK对象ET2000. CREATE PUBLIC DATABASE LINK ET2000 CONNECT TO "sa" (user) IDENTIFIED BY "000000" (password) USING 'ET2000' (tns || DBNAME) / 类似的建立DATABASELINK OFSS2000和BK2000. 这里用sa用户连接,一般倒数据时用一个有SELECT所有表权限的用户就可以了 7.现在就可以使用DATABASELINK通过ORACLE客户端访问SQL数据库了,例如: SELECT * FROM "tKHXX"@ET2000 访问ET2000库的tKHXX表 SELECT * FROM "tOF_JJZH"@OFSS2000 访问OFSS2000库的tOF_JJZH表 要注意,表名和字段名最好加双引号,否则会被按大写解析,可能导致报对象不存在的错误. |
|