一 安装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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




