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’)方式插入

posted @ 2013-09-06 18:34  心枷无妄  阅读(2427)  评论(1)    收藏  举报