Oracle 19c使用DBlink连接Mysql8.0

说明:

某客户业务需求,需要在Oracle19c数据库上通过网络连接获取MySQL8.0数据库中业务数据。现针对该需求,配置Oracle19c连接至MySQL8.0数据库的dblink。

流程:

1.确认[Oracle]和[DG4ODBC]位数

通过检查确认,[Oracle]和[DG4ODBC]均是64位,这就要求[ODBC Driver Manager]和[ODBC Driver]也是64位组件

--DG4ODBC确认方式:
$ file $ORACLE_HOME/bin/dg4odbc
/oracle/app/product/19.3.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.32, BuildID[sha1]=b3f8329ffac4e745b3d8c96f64bfcd3a69d1ed6b, not stripped

2.下载及安装ODBC Driver Manager
在这里插入图片描述
ODBC驱动管理器介质下载地址:www.unixodbc.org

为了方便测试,我这里直接调用操作系统自带的ODBC驱动管理器,ODBC驱动管理器rpm已经安装
# rpm -ql unixODBC.x86_64
/etc/odbcinst.ini
/usr/bin/dltest
/usr/bin/isql
/usr/bin/iusql
/usr/bin/odbc_config
/usr/bin/odbcinst
/usr/lib64/libesoobS.so.2
/usr/lib64/libesoobS.so.2.0.0
/usr/lib64/libmimerS.so.2
/usr/lib64/libmimerS.so.2.0.0
/usr/lib64/libnn.so.2
/usr/lib64/libnn.so.2.0.0
...
...
/usr/share/man/man1/dltest.1.gz
/usr/share/man/man1/isql.1.gz
/usr/share/man/man1/iusql.1.gz
/usr/share/man/man1/odbc_config.1.gz
/usr/share/man/man1/odbcinst.1.gz
/usr/share/man/man5/odbc.ini.5.gz
/usr/share/man/man5/odbcinst.ini.5.gz

3.下载及安装ODBC Driver

下载地址:
在这里插入图片描述

https://downloads.mysql.com/archives/c-odbc/

解压介质并安装

\# 上传软件并解压
\# tar zxvf /soft/mysql-connector-odbc-8.0.12-linux-glibc2.12-x86-64bit.tar.gz
\# mkdir /usr/local/mysql-connector-odbc/
\# mv /soft/mysql-connector-odbc-8.0.12-linux-glibc2.12-x86-64bit/* /usr/local/mysql-connector-odbc/

4.mysql8.0建立测试数据

建立测试用户:
create user root@'%' identified by '123456';
grant all  on *.* to 'root'@'%'
--注意8.0无法直接通过授权来创建用户

mysql>create database test
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
5 rows in set (0.04 sec)

mysql> use test;
Database changed

mysql> create table byh(id int);
Query OK, 0 rows affected (0.73 sec)

mysql> insert into byh values(1);
Query OK, 1 row affected (0.47 sec)

mysql> select count(*) from byh;
+----------+
| count(*) |
+----------+
|        1 |
+----------+
1 row in set (0.00 sec)

5.配置ODBC data source

# vi /etc/odbc.ini
[myodbc8]
Driver = /usr/local/mysql-connector-odbc/lib/libmyodbc8a.so
Description = Connector/ODBC 8 Driver DSN
SERVER = 192.168.98.153       --mysql服务端IP
PORT = 3306                   --mysql服务端端口  
USER = root                   --mysql连接用户
PASSWORD = 123456             --mysql连接密码
DATABASE = test               --连接的数据库
OPTION = 0
TRACE = OFF

6.创建libodbcinst.so.2.0.0、libodbc.so.2.0.0文件软链接

\# cd /usr/lib64/
\# ln -s libodbcinst.so.2.0.0 libodbcinst.so.1
\# ln -s libodbc.so.2.0.0 libodbc.so.1

7.验证ODBC至MySQL Server端的连接

# isql myodbc8 -v
+------------------------+
| Connected!       |
|                 |
| sql-statement      |
| help [tablename]   |
| quit             |
|                 |
+-------------------------+
SQL>

8.Oracle配置listener.ora

编辑监听配置文件,创建LISTENER并对实例myodbc8进行静态注册

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.99.21)(PORT = 1521))
    )
  )
SID_LIST_LISTENER=
     (SID_LIST=
        (SID_DESC=
             (SID_NAME=myodbc8)
             (ORACLE_HOME=/oracle/app/product/19.3.0/db_1)
             (PROGRAM=dg4odbc)
             (ENV="LD_LIBRARY_PATH=/usr/lib64:/oracle/app/product/19.3.0/db_1/lib")
       )
   )

9.启动监听LISTENER并查看监听状态

$ lsnrctl start LISTENER
$ lsnrctl status LISTENER
Service "myodbc8" has 1 instance(s).
  Instance "myodbc8", status UNKNOWN, has 1 handler(s) for this service...

10.配置tnsnames.ora

$ vi tnsnames.ora
myodbc8 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.99.21)(PORT = 1521))
    (CONNECT_DATA =
      (SID = myodbc8)
    )
      (HS = OK)
  )

11.验证myodbc8连接串配置

$ tnsping myodbc8 
TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 29-OCT-2020 23:30:28
Copyright (c) 1997, 2019, Oracle.  All rights reserved.
Used parameter files:
/oracle/app/product/19.3.0/db_1/network/admin/sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.99.21)(PORT = 1521)) (CONNECT_DATA = (SID = myodbc8)) (HS = OK))
OK (10 msec)

12.配置网关参数文件initmyodbc5.ora

$ cd  $ORACLE_HOME/hs/admin
$ vi initmyodbc8.ora 
HS_FDS_CONNECT_INFO=myodbc8
# Data source name in odbc.ini
HS_FDS_TRACE_LEVEL=ON
HS_FDS_SHAREABLE_NAME=/usr/lib64/libodbc.so
HS_FDS_SUPPORT_STATISTICS=FALSE
HS_LANGUAGE=AMERICAN_AMERICA.WE8ISO8859P15
#
# ODBC env variables
set ODBCINI=/etc/odbc.ini

13.创建Oracle DBlink

SQL> create public database link myodbc8 connect to "root" identified by "123456" using 'myodbc8';

14.验证Oracle DBlink

SQL> select count(*) from "byh"@myodbc8;
  COUNT(*)
----------
   1

15.MOS参考文档:

配置Oracle至MySQL DBlink:
Detailed Overview of Connecting Oracle to MySQL Using DG4ODBC Database Link (文档 ID 1320645.1)
Odbc Connection From Oracle To SQL*Server Fails With Errors Ora-28546 and Ora-2063 When Using Connection via Database Link. (文档 ID 1389492.1)

附录:连接图
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
使用Oracle 19c时,可以使用sqlplus来执行SQL语句和管理数据库使用sqlplus连接数据库的命令类似于以下形式: sqlplus username/password@connect_identifier 其中,username是您的数据库用户名,password是您的数据库密码,connect_identifier是用于识别数据库连接信息,比如主机名、服务名等。 一旦成功连接数据库,您可以在sqlplus中执行SQL语句、查看表、创建对象等数据库管理操作。 在Oracle 19c中,您也可以使用sqlplus执行RMAN命令来备份和恢复数据库。例如,使用以下命令连接数据库并执行RMAN备份操作:[1] rman target sys/oracle@mydb19c auxiliary sys/oracle@testcdb 此命令将连接到名为mydb19c数据库实例,并使用sys用户作为目标数据库连接使用sys用户作为辅助数据库连接来执行备份操作。 此外,在Oracle 19c中,还可以使用FILE_NAME_CONVERT和DB_FILE_NAME_CONVERT参数来设置文件名转换规则,以便在不同的数据库之间迁移数据文件和表空间。例如,使用以下参数设置文件名转换规则: FILE_NAME_CONVERT=('/u01/app/oracle/oradata/MYDB19C/pdbseed/', '/u01/app/oracle/oradata/testpdb') DB_FILE_NAME_CONVERT='/u01/app/oracle/oradata/mypdb','/u01/app/oracle/oradata/TESTCDB/mystpdb' 这些参数可以在RMAN备份或恢复期间使用,以确保文件名在不同数据库之间正确转换。 总之,Oracle 19c可以使用sqlplus来执行SQL语句和管理数据库,并且可以使用RMAN命令和参数来执行备份和恢复操作,以及设置文件名转换规则。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值