下载安装包
需要下载两个安装包unixODBC-2.3.7和mysql-Connector-ODBC 5.3.13
unixODBC源码包http://www.unixodbc.org/unixODBC-2.3.7.tar.gz
mysql-connector-odbc-5.3.13包https://dev.mysql.com/downloads/connector/odbc
版本:5.3.13
平台:Linux - Generic
下载:mysql-connector-odbc-5.3.13-linux-glibc2.12-x86-64bit.tar.gz
安装unixODBC
1 | yum install unixODBC* |
或
1 | tar -zxf unixODBC-2.3.7.tar.gz |
安装mysql-connector-odbc(odbc 5.3及以上是libmyodbc5a.so和libmyodbc5w.so。其中c5a是Ansi版,c5w是Unicode版)
1 | tar -zxf mysql-connector-odbc-5.3.13-linux-glibc2.12-x86-64bit.tar.gz |
注册驱动
1 | ./myodbc-installer -d -a -n "MySQL ODBC 5.3 Driver" -t "DRIVER=/usr/lib/libmyodbc5w.so;SETUP=/usr/lib/libmyodbc5w.so" |
配置odbc
编辑文件odbc.ini,把下面的内容加上去
1 | vi /etc/odbc.ini |
1 | [mysqldb] |
测试
1 | isql mysqldb -v |
配置Oracle
database gateway for odbc简称dg4odbc
oracle 11.2.0.4默认安装了odbc透明网关
验证
1 | cd $ORACLE_HOME/hs |
hs配置
每个使用dg4odbc的实例,都必须单独一个”init*.ora”文件,文件命名规则:init+<网关sid>+.ora
1 | cd $ORACLE_HOME/hs/admin |
1 | HS_FDS_CONNECT_INFO = mysqldb |
配置监听器
1 | vi $ORACLE_HOME/network/admin/listener.ora |
1 | LISTENER = |
重启监听后看下myodbc的服务是否已经启动
1 | lsnrctl reload |
配置tnsnames.ora
1 | vi $ORACLE_HOME/network/admin/tnsnames.ora |
1 | mysqldb = |
创建dblink
1 | create public database link mysqldb connect to "root" identified by "root" using 'mysqldb'; |
检查dblink
1 | select * from "test"@mysqldb; |
常见问题
1.
1 | SYS@vbox66in>select "id" from t1@myodbc1; |
原因:有一些内容显示不全,检查odbc监听文件,查看HS_LANGUAGE参数,配置为和数据库字符集一致
2.
1 | SYS@vbox66in>select "id" from "t1"@myodbc1; |
原因:NVARCHAR/NCHAR和图形数据类型通常以Unicode格式存储数据。unicode字符集因数据库的不同而不同,需要修改HS_NLS_NCHAR=UCS2
3.
1 | SYS@vbox66in>select * from a2@myodbc1; |
原因:MySQL数据中是区分大小写的,表需要用双引号引起来