oracle创建dblink访问mysql数据库

总体思路:

oracle——>dg4odbc——>odbc——>mysql

以上只是其中的一种方式。
备注:mysql安装在win server操作系统  oracle安装在linux系统

1、查看DG4ODBC版本

[oracle@VM_0_22_centos bin]$ file $ORACLE_HOME/bin/dg4odbc
/u01/app/oracle/product/11.2.0/db_1/bin/dg4odbc: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped

2、安装unixODBC

yum源配置这里忽略

[root@VM_0_22_centos ~]# yum install unixODBC*

3、安装成功后测试

[root@VM_0_22_centos ~]# odbcinst -j
unixODBC 2.2.14
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
[root@VM_0_22_centos ~]#

4、mysql odbc驱动安装

官网下载:https://dev.mysql.com/downloads/file/?id=506086

[root@VM_0_22_centos soft]# rpm -ivh mysql-connector-odbc-8.0.26-1.el6.x86_64.rpm
warning: mysql-connector-odbc-8.0.26-1.el6.x86_64.rpm: Header V3 DSA/SHA256 Signature, key ID 5072e1f5: NOKEY
Preparing... ########################################### [100%]
1:mysql-connector-odbc ########################################### [100%]
Success: Usage count is 1
Success: Usage count is 1

5、配置

vi /etc/odbc.ini
[mysql]
Description = mysql
Driver = MySQL ODBC 8.0 Unicode Driver
Server = ** //MySQL服务器IP
Database = yqt_if //MySQL数据库名 (对大小写敏感)
Port = 3306 //端口
USER = root //数据库用户名
Password = root //用户名密码
Socket =
Option = 3
Stmt =
CHARSET = UTF8 //数据库字符集

6、连接测试

[root@VM_0_22_centos soft]# isql mysql -v
[S1000][unixODBC][MySQL][ODBC 8.0(w) Driver]Host 'IP' is not allowed to connect to this MySQL server
[ISQL]ERROR: Could not SQLConnect

备注:不支持远程连接

mysql数据库root用户授权
mysql -uroot -proot
use mysql
select host from user where user='root';
update user set host = '%' where user ='root'; //%匹配所有IP都可以远程连接 localhost --> %
flush privileges;
select host from user where user='root';
[root@VM_0_22_centos ~]# isql mysql -v
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> show databases;
+-----------------------------------------------------------------+
| Database                                                        |
+-----------------------------------------------------------------+
| information_schema                                              |
| mysql                                                           |
| performance_schema                                              |
| sys                                                             |
| yqt_if                                                          |
+-----------------------------------------------------------------+
SQLRowCount returns 5
5 rows fetched
SQL> 

7、配置Oracle监听 追加内容

vi listener.ora
LISTENER =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = VM_0_22_centos)(PORT = 1521))
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC=
      (SID_NAME=myodbc5)
      (ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1)
      (PROGRAM=dg4odbc)
    )
  )

ADR_BASE_LISTENER = /u01/app/oracle
ADR_BASE_LISTENER = /u01/app/oracle

8、修改tnsnames.ora

myodbc5 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = <IP> )(PORT = 1521))
    (CONNECT_DATA =
      (SID=myodbc5)
    )
      (HS=OK)
  )

9、配置ODBC监听

cd $ORACLE_HOME/hs/admin
vi initmyodbc5.ora
HS_FDS_CONNECT_INFO=mysql   
HS_FDS_SHAREABLE_NAME=/usr/lib64/libodbc.so
HS_FDS_SUPPORT_STATISTICS= FALSE
HS_LANGUAGE=AMERICAN_AMERICA.UTF8
HS_NLS_NCHAR=UCS2  
set  ODBCINI=/etc/odbc.ini 

[oracle@VM_0_22_centos admin]$ lsnrctl stop
[oracle@VM_0_22_centos admin]$ lsnrctl start
SQL> alter system register;

##原监听
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=VM_0_22_centos)(PORT=1521)))
Services Summary...
Service "YTHJT" has 1 instance(s).
Instance "YTHJT", status READY, has 1 handler(s) for this service...
Service "YTHJTXDB" has 1 instance(s).
	Instance "YTHJT", status READY, has 1 handler(s) for this service...


##现监听
	(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=VM_0_22_centos)(PORT=1521)))
Services Summary...
Service "YTHJT" has 1 instance(s).
 Instance "YTHJT", status READY, has 1 handler(s) for this service...
Service "YTHJTXDB" has 1 instance(s).
	Instance "YTHJT", status READY, has 1 handler(s) for this service...
Service "myodbc5" has 1 instance(s).
 Instance "myodbc5", status UNKNOWN, has 1 handler(s) for this service...
 The command completed successfull

[oracle@VM_0_22_centos admin]$ tnsping myodbc5

TNS Ping Utility for Linux: Version 11.2.0.4.0 - Production on 27-AUG-2021 23:20:56

Copyright (c) 1997, 2013, Oracle.  All rights reserved.

Used parameter files:
/u01/app/oracle/product/11.2.0/db_1/network/admin/sqlnet.ora


 Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = IP)(PORT = 1521)) (CONNECT_DATA = (SID=myodbc5)) (HS=OK))
OK (0 msec)

10、创建dblink

SQL> create database  link TEST_MYSQL 
connect to "root" identified by "root" 
using  'myodbc5';

##查询mysql数据
SQL> select * from "bill_log"@TEST_MYSQL;

no rows selected

SQL> select cvid from "bd_cvdoc"@TEST_MYSQL;

CVID
--------------------------------------------
15841726323
posted @   ora_l  阅读(621)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
/* 鼠标点击求赞文字特效 */
点击右上角即可分享
微信分享提示

目录导航