对于oralce db_link mysql数据库,从开始到写博客,花了2天时间,配置了2遍。第一遍网上找资料跟着配置,安装了Gateway for ODBC。第二遍把虚拟机系统重新做了,没有安装Gateway for ODBC,两次均成功。好了废话少说,进入正题。
一、系统环境
oracle客户端:win10系统,oralce client64位
oralce服务端:win10系统(虚拟机),oracle database64位
二、配置ODBC
检查oracle服务端是否有ODBC数据源驱动,因为我是64位系统
打开ODBC数据源
选择系统DSN,注意一定要选择系统DSN。
若安装ODBC报此错误
则需要安装Microsoft Visual C++。
下载地址: https://download.microsoft.com/download/3/2/2/3224B87F-CFA0-4E70-BDA3-3DE650EFEBA5/vcredist_x64.exe(64位的)
下载安装Microsoft Visual C++之后,再次安装mysql odbc,安装完成之后进行mysql odbc的配置
三、配置透明网关
在oralce服务端,找到安装目录,例如我的是E:\app\Administrator\product\11.2.0\dbhome_1
在此目录下找到hs\admin\initdg4odbc.ora复制一份,命名规则是:init+sid.ora,所以就是initmysqlodbc.ora
打开initmysqlodbc.ora文件,将默认的
HS_FDS_CONNECT_INFO = <odbc data_source_name>
HS_FDS_TRACE_LEVEL = <trace_level>改为:
HS_FDS_CONNECT_INFO = mysqlodbc
HS_FDS_TRACE_LEVEL = off
然后返回到dbhome_1文件夹下,找到NETWORK\ADMIN\listener.ora
添加
(SID_DESC =
(SID_NAME = MYSQLODBC)
(ORACLE_HOME = E:\app\Administrator\product.2.0\dbhome_1)
(PROGRAM = dg4odbc) #注意dg4odbc不要改动
)
再打开tnsnames.ora
添加
MYSQLODBC =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = mysqlodbc)
)
(HS = OK)
)
然后重启监服务,可以在service.msc里重启,也可以使用命令
停止:lsnrctl stop ,
启动:lsnrctl start;
四、创建db_link并查询
create database link mysqlodbc connect to "root" identified by "密码" using 'mysqlodbc';--注意用户名密码双引号,using后面单引号。
五、进行查询
select * from "test"@mysqlodbc--注意oralce会自动将sql转换为大写,而mysql大小写是两张不同的表,所以在此要使用单引号以便在mysql中可以识别。
六、部分错误解决方案
1.ORA-28546: 连接初始化失败, 可能是 Net8 管理错误
解决方案1:检查initmysqlodbc.ora文件
查看HS_FDS_CONNECT_INFO = mysqlodbc中的mysqlodbc是否与自己在ODBC数据源中所起的名称是否一致。
解决方案2:检查自己是否没有重启监听服务
2.ORA-00942: 表或视图不存在:
解决方案:查询sql语句,mysql的表一定要带双引号,否则Mysql无法识别。
后记:第一次配置的时候走了不少弯路,所以写下此篇文章以便有需要的人少走一点弯路。