暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

oracle通过dblink访问dm数据库

原创 手机用户3132 2024-01-11
635

一 安装unixODBC

su - root unzip unixODBC-2.3.0.zip chmod -R 775 unixODBC-2.3.0 cd unixODBC-2.3.0 ./configure --prefix=/etc/odbc/unixODBC-2.3.0 --includedir=/usr/include --libdir=/usr/lib -bindir=/usr/bin --sysconfdir=/etc make make install /* #./configure --prefix=/etc/odbc/unixODBC-2.3.0 --includedir=/usr/include --libdir=/usr/lib -bindir=/usr/bin --sysconfdir=/etc --build=i686-pc-linux 如果是arm架构要加上 --build=i686-pc-linux #make #make install */ [root@vastdata ~]# ldconfig [root@vastdata ~]# odbcinst -j unixODBC 2.3.1 DRIVERS............: /etc/odbcinst.ini SYSTEM DATA SOURCES: /etc/odbc.ini FILE DATA SOURCES..: /etc/ODBCDataSources USER DATA SOURCES..: /root/.odbc.ini SQLULEN Size.......: 8 SQLLEN Size........: 8 SQLSETPOSIROW Size.: 8
#odbcinst -j
odbcinst: error while loading shared libraries: libodbcinst.so.2: cannot open shared object file: No such file or directory

解决办法:
安装共享库后要注意共享库路径设置问题, 如下:
A、如果共享库文件安装到了/lib或/usr/lib目录下, 那么需执行一下ldconfig命令
ldconfig命令的用途, 主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下, 搜索出可共享的动态链接库(格式如lib*.so*), 进而创建出动态装入程序(ld.so)所需的连接和缓存文件. 
缓存文件默认为/etc/ld.so.cache, 此文件保存已排好序的动态链接库名字列表. 
B、如果共享库文件安装到了/usr/local/lib(很多开源的共享库都会安装到该目录下)或其它"非/lib或/usr/lib"目录下, 那么在执行ldconfig命令前, 还要把新共享库目录加入到共享库配置文件/etc/ld.so.conf中, 如下:

# cat /etc/ld.so.conf

include ld.so.conf.d/*.conf

# echo "/usr/local/lib" >> /etc/ld.so.conf

# cat /etc/ld.so.conf

include ld.so.conf.d/*.conf
/usr/local/lib

# ldconfig

C、如果共享库文件安装到了其它"非/lib或/usr/lib" 目录下,  但是又不想在/etc/ld.so.conf中加路径(或者是没有权限加路径). 那可以export一个全局变量LD_LIBRARY_PATH,然后运行程序的时候就会去这个目录中找共享库. 
LD_LIBRARY_PATH的意思是告诉loader在哪些目录中可以找到共享库. 可以设置多个搜索目录, 这些目录之间用冒号分隔开. 比如安装了一个mysql到/usr/local/mysql目录下, 其中有一大堆库文件在/usr/local/mysql/lib下面, 
则可以在.bashrc或.bash_profile或shell里加入以下语句即可:
su - root
export LD_LIBRARY_PATH=/usr/lib:$LD_LIBRARY_PATH  
一般来讲这只是一种临时的解决方案, 在没有权限或临时需要的时候使用??

二 安装达梦客户端和驱动

客户端是dm方提供的dm8_20230905_x86_rh6_64.iso(该版本适合rh6和rh7),只需要安装软件的话不需要license

##创建dmdba用户 [root@vastdata ~]# useradd -m -d /home/dmdba -s /bin/bash dmdba [root@vastdata ~]# passwd dmdba Changing password for user dmdba. New password: dmdba、Dmdba$123 BAD PASSWORD: The password is shorter than 8 characters Retype new password: dmdba、Dmdba$123 passwd: all authentication tokens updated successfully. [root@vastdata ~]# mkdir -p /home/dmdba/dmiso [root@vastdata ~]# cd /home/dmdba/ [root@vastdata dmdba]# mv /orabak/dm8_20230905_x86_rh6_64.iso . [root@vastdata dmdba]# ll total 1070216 -rw-r--r-- 1 root root 1095899136 Dec 27 11:25 dm8_20230905_x86_rh6_64.iso drwxr-xr-x 2 root root 6 Dec 27 11:28 dmiso [root@vastdata dmdba]# mount -o loop dm8_20230905_x86_rh6_64.iso dmiso/ mount: /dev/loop0 is write-protected, mounting read-only [root@vastdata dmdba]# chown dmdba:dmdba -R * chown: changing ownership of ?.miso/DM8 Install.pdf?. Read-only file system chown: changing ownership of ?.miso/DMInstall.bin?. Read-only file system chown: changing ownership of ?.miso?. Read-only file system [root@vastdata dmdba]# su - dmdba [dmdba@vastdata ~]$ cd dmiso/ [dmdba@vastdata dmiso]$ ll total 1070152 -r-xr-xr-x 1 root root 2909114 Sep 5 17:25 DM8 Install.pdf -r-xr-xr-x 1 root root 1092925743 Sep 5 17:28 DMInstall. bin [dmdba@vastdata dmiso]$ ./DMInstall.bin -i 跳过license,选择典型安装 Installation Type: 1 Typical 2 Server 3 Client 4 Custom Please Input the number of the Installation Type [1 Typical]:1 su - root /home/dmdba/dmdbms/script/root/root_installer.sh

三 配置odbc.ini

1、配置odbcinst.ini

[root]# cat /etc/odbcinst.ini [DM8 ODBC DRIVER] Description = ODBC DRIVER FOR DM8 Driver = /home/dmdba/dmdbms/bin/libdodbc.so threading = 0

2、配置odbc.ini

[root]# cat /etc/odbc.ini [dm8] Driver = DM8 ODBC DRIVER --/etc/odbcinst.ini中的名称 Description = DM ODBC DSND SERVER = 10.22.160.94 --目标端dm的ip UID = WX_READER PWD = wxreader@2023 TCP_PORT = 5236

3、测试

1.把动态库路径添加到环境变量LD_LIBRARY_PATH中,并且修改.bash_profile持久化: 直接修改LD_LIBRARY_PATH的环境变量,添加上:/home/dmdba/dmdbms/bin/的路径 [oracle@]$vim .bash_profile export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/dmdba/dmdbms/bin/ source .bash_profile 2.使用dmdba用户打开bin文件权限 #su - dmdba #cd /home #chmod -R 775 dmdba 使用oracle用户测试打开dm8连接 oracle@p4oa15dbtest:/home/oracle>isql -v dm8 提示连上dm库,quit退出

四 配置透明网关

Oracle服务器11g之后自带透明网关,新建配置文件initdm8.ora:

[oracle]$ cd $ORACLE_HOME/hs/admin [oracle]$ ls extproc.ora initdg4odbc.ora initdm8.ora listener.ora.sample tnsnames.ora.sample [oracle]$ cat initdm8.ora HS_FDS_CONNECT_INFO = dm8 HS_FDS_TRACE_LEVEL = off --生产环境设置为off set ODBCINI=/etc/odbc.ini HS_FDS_SHAREABLE_NAME=/usr/lib/libodbc.so HS_LANGUAGE="simplified chinese_china.al32utf8" --HS_LANGUAGE=AMERICAN_CHINA.ZHS16GBK** HS_NLS_NCHAR=UCS2

五 配置Oracle监听

#注SERVICE_NAME与odbc中odbc.ini里配置的连接名保持一致

1 、配置tnsnames.ora

#直接复制现有的格式即可,格式不对会报错 #单实例,localhost为本地oracle的主机信息 vi $ORACLE_HOME/network/admin/tnsnames.ora dm8 = (DESCRIPTION= (ADDRESS=(PROTOCOL=TCP) (HOST=localhost_ip) (PORT=1521)) (CONNECT_DATA= (SERVER=DEDICATED) (SERVICE_NAME=dm8) ) (HS=OK) ) #rac,rac1_vip为本地oracle的vip信息 vi $ORACLE_HOME/network/admin/tnsnames.ora dm8 = (DESCRIPTION= (ADDRESS=(PROTOCOL=TCP) (HOST=rac1_vip) (PORT=1521)) (ADDRESS=(PROTOCOL=TCP) (HOST=rac2_vip) (PORT=1521)) (LOAD_BALANCE=yes) (CONNECT_DATA= (SERVER=DEDICATED) (SERVICE_NAME=dm8) ) (HS=OK) )

2、测试之后tnsping dm8测试检查

[oracle]$ tnsping dm8
显示 OK

3、配置静态监听:

#这一步一定要等到可以申请重启监听窗口后再操作,内容有误会影响到现有的监听 #注 SID_NAME与tnsname.ora、/etc/odbc.ini中一样 ##单实例 vi $ORACLE_HOME/network/admin/listener.ora SID_LIST_LISTENER= (SID_LIST= (SID_DESC= (SID_NAME=dm8) (ORACLE_HOME=/opt/Oracle11g/oracle/product/11.2.0/db_1) (PROGRAM=dg4odbc) (ENVS=LD_LIBRARY_PATH=/home/dmdba/dmdbms/bin:/opt/Oracle11g/oracle/product/11.2.0/db_1/lib) ) ) 或者 SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (PROGRAM = dg4odbc) (ORACLE_HOME = /opt/oracle/products/11.2.0) (SID_NAME = dm8) ) (SID_DESC = (GLOBAL_DBNAME = orcl) (ORACLE_HOME = /opt/oracle/products/11.2.0) (SID_NAME = orcl) ) ) ##rac,一般rac下main都是动态的监听服务,所以此时的listener.ora中只有默认的4行命令,这4行命令保留不要改,添加以下命令 su - grid SID_LIST_LISTENER= (SID_LIST= (SID_DESC= (SID_NAME=dm8) (ORACLE_HOME=/opt/Oracle11g/oracle/product/11.2.0/db_1) (PROGRAM=dg4odbc) (ENVS=LD_LIBRARY_PATH=/home/dmdba/dmdbms/bin:/opt/Oracle11g/oracle/product/11.2.0/db_1/lib) ) )

4、配置完成之后重启监听文件

##rac环境下也是以下面的方式轮流启停监听,不能reload 停止监听 lsnrctl stop; 启动监听 lsnrctl start; 查看监听状态 lsnrctl status; 重启之后你会发现有一个DM8的实例被监听,状态为unknown;

六 创建dblink

create  public database link  dmlink  connect to "WXADER" identified by "wxreader@2023" using 'dm8';
select * from table@dmlink;
最后修改时间:2024-01-11 11:24:55
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论