Oracle通过dblink连接到多台MySQL
来源:互联网 发布:理财哪个软件好 编辑:程序博客网 时间:2024/05/02 01:14
环境:oracle 11.2.0.1.0 RHEL5.3 64bit mysql Server version: 5.5.9
1:下载[ODBC Driver Manager] unionODBC2.2.14,解压后放入/u01/app/tools/unionodbc 目录下
[oracle@wonder tools]$ ls /u01/app/tools/unionodbc/
bin include lib
2:下载mysql-connector-odbc-3.51.30-linux-rhel5-x86-64bit.tar.gz解压重命名到my5
[oracle@szmlserver12_32 tools]$ ls /u01/app/tools/
my5 odbc.ini unionodbc
3:配置 ODBC data source for MySQLConnector/ODBC driver
[oracle@wonder tools]$ cat /u01/app/tools/odbc.ini
[myodbc3]
Driver = /u01/app/tools/my5/lib/libmyodbc3.so
SERVER = 22.4.22.16
PORT = 3306
USER = soft
PASSWORD = Ugfd3589
DATABASE = estore
OPTION = 3
SOCKET =
4:设置环境变量
[oracle@wonder tools]$ cat ~/.bash_profile
PATH=$PATH:$HOME/bin
export PATH
export ORACLE_BASE=/u01/app
export ORACLE_HOME=/u01/app/oracle
export ORACLE_SID=hidb
export LANG=en
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/u01/app/tools/unionodbc/lib
export ODBCINI=/u01/app/tools/odbc.ini
export PATH=$ORACLE_HOME/bin:$PATH:/u01/app/tools/unionodbc/bin
红色为新增部分
5:测试连接成功
[oracle@wonder tools]$ isql myodbc3 -v
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>
6:配置listener.ora
[grid@wonder ~]$ cat /u01/app/11.2.0/grid/network/admin/listener.ora
# listener.ora Network Configuration File: /u01/app/11.2.0/grid/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = wonder.easou.com)(PORT = 1521))
)
)
ADR_BASE_LISTENER = /u01/app/11.2.0
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON # line added by Agent
SUBSCRIBE_FOR_NODE_DOWN_EVENT_LISTENER=OFF
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME= myodbc3)
(ORACLE_HOME= /u01/app/oracle)
(PROGRAM = dg4odbc)
(ENVS=LD_LIBRARY_PATH=/u01/app/oracle/bin:/u01/app/tools/unionodbc/lib:/u01/app/tools/my5/lib)
)
)
7:配置tnsnames.ora,最后增加如下内容
myodbc3=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SID = myodbc3)
)
(HS = OK)
)
8:配置HS
[oracle@wonder tools]$ cat /u01/app/oracle/hs/admin/initmyodbc3.ora
HS_FDS_CONNECT_INFO = myodbc3
HS_FDS_TRACE_LEVEL = off
HS_FDS_SHAREABLE_NAME = /u01/app/tools/unionodbc/lib/libodbc.so
HS_LANGUAGE=american_america.we8iso8859p1
HS_NLS_NCHAR=UCS2
#
# ODBC specific environment variables
#
set ODBCINI= /u01/app/tools/odbc.ini
9:重启监听
[grid@wonder ~]$ lsnrctl stop
[grid@wonder ~]$ lsnrctl start
10:配置DBLINK
create database link myodbc connect to "soft" identified by "Ugfd3589" using 'myodbc3'; --前面要双引号才不报错
SQL> select count(*) from "acct_user"@myodbc;
COUNT(*)
----------
13
但是发现 select * from "acct_user"@myodbc 时,只会显示一条数据,晕倒了,经google发现,通过更新驱动可以得到解决
下面的步骤是在上面的基础上更换了最新ODBC 5.5.2解决了问题,以及一oracle主机连接2个mysql服务器例子:
下载mysql-connector-odbc-5.2.2-linux-glibc2.3-x86-64bit.tar
http://www.mysql.com/downloads/connector/odbc/#downloads
1:更换配置odbc.ini
[oracle@wonder hs]$ cat /u01/app/tools/odbc.ini
[mysql203]
Driver = /u01/app/tools/my5/lib/libmyodbc5w.so
SERVER = 120.2.93.3
PORT = 3306
USER = search_wei
PASSWORD = aaaa
DATABASE = search_wei
OPTION = 3
SOCKET =
[mysql213]
Driver = /u01/app/tools/my5/lib/libmyodbc5w.so
SERVER = 125.91.0.213
PORT = 3306
USER = droid
PASSWORD = bbbb
DATABASE = droid
OPTION = 3
SOCKET =
2: hs/admin 中
[oracle@wonder hs]$ ls admin/
extproc.ora initmysql203.ora listener.ora.sample
initdg4odbc.ora initmysql213.ora tnsnames.ora.sample
[oracle@wonder hs]$ cat admin/initmysql213.ora
HS_FDS_CONNECT_INFO = mysql213
HS_FDS_TRACE_LEVEL = debug
HS_FDS_SHAREABLE_NAME = /u01/app/tools/unionodbc/lib/libodbc.so
HS_LANGUAGE=american_america.we8iso8859p1
HS_NLS_NCHAR=UCS2
#SELECT NULL COLUMN
HS_FDS_SQLLEN_INTERPRETATION = 32
#DIRECT ACESS MYSQL INT COLUM
HS_FDS_FETCH_ROWS=1
set ODBCINI= /u01/app/tools/odbc.ini
[oracle@wonder hs]$ cat admin/initmysql203.ora
HS_FDS_CONNECT_INFO = mysql203
HS_FDS_TRACE_LEVEL = debug
HS_FDS_SHAREABLE_NAME = /u01/app/tools/unionodbc/lib/libodbc.so
HS_LANGUAGE=american_america.we8iso8859p1
HS_NLS_NCHAR=UCS2
set ODBCINI= /u01/app/tools/odbc.ini
3: tnsnames.ora
mysql213=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SID = mysql213)
)
(HS = OK)
)
mysql203=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SID = mysql203)
)
(HS = OK)
)
4: listener.ora
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME= mysql203)
(ORACLE_HOME= /u01/app/oracle)
(PROGRAM = dg4odbc)
(ENVS=LD_LIBRARY_PATH=/u01/app/oracle/bin:/u01/app/tools/unionodbc/lib:/u01/app/tools/my5/lib)
)
(SID_DESC=
(SID_NAME= mysql213)
(ORACLE_HOME= /u01/app/oracle)
(PROGRAM = dg4odbc)
(ENVS=LD_LIBRARY_PATH=/u01/app/oracle/bin:/u01/app/tools/unionodbc/lib:/u01/app/tools/my5/lib)
)
)
5:重启监听
6:分别建立到3和203的dblink,验证通过
create database link mysql203 connect to "search_wei" identified by "aaaa" using 'mysql203';
select * from "t_info_stat"@mysql203;
SQL> create database link mysql213 connect to "droid" identified by "bbbb" using 'mysql213';
select * from "ums_module"@mysql213;
哈哈!大功搞成!
- Oracle通过dblink连接到多台MySQL
- oracle通过dblink连接Mysql
- oracle通过DBlink连接mysql
- [Oracle, MySQL] Oracle通过dblink连接MySQL
- oracle透明网关通过dblink连接slq server和mysql
- oracle通过dblink连接mysql配置详解(全Windows下)
- Oracle dblink 连接
- oracle dblink mysql
- Oracle通过DBLink操作Excel
- Oracle通过DBLink操作Excel
- oracle通过dblink抽取数据处理
- Oracle通过DBLINK访问GreenPlum
- oracle通过DBLINK执行DDL
- oracle 通过脚本创建dbLink
- Oracle 通过ODBC 连接MySql
- Oracle使用dblink连接SqlServer
- Oracle修改dblink连接数
- oracle dblink 远程连接查询
- 第十八节 java学习 数组
- Oracle中TO_DATE TO_CHAR格式
- [sicily online]1014. Specialized Four-Dig
- 按行内容来分类:按照一行中元素个数的不同写入不同的文件夹
- 面向垂直搜索引擎基于表格特征的数据抽取方法
- Oracle通过dblink连接到多台MySQL
- android学习 豆瓣 整体架构
- 解决java网络编程IPv6问题
- running step of Make
- 日期转换(西历转和历)
- Android 中的 Menu
- Linux 抓取网页实例(shell+awk)
- 10054 - The Necklace
- ORACLE存储过程基础