我现在有两种数据库,一个为oracle 11g,版本为:11.1.0.6.0 - 64bit,安装在HP-IA64的服务器上,一个为mysql 5.1,安装在同一台服务器中。
    现在要实现oracle的数据库能够查询mysql数据库的表,想要通过oracle的异构功能来实现,但由于小弟对数据库了解不深,还请各位帮忙。
以下为我的各个配置文件,不知道错误出在哪儿里了:
1、由于oracle 11g没有了hsodbc,需要采用dg4odbc,dg4odbc运行正常:
$ dg4odbc
Oracle Corporation --- TUESDAY   NOV 17 2009 16:36:56.450Heterogeneous Agent Release 11.1.0.6.0 - 64bit Production  Built with
   Oracle Database Gateway for ODBC2、odbc.ini文件:
[localdp]
Description     = hsdp
Driver          = /app/lib/libmyodbc3_r-3.51.25.so
Server          = localhost
Database        = dp
Port            = 3306
UID             = root
Password        = 123456
Socket          =
Option          = 7340295
Stmt            =3、isql运行正常:
$ isql -v localdp
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> 4、init<>.ora文件:
$ cat initdp.oraHS_FDS_CONNECT_INFO=localdp 
HS_FDS_TRACE_LEVEL= off
HS_FDS_SHAREABLE_NAME=app/lib/libmyodbc3_r-3.51.25.so
HS_LANGUAGE=american_america.zhs16cgb231280
HS_OPEN_CURSORS=300
set ODBCINI=/app/configinfo/odbc.ini
set ORACLE_HOME=/app/oracle/app/oracle/product/11.1.0/db_25、listener.ora中加入的内容:
    (SID_DESC =
      (SID_NAME = dp)
      (ORACLE_HOME = /app/oracle/app/oracle/product/11.1.0/db_2)
      (PROGRAM = dg4odbc)
      (ENVS="LD_LIBRARY_PATH=/app/oracle/app/oracle/product/11.1.0/db_2/lib:/app/unixodbc/lib")
    )6、tnsnames.ora文件中加入内容:
hsd =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = dp)
    )
    (HS = OK)
  )7、tnsping hsd
$ tnsping hsdTNS Ping Utility for HPUX: Version 11.1.0.6.0 - Production on 17-NOV-2009 16:43:46Copyright (c) 1997, 2007, Oracle.  All rights reserved.Used parameter files:
/app/oracle/app/oracle/product/11.1.0/db_2/network/admin/sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = dp)) (HS = OK))
OK (0 msec)8、创建DBLINK可以成功。
create public database link hsdlink connect to "root" identified by "123456" using 'hsd';9、查询出错:SQL> select * from dp.dp_path@hsdlink;
select * from dp.dp_path@hsdlink
                         *
ERROR at line 1:
ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
ORA-02063: preceding line from HSDLINK现在找不到错误的原因,还请各位大侠帮忙。先行谢过!!!

解决方案 »

  1.   

    附加:oracle的环境变量:
    export ORACLE_BASE=/app/oracle/app/oracle
    export ORACLE_HOME=$ORACLE_BASE/product/11.1.0/db_2
    export ORA_CRS_HOME=$ORACLE_HOME/crs 
    export ORACLE_SID=ora11ghs
    export ORACLE_PATH=$ORACLE_BASE/common/oracle/sql:$ORACLE_HOME/rdbms/admin
    export PATH=$PATH:$ORACLE_HOME/bin:/usr/local/bin:/app/unixodbc/bin:$HOME/bin:. 
    export TNS_ADMIN=$ORACLE_HOME/network/admin 
    export ORA_NLS10=$ORACLE_HOME/nls/data 
    export SHLIB_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib:$ORACLE_HOME/rdbms/lib:/app/lib:/app/unixodbc/lib
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/rdbms/lib:/usr/lib:/usr/local/lib:$ORACLE_HOME/oracm/lib:/app/unixodbc/lib:/app/lib 
    export CLASSPATH=$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/jlib:$ORACLE_HOME/network/jlib:$ORACLE_HOME/JRE 
    export THREADS_FLAG=native 
    export TEMP=/tmp 
    export TMPDIR=/tmp 
    export NLS_LANG=american_america.zhs16cgb231280 export ODBCINI=/app/configinfo/odbc.ini