Oracle通过DBLink连接MySQL

本文涉及的产品
RDSClaw,2核4GB
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: Oracle通过创建DBLink连接MySQL,查看修改MySQL表数据

一、概述

        linux环境下,Oracle数据库通过DBLink远程连接MySQL数据库。

二、环境信息

1、Oracle

    ①操作系统:Linux X86-64
    ②数据库版本:11.2.0.4.0
    ③字符集:SIMPLIFIED CHINESE_CHINA.AL32UTF8

2、MySQL

    ①操作系统:Linux i686
    ②数据库版本:5.7.21
    ③字符集:UTF8

三、配置UnixODBC

1、下载UnixODBC安装包

软件地址:ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.0.tar.gz

2、安装

①root用户执行

    cd /usr/local
    tar zxvf unixODBC-2.3.0.tar.gz

② 编译安装

    cd unixODBC-2.3.0/
    ./configure --prefix=/usr/local/unixODBC-2.3.0 --includedir=/usr/include --libdir=/usr/lib64 --bindir=/usr/bin --sysconfdir=/etc

    make
    make install

3、测试

执行命令:odbcinst -j,如果安装成功会显示:

[root@vbox66 local]# odbcinst -j
unixODBC 2.3.0
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@vbox66 local]# 

        unixODBC所需的头文件都被安装到了/usr/inlucde下,编译好的库文件安装到了/usr/lib64下,与unixODBC相关的可执行文件安装到了/usr/bin下,配置文件放到了/etc下。

四、配置odbc连接MyDQL

1、下载文件

https://cdn.mysql.com//Downloads/Connector-ODBC/5.1/mysql-connector-odbc-5.1.13-1.x86_64.rpm

2、rpm安装

rpm -ivh mysql-connector-odbc-5.1.13-1.x86_64.rpm

3、配置odbc.ini文件

vi /etc/odbc.ini
[testdb]
Description = mysql
Driver = MySQL ODBC 5.1 Driver
Server = 192.169.31.103            //MySQL服务器IP
Database = test                   //MySQL数据库名
Port = 3306                      //端口
USER = user_name                //数据库用户名
Password = passwd                //用户民密码
Socket =
Option = 3
Stmt =
CHARSET = UTF8                  //数据库字符集

4、测试odbc连接MySQL

运行命令: isql testdb -v //testdb为odbc.ini文件中中括号中的内容


[root@vbox66 lib64]# isql testdb -v
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> show databases;
+-----------------------------------------------------------------+
| Database                                                        |
+-----------------------------------------------------------------+
| information_schema                                              |
| aaa                                                             |
| jrjctest                                                        |
| mysql                                                           |
| otter                                                           |
| performance_schema                                              |
| sbtest                                                          |
| sys                                                             |
| test                                                            |
| test1                                                           |
| test_wr                                                         |
| wr                                                              |
| wr_test1                                                        |
| www                                                             |
+-----------------------------------------------------------------+
SQLRowCount returns 14
14 rows fetched

odbc连接MySQL成功!

五、配置Oracle通过DBLink访问MySQL

1、修改环境变量

su - oracle
vi .bash_profile
export ODBCINI=/etc/odbc.ini

2、配置Oracle监听

①cd $ORACLE_HOME/network/admin

vi listener.ora
添加如下信息:
SID_LIST_LISTENER=
  (SID_LIST=
      (SID_DESC=
         (SID_NAME=dg4odbc)
         (ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1)
         (PROGRAM=dg4odbc)
      )
  )

官方文档解释如下:
image

②修改tnsnames.ora

vi tnsnames.ora
添加如下信息:
dg4odbc =
  (DESCRIPTION=
    (ADDRESS = (PROTOCOL =tcp)(HOST = vbox66)(PORT = 1521))
    (CONNECT_DATA =
      (SID = dg4odbc))
      (HS=OK)
  )

官方文档解释如下:
image
image

③配置ODBC监听

cd $ORACLE_HOME/hs/admin
vi initdg4odbc.ora  //注意,这里init后面的内容要和之前配置 SID_NAME(dg4odbc)一致
HS_FDS_CONNECT_INFO=testdb
HS_FDS_TRACE_LEVEL = on
HS_FDS_SHAREABLE_NAME=/usr/lib64/libodbc.so
HS_FDS_SUPPORT_STATISTICS=FALSE
HS_LANGUAGE="simplified chinese_china.al32utf8"    //提供具有非oracle数据源的字符集、语言和区域信息的异构服务
HS_NLS_NCHAR=UCS2     //NVARCHAR/NCHAR和图形数据类型通常以Unicode格式存储数据。unicode字符集因数据库的不同而不同,设置此参数外部数据库保持一致

set ODBCINI=/etc/odbc.ini

④重启测试监听配置

oracle用户执行:

lsnrctl stop
lsnrctl start
alter system register;(数据库中执行)
lsnrctl status;

image

tnsping dg4odbc

image

显示以上信息则表示监听配置成功!

3、创建DBLink

①su - oracle

sqlplus / as sysdba
create public database link myodbc connect to "wangrui" identified by "wangrui" using 'dg4odbc'; --注意:wangrui和wangruit是MySQL用户名和密码,都需要使用双引号,dg4odbc使用单引号。

②select * from "a2"@myodbc1;

image

六、可能会遇到的问题

1、

SYS@vbox66in>select "id" from t1@myodbc1;
select "id" from t1@myodbc1
*
第 1 行出现错误:
ORA-28500: 连接 ORACLE 到非 Oracle 系统时返回此信息:
[

原因:有一些内容显示不全,检查odbc监听文件,查看HS_LANGUAGE参数,配置为和数据库字符集一致

2、

SYS@vbox66in>select "id" from "t1"@myodbc1;
select "id" from "t1"@myodbc1
*
第 1 行出现错误:
ORA-28500: 连接 ORACLE 到非 Oracle 系统时返回此信息: ORA-28541:
HS 初始化文件的第 8 行发生错误。 ORA-02063:
紧接着 2 lines (起自 MYODBC1)

原因:NVARCHAR/NCHAR和图形数据类型通常以Unicode格式存储数据。unicode字符集因数据库的不同而不同,需要修改HS_NLS_NCHAR=UCS2
image

3、

SYS@vbox66in>select * from a2@myodbc1;
select * from a2@myodbc1
*
第 1 行出现错误:
ORA-00942: 表或视图不存在
[MySQL][ODBC 5.1 Driver][mysqld-5.7.21-log]Table 'test.A2' doesn't exist
{42S02,NativeErr = 1146}
ORA-02063: 紧接着 2 lines (起自 MYODBC1)

原因:MySQL数据中是区分大小写的,表需要用双引号引起来

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
12月前
|
Oracle 关系型数据库 MySQL
Oracle linux 8 二进制安装 MySQL 8.4企业版
Oracle linux 8 二进制安装 MySQL 8.4企业版
527 1
|
SQL Oracle 关系型数据库
【YashanDB知识库】yashandb执行包含带oracle dblink表的sql时性能差
【YashanDB知识库】yashandb执行包含带oracle dblink表的sql时性能差
|
Oracle 关系型数据库 MySQL
使用崖山YMP 迁移 Oracle/MySQL 至YashanDB 23.2 验证测试
这篇文章是作者尚雷关于使用崖山YMP迁移Oracle/MySQL至YashanDB 23.2的验证测试分享。介绍了YMP的产品信息,包括架构、版本支持等,还详细阐述了外置库部署、YMP部署、访问YMP、数据源管理、任务管理(创建任务、迁移配置、离线迁移、校验初始化、一致性校验)及MySQL迁移的全过程。
|
Oracle 关系型数据库 MySQL
【YashanDB知识库】oracle dblink varchar类型查询报错记录
这篇文章主要介绍了 Oracle DBLINK 查询崖山 DB 报错的相关内容,包括 ODBC 安装配置、数据源配置、dblink 环境配置、问题原因分析及规避方法。问题原因是 dblink 连接其他数据库时 varchar 类型转换导致的,还介绍了 long 类型限制、char 等类型区别,规避方法是修改参数 MAX_STRING_SIZE 支持 32K。
|
SQL Oracle 关系型数据库
MySQL 和 Oracle 的区别?
本文对比了Oracle和MySQL数据库的多个方面。Oracle适用于大型数据库,支持高并发和大访问量,市场占有率为40%,安装占用空间较大,约3G;而MySQL适合中小型应用,是开源免费的,安装仅需152M。两者在主键生成、字符串处理、SQL语句、事务处理等方面存在差异。Oracle功能更为强大,尤其在企业级应用中表现突出,而MySQL则以简单易用见长。
1459 7
MySQL 和 Oracle 的区别?
|
监控 Oracle 关系型数据库
Mysql、Oracle审计日志的开启
通过上述步骤,可以在 MySQL 和 Oracle 数据库中启用和配置审计日志。这些日志对于监控数据库操作、提高安全性和满足合规性要求非常重要。确保正确配置审计参数和策略,定期查看和分析审计日志,有助于及时发现并处理潜在的安全问题。
840 11
|
Oracle 关系型数据库 数据库
【YashanDB知识库】oracle dblink varchar类型查询报错记录
在使用Oracle DBLink查询VARCHAR类型数据时,可能会遇到多种报错。通过了解常见错误原因,采取合适的解决方法,可以有效避免和处理这些错误。希望本文提供的分析和示例能帮助你在实际工作中更好地处理DBLink查询问题。
445 10
|
Oracle 关系型数据库 MySQL
shell获取多个oracle库mysql库所有的表
请注意,此脚本假设你有足够的权限访问所有提到的数据库。在实际部署前,请确保对脚本中的数据库凭据、主机名和端口进行适当的修改和验证。此外,处理数据库操作时,务必谨慎操作,避免因错误的脚本执行造成数据损坏或服务中断。
273 0
|
运维 关系型数据库
Oracle-08:连接查询
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------   首先提供数据库脚本,供测试使用 create table DEPT ( deptno NUMBER(2) not null, dname VARCHAR2(20), ...
1074 0

热门文章

最新文章

推荐镜像

更多
下一篇
开通oss服务