oracle基于odbc建立dblink访问sqlserver
1、配置DSN:
数据源 ODBC 数据源名称:ODBC5
此数据源指向SQLSERVER服务。
注意:1、必须测试通过。
2、必须是系统数据源。
2、配置hsodbc($ORACLE_HOME \hs\admin):
新增$ORACLE_HOME\hs\admin\initHS5.ora,文件内容如下:
HS_FDS_CONNECT_INFO = ODBC5 HS_FDS_TRACE_LEVEL = OFF
注意:1、文件必须命名为 init<虚拟SID名称>.ora(可以复制inithsodbc.ora(10g)、initdg4odbc.org(11g))
2、HS_FDS_CONNECT_INFO = <odbc数据源名称>
3、添加监听:
修改 $ORACLE_HOME\NETWORK\ADMIN\listener.ora :
在SID_LIST 下添加新项:
(SID_DESC = (SID_NAME = HS5)
(ORACLE_HOME = $ORACLE_HOME)
(PROGRAM = hsodbc)
)
注意:1、PROGRAM = hsodbc是10G的方式, 11G应配置为PROGRAM = dg4odbc
4、重启listener:
这里要确保重起成功。
5、添加TNS:
修改 $ORACLE_HOME\NETWORK\ADMIN\tnsnames.ora :
SQL5 =
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=数据源所在机器的ip)(PORT=1521))
(CONNECT_DATA=(SID=HS5))
(HS=OK)
)
注意:1、此处的host 配成 ODBC数据源所在的机器,而不是所指向的机器,一般为LOCALHOST,但更推荐使用IP地址表示如:xxx.xxx.xxx.xxx
6、创建数据库连接
CREATE PUBLIC DATABASE LINK test_sql CONNECT TO "username" identified by "password" using 'SQL5';
7、测试:
SELECT * FROM t_table@test_sql;
扩展:
1、5和6合并:
CREATE PUBLIC DATABASE LINK test_sql CONNECT TO "username" identified by "password" using '(DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=xxx.xxx.xxx.xxx)(PORT=1521)) (CONNECT_DATA=(SID=HS5)) (HS=OK) )';
注意:采用上面的合并方式,则不受tnsnames.ora配置文件的限制,更推荐使用
2、往sqlserver插入datetime类型数据
如果要把oracle这边的时间类型插入到sqlserver类型为datetime的字段中,需采用to_char(sysdate, ‘yyyy-mm-dd hi24:mi:ss’)方式插入

浙公网安备 33010602011771号