oracle 11g透明网关配置(访问ms sqlserver2008)

来源:互联网 发布:手机真人朗读软件 编辑:程序博客网 时间:2024/06/05 09:34

背景:

        最近有sql server 2008中表的数据要导到oracle 11g中,无奈数据量太大,手工录入太费时,写程序转换数据又觉得麻烦,所以就鼓弄鼓弄oracle 的透明网关。oracle 透明网关是oracle 连接异构数据库提供的一种技术。

 

环境:

       1. oracle 11g透明网关  

           下载地址(windows版的)http://download.oracle.com/otn/nt/oracle11g/112010/win32_11gR2_gateways.zip

        2. sql server 2008数据库

        3. oracle 11g数据库

        注:以上3个软件都安装在同一机子上(当然你也可以安装到不同的机子上)。

方法:

       1. 安装透明网关

           安装很简单,这里就不截图了;在安装完后,要求配置监听,这里我们不配置,在下面的介绍中我们会手动配置。

        2.透明网关安装配置

           打开透明网关的安装目录,我安装的目录是F:\product\11.2.0\tg_1,然后进入到F:\product\11.2.0\tg_1\dg4msql\admin目录下,打开文件initdg4msql.ora文件。

           该文件的格式是init.ora,这里的SID在后面需要用到,系统默认的是dg4msql,一般情况这样就可以了。

           如果改名,在之后使用这个修改后地名字即可,配合使用Test,则文件名变成initTest.ora。

          该文件是Gateway的初始参数文件,描述连接的是哪个SQL Server数据库。文件内容如下:

          HS_FDS_CONNECT_INFO=localhost:1433//DATABASE_NAME
          HS_FDS_TRACE_LEVEL=OFF
          HS_FDS_RECOVERY_ACCOUNT=RECOVER
          HS_FDS_RECOVERY_PWD=RECOVER

        3. 配置监听(F:\product\11.2.0\tg_1\NETWORK\ADMIN)  

          在listener.ora文件中加入如下内容

          LISTENER = 
            (ADDRESS_LIST =
              (ADDRESS = (PROTOCOL = tcp)(HOST = localhost)(PORT = 1523))

            )

          SID_LIST_LISTENER =
            (SID_LIST =
              (SID_DESC =
                (SID_NAME = dg4msql)  # 前面定义的SID
                (ORACLE_HOME = F:\product\11.2.0\tg_1)     #Oracle的安装目录
                (PROGRAM = dg4msql)   # 配置目录,不能变
              ) 
           )

       4. 配置tnsnames.ora文件(F:\product\11.2.0\tg_1\NETWORK\ADMIN)

           在tnsnames.ora文件中加入如下内容

           dg4msql=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1523)))(CONNECT_DATA=(SID=dg4msql))(HS=OK))

       5. 创建连接服务器即DBLink

           create database link DG4MSQL connect to sa identified by Aa123456  using 'dg4msql';--这里的dg4msql 对应tnsname.ora文件里的服务名。

           连接:SELECT * FROM ORGS@DG4MSQL;

           配置完成后,查询组织表,却始终报连接“无法解析指定的连接表示符”。

           当我把它换成如下形式后,发现可以连接了,

           create database link dg4msql2 connect to sa identified by Aa123456 

           using '(DESCRIPTION =
           (ADDRESS_LIST =
            (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1523))
           )
           (CONNECT_DATA =
             (SID = dg4msql)
           )
           (HS = OK)
         )';

         SELECT * FROM ORGS@dg4msql2;

 

令人感到迷惑!

原创粉丝点击