以下的例子,要通过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表
要注意,表名和字段名最好加双引号,否则会被按大写解析,可能导致报对象不存在的错误.