日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Oracle 配置透明網(wǎng)關(guān)訪問 MySQL 詳細(xì)教程

 LuciferLiu 2021-12-09

前言

從 Oracle 無法直接訪問 Mysql 數(shù)據(jù)庫,需要配置透明網(wǎng)關(guān)后通過 DBLink 實現(xiàn)訪問。

今天搞了一下午透明網(wǎng)關(guān)配置,流程比較復(fù)雜,并且有一些坑,這不立刻來給大家排排坑,說不定以后就用的著呢!

廢話不多說,直接實戰(zhàn)走起~

一、環(huán)境準(zhǔn)備

本次環(huán)境準(zhǔn)備了 3 臺主機,分別是 Oracle 數(shù)據(jù)庫,MySQL 數(shù)據(jù)庫,透明網(wǎng)關(guān)。

環(huán)境信息:

用途主機名IP地址主機版本數(shù)據(jù)庫版本DB名稱端口號
Oracle 數(shù)據(jù)庫orcl10.211.55.100RHEL7.611GR2orcl1521
MySQL 數(shù)據(jù)庫mysql10.211.55.101RHEL7.68.0.26lucifer3306
透明網(wǎng)關(guān)主機gateway10.211.55.102RHEL7.611GR21521

為什么透明網(wǎng)關(guān)需要單獨配置一臺主機?

  • 不影響數(shù)據(jù)庫主機的正常運行
  • 便于安裝配置以及管理
  • 數(shù)據(jù)庫遷移時不需要重新配置透明網(wǎng)關(guān)
  • RAC 環(huán)境下,無需重復(fù)安裝配置多個節(jié)點

?? 注意: 透明網(wǎng)關(guān)主機的配置不需要很高,無需安裝 Oracle 數(shù)據(jù)庫,僅安裝透明網(wǎng)關(guān)即可!

二、實戰(zhàn)演示

1、介質(zhì)裝備

首先,需要下載 GateWay 和 MySQL ODBC安裝包:

  • mysql-connector-odbc-8.0.27-1.el7.x86_64.rpm
  • p13390677_112040_Linux-x86-64_5of7.zip

方便大家學(xué)習(xí),我直接上傳到百度網(wǎng)盤供大家下載:

鏈接: https://pan.baidu.com/s/1ybJGu1JCbOgRbjCTqtl9TA 
提取碼: l062

2、安裝透明網(wǎng)關(guān)

2.1、主機環(huán)境配置

下載上述安裝介質(zhì)并上傳透明網(wǎng)關(guān)主機:

?? 注意: 安裝透明網(wǎng)關(guān)之前需要配置環(huán)境和創(chuàng)建用戶等等,可以參照 Linux 安裝單機 Oracle 的環(huán)境配置步驟,這里就不再詳述了!

使用 Oracle 一鍵安裝腳本配置即可:

cd /soft
./OracleShellInstall.sh -i 10.211.55.102 -txh Y

?? 注意: 由于主機安裝時選擇了最小化安裝,并且安裝透明網(wǎng)關(guān)需要圖形化,因此加上 -txh Y 安裝圖形化界面!

稍許等待幾分鐘之后,即可配置完成,由于沒有上傳 DB 安裝包,這個報錯是正常!

2.2、正式安裝

主機配置完成后,開始安裝透明網(wǎng)關(guān):

## 首先 root 用戶下,授權(quán) oracle 訪問 /soft 目錄
chown -R oracle:oinstall /soft
## 切換到 oracle 用戶下
su - oracle
## 解壓透明網(wǎng)關(guān)安裝包
unzip -q p13390677_112040_Linux-x86-64_5of7.zip
## 配置 vnc 訪問圖形化界面
vncserver

使用 VNC 客戶端連接:

開始安裝:

確認(rèn)安裝位置:

這里選擇 for ODBC 即可:

開始安裝,靜待結(jié)束:

root 用戶下執(zhí)行 root.sh 腳本:

/u01/app/oraInventory/orainstRoot.sh
/u01/app/oracle/product/11.2.0/db/root.sh

配置監(jiān)聽:

至此,透明網(wǎng)關(guān)安裝結(jié)束!

2.3、安裝 mysql-connector

首先需要安裝 unixODBC 依賴,否則報錯:

安裝 unixODBC 依賴后安裝 mysql-connector

yum install -y unixODBC*
rpm -ivh mysql-connector-odbc-8.0.27-1.el7.x86_64.rpm

?? 注意: 透明網(wǎng)關(guān)的安裝到這里就全都結(jié)束了,接下來就是配置部分了。

3、透明網(wǎng)關(guān)配置

透明網(wǎng)關(guān)安裝好之后,自然是需要配置才能使用的。

3.1、配置 odbc.ini

odbc.ini 文件用來存放 MySQL 數(shù)據(jù)庫相關(guān)信息,默認(rèn)不存在,root 用戶下手動創(chuàng)建即可:

cat<<EOF>/etc/odbc.ini
[lucifer]
Description     = ODBC for MySQL
Driver          = /usr/lib64/libmyodbc8w.so
Server          = 10.211.55.101
Port            = 3306
User            = lucifer
Password        = lucifer
Database        = lucifer 
EOF

配置文件中的配置信息如下:

  • [lucifer] 可以理解為是一個 SID 名稱,可以自定義,后面配置需要用到;
  • Server 是指 MySQL 數(shù)據(jù)庫主機的 IP 地址;
  • Port 是指 MySQL 數(shù)據(jù)庫的端口;
  • User 是指 Oracle 需要訪問的用戶名;
  • Password 是指被訪問用戶的登錄密碼;
  • Database 是指需要 MySQL 數(shù)據(jù)庫需要被訪問的 DB 名稱;

?? 注意: 如果有多個 MySQL 數(shù)據(jù)庫需要配置,則填寫多個即可!

[lucifer]
Description     = ODBC for MySQL
Driver          = /usr/lib64/libmyodbc8w.so
Server          = 10.211.55.101
Port            = 3306
User            = lucifer
Password        = lucifer
Database        = lucifer 

[lucifer1]
Description     = ODBC for MySQL
Driver          = /usr/lib64/libmyodbc8w.so
Server          = 10.211.55.105
Port            = 3306
User            = lucifer1
Password        = lucifer1
Database        = lucifer1

3.2、配置 init[SID].ora

切換至 oracle 用戶,進(jìn)入 $ORACLE_HOME/hs/admin  目錄下,新建一個 init[SID].ora 文件:

cat<<EOF>$ORACLE_HOME/hs/admin/initlucifer.ora
##HS Configuration
HS_FDS_CONNECT_INFO = lucifer
HS_FDS_TRACE_LEVEL = debug
HS_FDS_SHAREABLE_NAME = /usr/lib64/libodbc.so
HS_FDS_SUPPORT_STATISTICS=FALSE
HS_LANGUAGE=AMERICAN_AMERICA.UTF8
HS_NLS_NCHAR = UCS2
##ODBC Configuration
set ODBCINI=/etc/odbc.ini
EOF

這里 initSID.ora 中的 SID 名稱和文件中 HS_FDS_CONNECT_INFO 參數(shù)值,就是上一步中我們配置 odbc.ini 文件中的 [lucifer] 名稱。

?? 注意: 如果有多個 MySQL 數(shù)據(jù)庫需要配置,則創(chuàng)建多個 init[SID].ora 文件 即可!

3.3、配置監(jiān)聽

oracle 用戶下,進(jìn)入 $TNS_ADMIN 配置 listener.ora 文件:

cat<<EOF>>$TNS_ADMIN/listener.ora
SID_LIST_LISTENER =
(SID_LIST =
  (SID_DESC=
  (SID_NAME=lucifer)
  (ORACLE_HOME=/u01/app/oracle/product/11.2.0/db)
  (PROGRAM=dg4odbc)
  )
)
EOF

?? 注意: 如果有多個 MySQL 數(shù)據(jù)庫需要配置,則寫成如下格式!

cat<<EOF>>$TNS_ADMIN/listener.ora
SID_LIST_LISTENER =
(SID_LIST =
  (SID_DESC =
  (SID_NAME = lucifer)
  (ORACLE_HOME=/u01/app/oracle/product/11.2.0/db)
  (PROGRAM=dg4odbc)
  )
  (SID_DESC =
  (SID_NAME = lucifer1)
  (ORACLE_HOME=/u01/app/oracle/product/11.2.0/db)
  (PROGRAM=dg4odbc)
  )
)
EOF

重啟監(jiān)聽:

lsnrctl stop
lsnrctl start
lsnrctl status

配置完成之后,測試是否可以連接 MySQL 數(shù)據(jù)庫:

isql lucifer

成功連接 MySQL 數(shù)據(jù)庫,至此透明網(wǎng)關(guān)配置完成!

4、Oracle 數(shù)據(jù)庫配置

透明網(wǎng)關(guān)配置完成后,就只需要配置 Oracle 數(shù)據(jù)庫來連接透明網(wǎng)關(guān)。

4.1、配置 TNS

通過配置 TNS 來連接透明網(wǎng)關(guān),進(jìn)入 TNS 配置文件目錄 $TNS_ADMIN 配置 TNS:

cat<<EOF>>$TNS_ADMIN/tnsnames.ora
lucifer =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.211.55.102)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = lucifer)
    )
   (HS = OK)
  )
EOF

通過 tnsping 測試后,發(fā)現(xiàn)訪問沒有問題!

4.2、配置 DBLink 連接 MySQL 數(shù)據(jù)庫

接下來只需要創(chuàng)建你 DBLink 即可連接 MySQL 數(shù)據(jù)庫:

create public database link lucifer connect to "lucifer" identified by "lucifer" using 'lucifer';

測試連接操作 MySQL 數(shù)據(jù)庫:

select * from "lucifer"@lucifer order by "id";
delete from "lucifer"@lucifer where "id"=1;

至此,整個 Oracle 配置透明網(wǎng)關(guān)訪問 MySQL 就完成了!

三、最后總結(jié)

如果按照我的步驟來操作,整個流程走下來應(yīng)該會比較順暢,下面羅列一下我操作過程中遇到的一些報錯:

1、init[sid].ora 配置文件的 HS_FDS_SHAREABLE_NAME = /usr/lib64/libodbc.so 不正確,應(yīng)該是 ODBC 的 Lib包:

ERROR at line 1:
ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
ORA-02063: preceding line from DLK

2、init[sid].ora 里配置的 HS_LANGUAGE=AMERICAN_AMERICA.zhs16gbk 字符集不正確或者沒有配置,應(yīng)該是 Oracle 數(shù)據(jù)庫字符集:

ERROR at line 1:
ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
[

3、執(zhí)行查詢操作時,表名需要帶雙引號,因為 MySQL 默認(rèn)表名是區(qū)分大小寫,而 Oracle 是不區(qū)分大小寫的:

ERROR at line 1:
ORA-00942: table or view does not exist
[MySQL][ODBC 8.0(w) Driver][mysqld-5.7.18-log]Table 'test.T1' doesn't exist
{42S02,NativeErr = 1146}
ORA-02063: preceding 2 lines from DLK

4、Oracle 數(shù)據(jù)庫配置 TNS 時,沒有加 (HS = OK)

ERROR at line 1:
ORA-28546: connection initialization failed, probable Net8 admin error
ORA-02063: preceding line from LUCIFER

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多