注册
DMHS ORACLE与DM同步问题记录
技术分享/ 文章详情 /

DMHS ORACLE与DM同步问题记录

ZCH 2023/06/03 1522 0 0

1 ORACLE同步DM

1.1 库文件 libcpt_ora.so 未找到

问题描述:捕获端出现异常日志:

2023-05-12 09:05:28 MGR[ERROR]: 库文件 libcpt_ora.so 未找到, 出错: 0, libclntsh.so.11.1: cannot open shared object file: No such file or directory

分析原因和解决:通过ldd libcpt_ora.so验证:

[dmhs@db1 ~]$ cd dmhs/bin
[dmhs@db1 bin]$ ldd libcpt_ora.so
        linux-vdso.so.1 =>  (0x00007ffedebf4000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f72e2fad000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f72e2cab000)
        librt.so.1 => /lib64/librt.so.1 (0x00007f72e2aa3000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f72e2887000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f72e2683000)
        libdmhs_net.so => ./libdmhs_net.so (0x00007f72e243a000)
        libdmhs_pub.so => ./libdmhs_pub.so (0x00007f72e2122000)
        libdmhs_ld_ora.so => ./libdmhs_ld_ora.so (0x00007f72e1ec2000)
        libdmhs_ucvt.so => ./libdmhs_ucvt.so (0x00007f72e1968000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f72e364b000)
        libclntsh.so.11.1 => not found
        libdmhs_bool_parse.so => ./libdmhs_bool_parse.so (0x00007f72e175b000)
        libclntsh.so.11.1 => not found

发现找不到库文件:libclntsh.so.11.1,是因为库环境变量没加入ORACLE客户端库文件路径($ORACLE_HOME/lib),如ORACLE客户端库文件路径为:/home/oracle/product/11g/db_1/lib,加入到NEED_LIB_PATH变量后,重启DMHS服务即可。

[dmhs@db1 ~]$ cd dmhs/bin
[dmhs@db1 bin]$ vi DmhsService
… … 
NEED_LIB_PATH=/usr/local/lib:/home/oracle/product/11g/db_1/lib
… …

1.2 该站点没有配置执行模块参数

问题描述:执行端出现异常日志:
2023-05-12 09:30:39 MGR[WARN]: 该站点没有配置执行模块参数!

分析原因和解决:执行端dmhs.hs配置文件如下:
<?xml version="1.0" encoding="GB2312" standalone="no"?>
<dmhs>
<base>
<lang>ch</lang>
<mgr_port>5345</mgr_port>
<chk_interval>2</chk_interval>
<ckpt_interval>45</ckpt_interval>
<siteid>2</siteid>
<version>2.0</version>
</base>
<recv>
<data_port>5346</data_port>
<exec>
<db_type>dm8</db_type>
<db_server>192.168.228.32</db_server>
<db_user>dmhs</db_user>
<db_pwd>Hds6_MpSz3</db_pwd>
<db_port>5236</db_port>
<exec_mode>1</exec_mode>
<exec_thr>8</exec_thr>
<exec_sql>1024</exec_sql>
<exec_trx>5000</exec_trx>
<exec_rows>250</exec_rows>
<msg_col_size>8000</msg_col_size>
<level>0</level>
</exec>
</recv>
</dmhs>

查看已配置<exec>节点,但还提示“该站点没有配置执行模块参数”,是因为<version>参数问题,当配置<version>2.0</version>时,<exec>需要配置在<recv>外层,即去掉<version>2.0</version>即可,或调整配置,如:
<exec>
<recv>
<data_port>5346</data_port>
</recv>
...

</exec>

2 DM同步ORACLE

2.1 Can't open lib 'Oracle in OraDb11g_home1' : file not found

问题描述:执行端日志出现以下错误:

2023-05-17 20:20:18 MGR[INFO]: 监控到来自 127.0.0.1(dmhs_console) 的登录
2023-05-17 20:20:20 MGR[INFO]: 正在加载执行模块...
2023-05-17 20:20:20 EXE[INFO]: CONNECT: DBQ=192.168.228.31:1521/orcl;DRIVER={Oracle in OraDb11g_home1};UID=dmhs_dst;PWD=
2023-05-17 20:20:20 EXE[ERROR]: SITEID:0 SEQID:0 TRXID:0 STATE:01000 CODE: 0 ERR:[unixODBC][Driver Manager]Can't open lib 'Oracle in OraDb11g_home1' : file not found

分析原因和解决:以上错误是因为连接ORACLE的ODBC数据源名称配置不对,必须配置为:Oracle in OraDb11g_home1,正确的配置参考如下:

# vi /usr/local/etc/odbcinst.ini
[Oracle in OraDb11g_home1]
Description = Oracle ODBC driver for Oracle 11g
Driver = /home/oracle/product/11g/db_1/lib/libsqora.so.11.1

# vi /usr/local/etc/odbc.ini
[ORACLE]
Description = ORACLE ODBC DSN
Driver = Oracle in OraDb11g_home1
server = 192.168.228.31
port = 1521
ServerName = ORCL
UserID = dmhs_dst
password = Hps6@MpSz3

2.2 libsqora.so.11.1 : file not found

问题描述:验证ODBC连接ORACLE数据源时出现如下错误:

[root@db1 ~]# isql -v ORACLE
[01000][unixODBC][Driver Manager]Can't open lib '/opt/oracle/product/11g/db_1/lib/libsqora.so.11.1' : file not found
[ISQL]ERROR: Could not SQLConnect
[root@db1 ~]# ldd /opt/oracle/product/11g/db_1/lib/libsqora.so.11.1
        linux-vdso.so.1 =>  (0x00007fff709fd000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00002b6aee25a000)
        libm.so.6 => /lib64/libm.so.6 (0x00002b6aee45e000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00002b6aee6e2000)
        libnsl.so.1 => /lib64/libnsl.so.1 (0x00002b6aee8fe000)
        libclntsh.so.11.1 => /opt/oracle/product/11g/db_1/lib/libclntsh.so.11.1 (0x00002b49283c1000)
        libodbcinst.so.1 => not found
        libc.so.6 => /lib64/libc.so.6 (0x00002b6aeeb17000)
        /lib64/ld-linux-x86-64.so.2 (0x0000003482000000)

分析原因和解决:通过模糊匹配查找libodbcinst.so:

[root@db1 ~]# find / -name libodbcinst.so*
/usr/local/lib/libodbcinst.so
/usr/local/lib/libodbcinst.so.2
/usr/local/lib/libodbcinst.so.2.0.0
[root@db1 ~]# ll /usr/local/lib/libodbcinst.so
lrwxrwxrwx 1 root root 20 05-17 22:01 /usr/local/lib/libodbcinst.so -> libodbcinst.so.2.0.0
[root@db1 ~]# ll /usr/local/lib/libodbcinst.so.2
lrwxrwxrwx 1 root root 20 05-17 22:01 /usr/local/lib/libodbcinst.so.2 -> libodbcinst.so.2.0.0

根据如上信息发现已有对应库,只是版本不一样,创建符号链接即可解决:

[root@db1 ~]# ln -s /usr/local/lib/libodbcinst.so.2.0.0 /usr/local/lib/libodbcinst.so.1

2.3 库文件 libdmhs_exec.so 未找到

问题描述:执行端出现以下异常:

2023-05-17 23:02:48 MGR[ERROR]: 库文件 libdmhs_exec.so 未找到, 出错: 84, libodbc.so.1: cannot open shared object file: No such file or directory

分析原因和解决:通过libdmhs_exec.so验证:

[dmhs_dst@db1 bin]$ ldd libdmhs_exec.so
        linux-vdso.so.1 =>  (0x00007fffa963d000)
        libc.so.6 => /lib64/libc.so.6 (0x00002b8fe874d000)
        libm.so.6 => /lib64/libm.so.6 (0x00002b8fe8aa7000)
        librt.so.1 => /lib64/librt.so.1 (0x00002b8fe8d2a000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00002b8fe8f33000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00002b8fe9150000)
        libdmhs_pub.so => ./libdmhs_pub.so (0x00002b8fe9354000)
        libdmhs_ucvt.so => ./libdmhs_ucvt.so (0x00002b8fe9667000)
        libdmhs_dm_obj.so => ./libdmhs_dm_obj.so (0x00002b8fe9bc1000)
        libdmhs_cvt.so => ./libdmhs_cvt.so (0x00002b8fe9dd2000)
        /lib64/ld-linux-x86-64.so.2 (0x0000003482000000)
        libodbc.so.1 => not found
        libdmhs_exp.so => ./libdmhs_exp.so (0x00002b8fea03e000)
        libdmhs_xml.so => ./libdmhs_xml.so (0x00002b8fea3fb000)
        libclntsh.so.11.1 => /opt/oracle/product/11g/db_1/lib/libclntsh.so.11.1 (0x00002b8fea609000)
        libnnz11.so => /opt/oracle/product/11g/db_1/lib/libnnz11.so (0x00002b8fed073000)
        libnsl.so.1 => /lib64/libnsl.so.1 (0x00002b8fed441000)
        libaio.so.1 => /usr/lib64/libaio.so.1 (0x00002b8fed659000)

发现找不到库文件:libodbc.so.1,再通过模糊匹配查找libodbc.so*:

[root@db1 ~]# find / -name libodbc.so*
/usr/local/lib/libodbc.so.2
/usr/local/lib/libodbc.so.2.0.0
/usr/local/lib/libodbc.so
[root@db1 ~]# ll /usr/local/lib/libodbc.so
lrwxrwxrwx 1 root root 16 05-17 22:01 /usr/local/lib/libodbc.so -> libodbc.so.2.0.0
[root@db1 ~]# ll /usr/local/lib/libodbc.so.2
lrwxrwxrwx 1 root root 16 05-17 22:01 /usr/local/lib/libodbc.so.2 -> libodbc.so.2.0.0

根据如上信息发现已有对应库,只是版本不一样,创建符号链接即可解决:

[root@db1 ~]# ln -s /usr/local/lib/libodbc.so.2.0.0 /usr/local/lib/libodbc.so.1

达梦在线服务平台 https://eco.dameng.com

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服