目录
2、 配置达梦连接Oracle数据库的dblink加载库环境
1. 下载oracle clien、sqlplus和oracle odbc ,并安装在达梦服务器
一、OCI方式创建dblink
1、下载OCI ,并安装在达梦服务器
在ORACLE官网中下载OCI ,如下链接:
http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html
下载与数据库版本一致的OCI,此实验我下载的版本为:12.2.0.1版本OCI下载的OCI包,最好包含basic ,sqlplus ,sdk 并将它上传到达梦数据库所在的服务器上,如下:
[root@localhost opt]# ls -lrt
-rw-r–r--. 1 root root 68965195 Aug 9 23:38 instantclient-basic-linux.x64-12.2.0.1.0.zip
所谓安装,即解压即可,在生成的instantclient_12_2 目录中包含了达梦数据库所需要的DBLINK与oralce数据库连接的加载文件。
[root@localhost opt]# unzip instantclient-basic-linux.x64-12.2.0.1.0.zip
2、配置达梦连接Oracle数据库的dblink加载库环境
将上一步解压出来的so文件复制拷贝到达梦数据库所在的bin目录下:
[root@localhost instantclient_12_2]# pwd
/opt/instantclient_12_2
[root@localhost instantclient_12_2]# cp ./*.so /home/dmdba/dmdbms/bin
将libclntsh.so.12.1 复制一个名字为:libclntsh.so ,也可以对这个文件创建一个软链接,名字为:libclntsh.so
[root@localhost instantclient_12_2]# cp libclntsh.so.12.1 libclntsh.so
ldd 查看 libclntsh.so
[root@localhost instantclient_12_2]# ldd libclntsh.so
查找缺失驱动 放置到/lib64 目录下
[root@localhost instantclient_12_2]# find / -name libmql1.so
[root@localhost instantclient_12_2]# cp libmql1.so /lib64/
[root@localhost instantclient_12_2]# find / -name libipc1.so
[root@localhost instantclient_12_2]# cp libipc1.so /lib64
[root@localhost instantclient_12_2]# find / -name libnnz12.so
[root@localhost instantclient_12_2]# cp libnnz12.so /lib64
[root@localhost instantclient_12_2]# find / -name libons.so
[root@localhost instantclient_12_2]# cp libons.so /lib64
[root@localhost instantclient_12_2]# ls -lrt libnsl*
ls: cannot access ‘libnsl*’: No such file or directory
[root@localhost instantclient_12_2]# find / -name libclntshcore.so.12.1
[root@localhost instantclient_12_2]# cp libclntshcore.so.12.1 /lib64
安装库包
dnf install libnsl
扩展:DNF 取代 YUM
再次查看[root@localhost instantclient_12_2]# ldd libclntsh.so
3、重启达梦数据库
具备上一步条件后,重启达梦数据库
[dmdba@localhost bin]$ ./DmServicetest2 restart
重启达梦数据库的目的是为了达梦数据库能加载到DBLINK访问Oracle数据库所需要的文件
4、创建DBLINK
登录到达梦数据库或者管理工具中,创建dblink 并查询oralce数据库中scott用户下的表信息。
create or replace public link dm2oracle connect ‘ORACLE’ with “SCOTT” identified by “scott” using ‘192.168.50.136:1521/EMREP’;
5、测试dblink的连通性
select * from EMP@dm2oracle;
二、ODBC方式创建dblink
使用ODBC方式访问Oracle需要Oracle ODBC驱动包
1. 下载oracle clien、sqlplus和oracle odbc ,并安装在达梦服务器
在ORACLE官网中下载oracle client、sqlplus和oracle odbc,如下链接:
http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html
此实验我下载的版本为:12.2.0.1版本的,最好包含basic ,sqlplus ,sdk 并将它上传到达梦数据库所在的服务器上,如下:
[root@localhost opt]# ls -lrt
-rwxr-xr-x. 1 root root 68965195 Aug 9 23:38 instantclient-basic-linux.x64-12.2.0.1.0.zip
-rwxr-xr-x. 1 root root 634023 Aug 19 01:00 instantclient-odbc-linux.x64-12.2.0.1.0-2.zip
-rw-r–r--. 1 root root 904309 Aug 20 05:19 instantclient-sqlplus-linux.x64-12.2.0.1.0.zip
解压缩
[root@localhost opt]# unzip instantclient-basic-linux.x64-12.2.0.1.0.zi
[root@localhost opt]# unzip instantclient-odbc-linux.x64-12.2.0.1.0-2.zip
[root@localhost opt]# unzip instantclient-sqlplus-linux.x64-12.2.0.1.0.zip
[root@localhost opt]# unzip instantclient-sdk-linux.x64-12.2.0.1.0.zip
2. dm端安装ODBC
两种方式:源码编译和yum安装
此实验用源码编译安装(需要gcc环境)
1).上传odbc包并解压
使用地址http://www.unixodbc.org/可下载unixODBC源码包
下载完成后将包上传至源数据库服务器/opt目录,执行如下命令解压文件:
[root@localhost opt]# tar -zxvf unixODBC-2.3.11.tar.gz
2).编译ODBC,需要gcc环境
[root@localhost unixODBC-2.3.11]#./configure --enable-gui=no
[root@localhost unixODBC-2.3.11]# make
[root@localhost unixODBC-2.3.11]# make install
[root@localhost unixODBC-2.3.11]# odbc_config --version
源码编译安装完成之后,还需要检查oracle odbc的依赖是否正常。
如下:
[root@localhost instantclient_12_2]# ldd libsqora.so.12.1
查找缺失驱动,放置到/lib64 目录下
[root@localhost instantclient_12_2]# find / -name libnsl.so.1
[root@localhost instantclient_12_2]# find / -name libclntsh.so.12.1
[root@localhost instantclient_12_2]# cp libclntsh.so.12.1 /lib64
[root@localhost instantclient_12_2]# find / -name libclntshcore.so.12.1
[root@localhost instantclient_12_2]# cp libclntshcore.so.12.1 /lib64
[root@localhost instantclient_12_2]# find / -name libodbcinst.so.2
[root@localhost instantclient_12_2]# cp /usr/local/lib/libodbcinst.so.2 /lib64
安装库包
dnf install libnsl
扩展:DNF 取代 YUM
再次查看[root@localhost instantclient_12_2]# ldd libsqora.so.12.1
[root@localhost instantclient_12_2]# find / -name libmql1.so
[root@localhost instantclient_12_2]# cp libmql1.so /lib64
[root@localhost instantclient_12_2]# find / -name libipc1.so
[root@localhost instantclient_12_2]# cp libipc1.so /lib64
[root@localhost instantclient_12_2]# find / -name libnnz12.so
[root@localhost instantclient_12_2]# cp libnnz12.so /lib64
[root@localhost instantclient_12_2]# find / -name libons.so
[root@localhost instantclient_12_2]# cp libons.so /lib64
[root@localhost instantclient_12_2]# ldd libsqora.so.12.1
3. ODBC的配置
1).配置ODBC数据源
配置tnsnames.ora,并配置TNS_ADMIN系统环境变量
[root@localhost ~]# cat /opt/instantclient_12_2/network/admin/tnsnames.ora
EMREP =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.50.136)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = EMREP)
)
)
配置TNS_ADMIN系统环境变量
[root@localhost ~]# vim /etc/profile —添加下面export
export TNS_ADMIN=/opt/instantclient_12_2/network/admin
[root@localhost ~]# source /etc/profile
[root@localhost instantclient_12_2]# sqlplus / as sysdba@EMREP
bash: sqlplus: command not found…
[root@localhost instantclient_12_2]# ln -s /opt/instantclient_12_2/sqlplus /usr/bin
[root@localhost instantclient_12_2]# sqlplus / as sysdba@EMREP
sqlplus: error while loading shared libraries: libsqlplus.so: cannot open shared object file: No such file or directory
[root@localhost instantclient_12_2]# find / -name libsqlplus.so
/opt/instantclient_12_2/libsqlplus.so
[root@localhost instantclient_12_2]# cp libsqlplus.so /lib64
[root@localhost instantclient_12_2]# sqlplus / as sysdba@EMREP
Error 6 initializing SQL*Plus
SP2-0667: Message file sp1
SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory
。。。。。。
2)查看ODBC配置文件的路径
[root@localhost ~]# odbcinst -j
3)配置ODBC文件
odbc.ini和odbcinst.ini
[root@localhost ~]# cat /usr/local/etc/odbc.ini
[ORA12]
DSN = ORA12
Driver = Oracle ODBC12
ServerName = EMREP
[root@localhost ~]# cat /usr/local/etc/odbcinst.ini
[Oracle ODBC12]
Description = Oracle ODBC Driver
Driver = /opt/instantclient_12_2/libsqora.so.12.1
4.测试ODBC访问Oracle数据库
[root@localhost ~]# isql -v ORA12 SCOTT scott
Segmentation fault (core dumped)
5.使用ODBC数据源创建DBLINK访问Oracle
create link “LINKODBC” connect ‘ODBC’ with “SCOTT” identified by “scott” using ‘ORA12’;
6. 测试dblink的连通性
SQL> select * from EMP@LINKODBC;
select * from EMP@LINKODBC;
第1 行附近出现错误[-2245]:DBLINK加载库文件失败.
已用时间: 23.587(毫秒). 执行号:0.
解决方法
将解压后的ODBC目录下的所有.so文件复制到…/dmdbms/bin目录下,再次查询,成功!
[root@localhost unixODBC-2.3.11]# find ./ -name *.so
./cur/.libs/libodbccr.so
./odbcinst/.libs/libodbcinst.so
./DriverManager/.libs/libodbc.so
[root@localhost unixODBC-2.3.11]# cp ./DriverManager/.libs/libodbc.so /home/dmdba/dmdbms/bin
[root@localhost unixODBC-2.3.11]# cp ./cur/.libs/libodbccr.so /home/dmdba/dmdbms/bin
[root@localhost unixODBC-2.3.11]# cp ./odbcinst/.libs/libodbcinst.so /home/dmdba/dmdbms/bin
SQL> select * from EMP@LINKODBC;