DMHS常见报错和解决办法

同步环境

Dm到Oracle单向同步

版本信息

DM(1-2-84-21.10.21-149328-10032-ENT)端hs版本信息:

DMHS> version

V4.2.60-Build(2022.02.24-106302trunc)_D64

execute success

DMHS>

oracle(19.3.0.0.0)端hs版本信息:

DMHS> version

V4.2.60-Build(2022.02.24-106302trunc)_D64

execute success

DMHS>

1. libclntsh.so.12.1

目的端为oracle,start exec的时候报错:

MGR[ERROR]: lib libdmhs_exec.so can not found,error code 0, libclntsh.so.12.1: cannot open shared object file: No such file or directory

MGR[ERROR]: log exec start fail

locate libclntsh.so.12.1 发现该文件在oracle的lib下,于是考虑把oracle的lib添加到环境变量里,

 

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/oracle/dmhs/bin:/usr/local/lib:/oracle/app/product/db_1/lib

改完后可以启动exec模块.

2.  constraint and trigger

源端copy 字典的时候目的端hs报错:

EXE[INFO]: Are waiting for the site: 1 on asynchronous message delivery...

EXE[ERROR]: modify execute name to replicat, if you want use constraint and trigger , constraint or trigger is seted to 1 on cpt module

PUB[ERROR]: configure failed

浮点数例外(吐核)

百度翻译:

EXE[ERROR]:将execute name修改为replicat,如果要使用constraint和trigger,则在cpt模块上将constraint或trigger设置为1

发布[错误]:配置失败

3.  insufficient privileges

装载数据的时候  COPY 0 "SCH.NAME='PAY'" CREATE|CHECK|INSERT|REG|THREAD|8|count

报错权限不足:

EXE[ERROR]: SITEID:1 SEQID:0 TRXID:0 LAST ROWID:NULL SQL_ERROR = SQL:SELECT C.COL# FROM SYS.COL$ C, (SELECT OBJ# FROM SYS.OBJ$ T, SYS.USER$ U WHERE T.OWNER#=U.USER# AND U.NAME='C##PAY' AND T.NAME='student2') TAB WHERE C.OBJ#=TAB.OBJ# AND BITAND(C.PROPERTY, 65536) = 65536

EXE[ERROR]: SITEID:1 SEQID:0 TRXID:0 LAST ROWID:NULL SQL_ERROR = SQL:SELECT C.COL# FROM SYS.COL$ C, (SELECT OBJ# FROM SYS.OBJ$ T, SYS.USER$ U WHERE T.OWNER#=U.USER# AND U.NAME='C##PAY' AND T.NAME='grade') TAB WHERE C.OBJ#=TAB.OBJ# AND BITAND(C.PROPERTY, 65536) = 65536

EXE[ERROR]: SITEID:1 SEQID:0 TRXID:0 STATE:HY000 CODE: 1031 ROWID:NULL ERR:[Oracle][ODBC][Ora]ORA-01031: insufficient privileges

PUB[ERROR]: insufficient privileges or no privileges

EXE[ERROR]: SITEID:1 SEQID:0 TRXID:0 STATE:HY000 CODE: 1031 ROWID:NULL ERR:[Oracle][ODBC][Ora]ORA-01031: insufficient privileges

PUB[ERROR]: insufficient privileges or no privileges

EXE[INFO]: waiting for SITEID:1 transaction complete percent: 15%

浮点数例外(吐核)

[oracle@xxg120 bin]$

将这两个sql拿到oracle端直接执行也是报错权限不足,但是用于连接oracle的用户给了dba权限:

下图可以看到,student2和grade两个表都已经创建成功了

 

上面的select语句涉及以下三张表,oracle端直接查询以下三张表:

select * from SYS.COL$;

select * from SYS.OBJ$;

select * from SYS.USER$;

查询第三张表的时候报错权限不足:

sqlplus / as SYSDBA 

grant select on SYS.USER$ to C##PAY;

4.  invalid identifier

装载数据的时候  COPY 0 "SCH.NAME='PAY'" CREATE|CHECK|INSERT|REG|THREAD|8|count

报错标识符无效:

EXE[ERROR]: SITEID:1 SEQID:0 TRXID:0 LAST ROWID:NULL SQL_ERROR = SQL:--dmhs ddl, siteid:1, level:2, mask:1

ALTER TABLE "C##PAY"."T_check" ADD CONSTRAINT  "HS1059_CONS134218780" CHECK( c1 > 10 )

EXE[WARN]: SITEID:1 SEQID:0 TRXID:0 STATE:42S22 CODE: 904 ROWID:NULL ERR:[Oracle][ODBC][Ora]ORA-00904: "C1": invalid identifier

SQL:--dmhs ddl, siteid:1, level:2, mask:1

ALTER TABLE "C##PAY"."T_check" ADD CONSTRAINT  "HS1059_CONS134218780" CHECK( c1 > 10 )

将这条alter语句复制到oracle里,执行后发现 check(c1>10)被默认转换成了大写,而DM源端(大小写不敏感)里这一列是小写的,带上双引号后,oracle端能执行成功。

目的端(oracle)hs前台日志里发现T_check的建表语句如下:

CREATE TABLE "C##PAY"."T_check"("c1" INT NOT NULL,"c2" CHAR(1) NULL, CONSTRAINT "HS1059_CONS134218781" PRIMARY KEY("c1"))

说明创建表的时候c1列都会带上双引号,但是添加索引的时候却不带上双引号。

注意:基准数据的同步不要使用copy,建议使用DTS完成,这样不容易出错。

5. Driver's SQLAllocHandle on SQL_HANDLE_HENV failed

开机自启的时候:oracle端hs报错:

2022-04-29 11:57:48 EXE[ERROR]: SITEID:0 SEQID:0 TRXID:0 STATE:IM004 CODE: 0 ERR:[unixODBC][Driver Manager]Driver's SQLAllocHandle on SQL_HANDLE_HENV failed

2022-04-29 11:57:48 EXE[ERROR]: unable to connect database!

2022-04-29 11:57:58 MGR[ERROR]: connection from 192.168.1.101 require LSN,but cannot get because it is not initial

2022-04-29 11:57:58 MGR[INFO]: connection from 192.168.1.101(dmhs_server) has broken!

并且./DmhsServiceHS restart后就不会报这个错了。

这是因为开机的时候dmhs在oracle前启动了,导致连不上数据库。

解决:

在开机自启文件/etc/rc.local里加上重启hs的命令,注意写在oracle数据库启动命令的后面。

su - oracle -c "/oracle/app/product/db_1/bin/lsnrctl start"

su - oracle -c "/oracle/app/product/db_1/bin/dbstart"

su - oracle -c "/home/oracle/dmhs/bin/DmhsServiceHS stop"

su - oracle -c "/home/oracle/dmhs/bin/DmhsServiceHS start"

更多相关资料请参考达梦云适配中心:

达梦数据库 - 新一代大型通用关系型数据库 | 达梦云适配中心 (dameng.com)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值