日期:2014-05-17  浏览次数:20849 次

DBMS_CHANGE_NOTIFICATION 问题,100分求答案
DECLARE
  l_regds     SYS.CHNF$_REG_INFO;
  l_regid     NUMBER;
  l_qosflags  NUMBER;
  l_id        NUMBER;
  l_id1        NUMBER;
  l_id2        NUMBER;
BEGIN
  l_qosflags := DBMS_CHANGE_NOTIFICATION.QOS_RELIABLE  +
                DBMS_CHANGE_NOTIFICATION.QOS_ROWIDS;
  l_regds := SYS.CHNF$_REG_INFO ('tables_changed_chnt', l_qosflags, 0,0,0);
  l_regid := DBMS_CHANGE_NOTIFICATION.new_reg_start (l_regds);


  SELECT 1 into l_id FROM businesssystemrunningtime5min where rownum=1;
  select 1 into l_id1 from TB_LOOK_TABLE where rownum = 1;
  select 1 into l_id2 from ttt_111 where rownum = 1;
  DBMS_CHANGE_NOTIFICATION.reg_end;
  dbms_output.put_line(l_regid);
END;

同时注册3个表的变更通知,TB_LOOK_TABLE与ttt_111表可以检测到变更.businesssystemrunningtime5min表无法检测,将该表表名改成business后就可以监控到.
请问各位大拿,这个表名的长度有限制么? 怎么处理? 由于是监控其他厂家的表,所以不可能改名,求答!
------解决方案--------------------
好像oracle表名长度最大30吧,但是你那也才29啊、、
------解决方案--------------------
会不会 存放注册表的更改记录的表的字段限制了最大长度?
------解决方案--------------------
--将该表表名改成business后就可以监控到.

不可能改名的话可以考虑试一下用同义词