ora28500 mysql_Oracle使用 ODBC+DBLINK 访问 Mysql
接到一個需求要在oracle中訪問MySql。
實現過程:
一、oracle主機上安裝unixODBC????? 和mysql-connector-odbc驅動。
二、oracle中建立到MySQL的DBlink。
實驗環境和驅動:
[OS Version]
Oracle Linux Server release 5.7
[ORACLE Version]
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
[MySql Version]:
MySQL 5.1.54-1
[ODBC Driver Manager]
unixODBC-2.2.14-linux-x86-64.tar.gz
[MySQL Connector/ODBC driver ]
mysql-connector-odbc-5.1.10-linux-rhel5-x86-64bit.tar.gz
驅動的安裝和配置都在oracle的主機上進行。配置后要重啟oracle監聽。
Step1. 確定使用32/64-bits的驅動
$ file $ORACLE_HOME/bin/dg4odbc
/opt/ora11g/product/11.2.3/db_1/bin/dg4odbc:ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9,dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped
以上信息表明我們要使用64-bit的ODBC Driver Manager
Step 2 下載和安裝 [ODBC Driver Manager] UnixODBC 2.2.14
url:http://sourceforge.net/projects/unixodbc/files/unixODBC/2.2.14/unixODBC-2.2.14-linux-x86-64.tar.gz/download
$ tar zxvfunixODBC-2.2.14-linux-x86-64.tar.gz
默認會解壓到當前目錄usr/local目錄下,包含bin,include ,lib 三個目錄
$ ls usr
bin?include? lib
創建目錄unixodbc-2.2.14
$ mkdir unixodbc-2.2.14
進入unixodbc-2.2.14
$ cd unixodbc-2.2.14
把 剛解壓的 usr/local/目錄 下的文件移動到unixodbc-2.2.14(注意不是/usr/local)
$ mv ~/tools/usr/local/*? .
$ ll
total 12
drwxr-xr-x 2oracle dba 4096 Nov 20? 2008 bin
drwxr-xr-x 2 oracle dba 4096 Nov 20? 2008 include
drwxr-xr-x 2 oracle dba 4096 Nov 20? 2008 lib
$ cd ..
$ rm -r usr/
編輯profile文件,設置LD_LIBRARY_PATH
$ vi?~/.bash_profile
export LD_LIBRARY_PATH=/app/oracle/tools/unixodbc-2.2.14/lib
export?PATH=/usr/sbin:/app/oracle/tools/unixodbc-2.2.14/bin:$PATH
$ source?~/.bash_profile
Step 3 下載和安裝 [ODBC Driver]
url:http://www.mysql.com/downloads/connector/odbc/5.1.html
mysql-connector-odbc-3.51.30-linux-rhel5-x86-64bit.tar.gz
$ tar zxvfmysql-connector-odbc-3.51.30-linux-rhel5-x86-64bit.tar.gz
$ mvmysql-connector-odbc-5.1.10-linux-rhel5-x86-64bit?? mysqlodbc_5.1.0
Step 4? 配置 ODBC data source for MySQLConnector/ODBC driver
http://dev.mysql.com/doc/refman/5.5/en/connector-odbc-configuration-dsn-unix.html
創建odbc.ini
Database 指定的mysql數據庫名區分大小寫。
$ vi odbc.ini
[ Data Sources]
myodbc3????= MyODBC 3.51 Driver DSN
[myodbc3]
Driver??????= /app/oracle/tools/mysqlodbc_3.51/lib/libmyodbc3.so
Description?= Connector/ODBC 3.51 Driver DSN
SERVER??????= 192.168.10.10
PORT????????=3306
USER????????=test_user
Password????=test_admin
Database????= test
OPTION??????= 3
SOCKET??????=
Step 5? oracle主機用isql測試oracle到mysql的連接
把odbc.ini加到環境變量中
$?vi? ~/.bash_profile
export ODBCINI=/app/oracle/tools/odbc.ini
$?source? ~/.bash_profile
$ cd unixodbc-2.2.14/bin/
[oracle@CNPEKVS43 bin]$? ./isql myodbc3 -v
+---------------------------------------+
| Connected!???????????????? |
| sql-statement??????????????? |
| help [tablename]???????????? |
| quit??????????? ???????????|
|???????????????????????? ??|
+---------------------------------------+
Step6 配置 tnsnames.ora
Add the following line to? $ORACLE_HOME/network/admin/tnsnames.ora
myodbc3 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SID =myodbc3))
(HS=OK)
)
)
Step 7 配置 listener.ora
Open$ORACLE_HOME/network/admin/listener.ora
find SID_LIST_LISTENER definition and add anew entry for myodbc5
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = myodbc3)
(ORACLE_HOME =/opt/ora11g/product/11.2.3/db_1)
(PROGRAM = dg4odbc)
(ENVS=LD_LIBRARY_PATH=/app/oracle/tools/unixodbc-2.2.14/lib)
)
)
注意:ENVS=LD_LIBRARY_PATH一定要指到lib目錄下,否則會出現下述錯誤
ERROR at line 1:
ORA-28500: connection from ORACLE to anon-Oracle system returned this message:
[unixODBC][Driver Manager]Can't open lib
'/app/oracle/tools/mysqlodbc_5.1.0/lib/libmyodbc5.so': libodbcinst.so.1:
cannot open shared object file: No suchfile or directory {01000}
ORA-02063: preceding 2 lines from MYODBC3
Step 8: 配置監聽的初始化文件
This file does not exist and you have tocreate it.
vi $ORACLE_HOME/hs/admin/initmyodbc3.ora
HS_FDS_CONNECT_INFO = myodbc3
HS_FDS_TRACE_LEVEL =user
HS_FDS_SHAREABLE_NAME = /app/oracle/tools/unixodbc-2.2.14/lib/libodbc.so
set ODBCINI=/app/oracle/tools/odbc.ini
Step 9: 重啟監聽
$ lsnrctl stop
$ lsnrctl start
$ lsnrctl status
$ tnsping myodbc3
如果tnsping 有錯誤,檢查listener.ora,tnsnames.ora
Step 10 創建dblink
SQL>create public database link myodbc3? connect to "mysql_user" identified by "password" using'myodbc3';
SQL> select * from"dual"@myodbc3;
[MOS]參考文檔:
Detailed Overview of Connecting Oracle to MySQL Using DG4ODBC DatabaseLink [ID 1320645.1]
總結
以上是生活随笔為你收集整理的ora28500 mysql_Oracle使用 ODBC+DBLINK 访问 Mysql的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 文件名重定向到txt中Linux,Lin
 - 下一篇: java中的de是什么_【转】java中