by你好我是李白
G. 问题解决后,可清除日志
sp_ctrl> clear status all
H. 查看队列剩余空间(以下目录根据实际环境查看)
生产库:/databackup 管理库:/databackup I. 查看数据库归档空间剩余
生产库:/arch01 & /arch02
5.4 查看日志
很多错误需要详细的日志信息帮助解决问题。 sp_ctrl> show log reverse
在vardir的log目录下包含各进程的日志文件,最主要的是event_log文件。show log命令只是显示了event_log文件的部分内容。
如果event_log中的信息不足以帮助解决问题,还需要去log目录下查找具体进程的日志。
生产库日志目录(根据自己实际目录查看): /databackup/splex/vardir/log 管理库日志目录:
/databackup/splex/vardir/log
6.一些性能诊断方案
6.1 针对capture too slow
Cpature trace 信息收集按计划执行:
1.每个小时在源端执行一次,直至跑批业务结束,至少要覆盖业务高峰期。 sp_ctrl>trace capture
by你好我是李白
2.每小时在源端执行,收集更详细的信息 sp_ctrl> set param SP_OCT_UTILIZATION_TIMERS 1 let it run for 15 mins, then turn off
sp_ctrl> reset param SP_OCT_UTILIZATION_TIMERS
3.收集更详细的信息: sp_ctrl> stop capture
sp_ctrl> set param SP_OCT_UTILIZATION_TIMERS 2 sp_ctrl> start capture
let it run for 15 mins, then turn off
sp_ctrl> reset param SP_OCT_UTILIZATION_TIMERS sp_ctrl> stop capture sp_ctrl> start capture
所有生成的*.csv文件都需要收集。
7.SharePlex一些问题的解决方案
7.1 View events and error
? show log event查看event日志,show statusdb查看数据库配置状态。 ? 当post检测到错误时,会记录100条sql语句以及不同步的数据,可以在
修复问题之后,使用该sql语句在条件设置的不苛刻情况下修复不同步的数据,
? 进程日志,当进程出现问题,SharePlex不仅仅在event日志中记录,也会
在相应进程日志中记录。
7.2 忽略一些确定的可以忽略的错误
注意:
1.一些错误即使写入oramsglist,post也不会忽略这些错误。
by你好我是李白
2.忽略会造成一些隐藏的数据不同步情况,如果用户无法容忍post产生间隙或者可以接受一些数据不同步,可以使用忽略,可以在vardir中log目录下查看SID_errlog.sql查看详细的忽略掉的错误情况。 ? 忽略post中的DML错误操作步骤:
a) 在目标库,进入SharePlex的vardir目录下的data子目录。 b) 找到oramsglist文件。
c) 如果复制没有激活,使用文本编辑器打开该文件,如果复制激活状态,则
拷贝一份文件副本,然后使用文本编辑器打开副本。 d) 在文件的开始增加错误编号。 [oracle@11rac2 data]$ vim oramsglist 942
e) 在文件的末尾,添加每一个Oracle或者SharePlex错误号码,一个错误一
行。
f) 保存并关闭文件。
g) 如果post还在运行,则停止post。
h) 如果你编辑了一个oramsglist文件的镜像,则保存镜像文件名为原始的
oramsglist。
i) 修改SharePlex参数SP_OPO_CONT_ON_ERR为1. j) 启动post。
7.3 insert null复制到Kafka不显示
7.3.1问题描述
a.表结构
SQL> desc CONTACT_CLSLIST
Name Null? Type
by你好我是李白
----------------------------------------- -------- ---------------------------- CUST_ID NOT NULL NUMBER(10) CONTACT_SEQ NOT NULL NUMBER(4) CONTACT_CLASS_SEQ NOT NULL NUMBER(4) CONTACT_CLASS_CODE NOT NULL CHAR(1) CONTACT_NO NOT NULL VARCHAR2(680) CONTACT_EXT VARCHAR2(16) b.源端插入以及目标段消费 正常插入
SQL> insert into contact_clslist values(666669,5,6,'d','zhang','san'); 1 row created. SQL> commit;
目标端情况,可以看到此时所有列值都有: {\28T12:10:03\pAAJAAERkBAAo\ONTACT_CLSLIST\11T11:05:47\_CLASS_SEQ\ONTACT_EXT\ 可以为空列插入null值时
SQL> insert into contact_clslist values(666670,6,7,'e','zhang',null); 1 row created. SQL> commit;
目标端情况,可以看到插入的null值列已经没有了: {\28T12:11:40\pAAJAAERkBAAq\ONTACT_CLSLIST\11T11:07:24\
by你好我是李白
_CLASS_SEQ\
可以为空列插入空值时
SQL> insert into contact_clslist values(666671,7,8,'f','wang',''); 1 row created. SQL> commit;
查看目标端情况,可以看到此时为空列也没有了: {\28T12:12:47\pAAJAAERkBAAu\ONTACT_CLSLIST\11T11:08:31\_CLASS_SEQ\
因为针对插入时,如果值少于列值,针对未明确赋值的列oracle会自动填入null值,所以第三种现象也是null值不显示的问题。
7.3.2解决方案
在源端设置SP_OCT_INSERT_INCLUDE_NULLS为1然后重启capture进程,插入语句将包含null值。
sp_ctrl> set param SP_OCT_INSERT_INCLUDE_NULLS 1 sp_ctrl> stop capture sp_ctrl> start capture
关于此问题可参考:https://support.quest.com/shareplex/kb/229190