首先 需要确认系统是否存在odbc for mysql的驱动
开始-》设置-》控制面板-》数据源->系统DSN-》添加 看是否存在 MYSQL-ODBC-5.X ANSI或者UNICODE的驱动
如果没有去 oracle注册个账号 http://dev.mysql.com/downloads/connector/odbc/ 下载
场景是 mysql数据库 上有个数据库是testlink 数据库testlink下有个表person
安装完成后 必须在系统DSN中添加 一个odbc连接 (开始我使用user dsn结果报了一堆错 不知为何 改成系统DSN就ok 建议用系统DSN)
我现在建立数据源名称是myodbc5
点击test 能够成功 ok
找到oracle的home目录
一般是我们需要配置 tnsnames.ora的上两级目录
比如 我的是 D:\oracle\product\10.2.0\db_2 下面可以通过 network/admin找到tnsnames.ora文件
%ORACLE_HOME%自然就是D:\oracle\product\10.2.0\db_2
%ORACLE_HOME%/hs/admin/
新建一个文件
init(数据库名而不是数据源名称).ora
我的名称为 inittestlink.ora
内容为:
#oracle监听启动的时候会通过 tnsname下的描述符里的sid去找到对应init(SID名称).ora文件 找到对应HS_FDS_CONNECT_INFO的odbc数据源
HS_FDS_CONNECT_INFO = myodbc5 #这里就是数据源的名称
HS_FDS_SUPPORT_STATISTICS=FALSE
HS_FDS_TRACE_LEVEL = debug
找到 %ORACLE_HOME%\NETWORK\ADMIN 找到tnsnames.ora 添加如下
切记 SID是数据库名 而非数据源名称
testlink =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SID = testlink)
)
(HS = OK)
)
找到同一目录下的listener.ora
将
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = d:\oracle\product\10.2.0\db_2)
(PROGRAM = extproc)
)
)
修改为 切记 SID_NAME 也是数据库名 不是数据源名称 PROGRAM 使用 dg4odbc,hsodbc(我这里用hsodbc成功 用dg4odbc失败)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = d:\oracle\product\10.2.0\db_2)
(PROGRAM = extproc)
)
(SID_DESC =
(SID_NAME = testlink)
(ORACLE_HOME =D:\oracle\product\10.2.0\db_2)
(PROGRAM = hsodbc)
)
)
ok配置完成后打开cmd命令 输入命令 lsnrctl reload
输入命令 lsnrctl status
输入命令tnsping testlink
一切ok
创建dblink 切记不要用 create public database link 否则会报错
create database link testlink11 connect to "root" identified by "123456" using 'testlink';
或者
create database link testlink11 connect to "root" identified by "123456" using '(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SID = testlink)
)
(HS = OK)
)';
使用 select * from testlink.person@testlink11 查询
或者 select * from "testlink"."person"@testlink11
或者 select * from "testlink.person"@testlink11