数据库空间已满,dcs在某个时间段内入库失败,查询BIR报表数据,显示缺失

发布时间:  2015-04-21 浏览次数:  374 下载次数:  27
问题描述
CC局点数据库表空间已满,导致dcs在某个时间段内入库失败,查询BIR报表数据,显示缺失
处理过程
解决dcs入库失败的问题,需重做日结。以下重点介绍重做日结过程:
步骤 1 备份数据
1.备份实时表当日数据。
2.备份间隔表当日数据。
3.备份日表当日数据。
4.备份当周的周表数据(以上具体步骤请见附件)。
5.备份当月的月表数据。
6.备份TBILLLOG表(话单文件方式)。
create table tbilllog0303 as select * from tbilllog3 where callend >= to_date('20140301','yyyymmdd') and callend < to_date('20140401','yyyymmdd');
7.备份日结异常话单表。
create table t_dcs_billlog_fail0303 as select * from t_dcs_billlog_fail;
步骤 2 删除数据
1.删除实时表当日数据。
2.删除间隔表当日数据。
3.删除日表当日数据。
4.删除周表当周数据(以上操作请参考附件文档)。
5.删除TBILLLOG表(话单文件方式)。
delete tbilllog3 where callend >= to_date('20140301','yyyymmdd') and callend < to_date('20140401','yyyymmdd');
commit;
6.删除日结异常话单表。
truncate table t_dcs_billlog_fail;
步骤 3 重做日结方式如下:
话单文件方式
1.停止DATASTATION入库。
2.准备重日结话单。
从话单备份目录里找到需要重新入库的原始话单文件(prm*.bak)。
3.恢复DATASTATION入库。
重启DATASTATION服务,按天将需要重新入库的话单文件移动到tosend目录,使用cti bill->oracle(realtime)任务将按天重新入库,完成后使用cti bill->oracle备份数据到TBILLLOG。
4.执行数据转移命令
每天的话单入库后,在SQLPLUS里依次执行:
exec p_aggr_p;
exec p_aggr_d;
exec p_aggr_w;
exec p_aggr_m;
多执行几次,直到T_AGGR_STATUS表里的数字不再变化。
TBILLLOG方式
1.准备重日结数据。
执行下面的SQL将需要重新日结的话单数据插入REDO表:
INSERT INTO T_DCS_BILLLOG_REDO
  SELECT RANK() OVER(ORDER BY CALLID, DECODE(CALLIDNUM, -1, 99, CALLIDNUM)) TABLEID,
         CALLID, CALLIDNUM,  CALLERNO,  CALLEENO,  WAITBEGIN,   WAITEND,   ACKBEGIN,  ACKEND,  CALLBEGIN,  CALLEND, SERVICENO, TRKNO, TRKGRPNO, MODNO,  DEVICETYPE,  DEVICENO,  DEVICEIN,CALLTYPE, WAITCAUSE, RELEASECAUSE, SUBCCNO,   VDN, MEDIATYPE, UVID,   ORGCCNO,  ORGCALLID, ORGCALLEENO,  ORGSERVICENO,   SERCCNO,  SERSERVICE,   USERLEVEL, USERTYPE, CALLINCAUSE,   ENTERREASON,   LEAVEREASON,  BILLINFO,  PRESERVICENO,   PREDEVICETYPE,  PREDEVICENO,  PREDEVICEIN,  MEDIAINFOTYPE, SKILLID,  LOCATIONID,   BILLINFO1, BILLINFO2,  BILLINFO3,  BILLINFO4,   OBSSERVICEID,  OBSUNIQUEID,CURRENTSKILLID
    FROM TBILLLOG3
   WHERE CALLEND >= TO_DATE('20140303', YYYYMMDD)
     AND CALLEND < TO_DATE('20140304', YYYYMMDD);
COMMIT;
2.执行日结命令。
在SQLPLUS里执行P_DCS_CTIBILLCURSOR,重复执行几次。直到T_DCS_BILLLOG_REDO里没有数据。
3.执行数据转移命令。
每天的话单入库后,在SQLPLUS里依次执行:
exec p_aggr_p;
exec p_aggr_d;
exec p_aggr_w;
exec p_aggr_m;
多执行几次,直到T_AGGR_STATUS表里的数字不再变化。
步骤 4 验证数据
1.验证实时表数据。
2.验证间隔表数据。
3.验证日表数据。
4.验证周表数据(以上验证过程请参考附件)。
----结束
根因
T_DCS_BILLLOG_FAIL表存在很多记录,数据库表空间满导致dcs在某个时间段内入库失败,因此查询此时间段的BIR报表数据缺失,重新入库也有部分数据缺失。由于CALLIDT_DCS_BILLLOG_FAIL里的话单一致,因此话单重新入库时,导致直接return不写库。
建议与总结
现场在维护过程中要注意数据库表空间使用率,不要造成表空间满的情况。

END