所选语种没有对应资源,请选择:

本站点使用Cookies,继续浏览表示您同意我们使用Cookies。Cookies和隐私政策>

提示

尊敬的用户,您的IE浏览器版本过低,为获取更好的浏览体验,请升级您的IE浏览器。

升级
案例库

CC录音记录表TRECORDINFO数据被删除后的恢复方法

发布时间:  2019-07-03  |   浏览次数:  205  |   下载次数:  3  |   作者:  y00392798  |   文档编号: EKB1100013611

目录

问题描述

IPCC平台库记录录音文件路径的表TRECORDINFO录音表被误删除,CMS质检系统和第三方业务系统无法通过该表将“呼叫记录”与“录音文件路径”对应起来,导致录音文件无法回放、下载。

处理过程

1      恢复方法

1.1      创建临时表结构

--创建话单文件索引表T_DZTMP_RECFILE_yyyymmdd

-------------------------------------------

-- Create table

create table T_DZTMP_RECFILE_201901

(

  filename   VARCHAR2(100) not null,

  callend    DATE,

  changetime VARCHAR2(14),

  agentid    VARCHAR2(5)

)

tablespace ICD_SERVICE

  pctfree 10

  initrans 1

  maxtrans 255

  storage

  (

    initial 16

    next 8

    minextents 1

    maxextents unlimited

    pctincrease 0

  );

-- Create/Recreate indexes 

create index IX_RECFILE201901_AGENTID on T_DZTMP_RECFILE_201901 (AGENTID)

  tablespace ICD_SERVICE

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 1M

    next 1M

    minextents 1

    maxextents unlimited

    pctincrease 0

  );

create index IX_RECFILE201901_CALLEND on T_DZTMP_RECFILE_201901 (CALLEND)

  tablespace ICD_SERVICE

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 1M

    next 1M

    minextents 1

    maxextents unlimited

    pctincrease 0

  );

   

1.2      获取录音文件的完整路径及修改日期

Total Commod生成T_DZTMP_RECFILE_yyyymm.txt

1            将录音文件服务器的/share目录用Samba共享,以便Total Commander可以通过Windows访问“录音文件所在目录”;

2            打开Total Commander工具,选择“录音文件目录”,如:\\10.*.*.*\fileserver0\1\0\20110430\

3            点击“展开所有文件夹”按钮,使该文件夹及其子文件夹下所有的文件都可以被显示在同一屏幕。如下图:

 

4            点击“配置自定义列”,增加一列“完整路径”。如下图;
 

 

5            按下图指定的顺序添加“完整路径”列

6            选中所有文件(选中的文件会变为红色),然后点击菜单“复制文件详细资料及完整路径”,将文件路径、修改日期等信息复制到一个文本文件中。

 

1.3      将导出的录音文件信息导入数据库

1            使用PL/SQL Developer等工具将“Total Commander导出的文本文件导入器导入T_DZTMP_RECFILE_yyyymm.txtT_DZTMP_RECFILE_yyyymm表,各类工具导入文本的方法各不相同,在此省略;

 

2            生成坐席工号
update T_DZTMP_RECFILE_yyyymm t  --
注意修改时间

set t.agentid = substr(t.filename,17,4);

commit;

 

 

1.4      按月份导入trecordinfo录音表中

1            确认录音表没有当月数据;

select *

from trecordinfo11 t --注意修改时间

where t.begintime >= to_date('20181101', 'yyyymmdd') --开始时间(注意修改时间)

 and t.endtime < to_date('20181201', 'yyyymmdd') --结束时间(注意修改时间)

 

 

2            按月导入录音表

insert into trecordinfo11 --按月导入录音表(注意修改时间)

  (callid,

   callerno,

   calleeno,

   agentid,

   callcenterid,

   virtualcallcenterid,

   begintime,

   endtime,

   filename,

   calltype,

   serviceno,

   visittime,

   mediatype,

   modno,

   trkno,

   serviceid,

   stopreason,

   recordformat,

   userwantedskillid,

   currentskillid)

  select b.callid,

         b.callerno,

         b.calleeno,

         b.deviceno       as agentid,

         b.subccno        as callcenterid,

         b.vdn            as virtualcallcenterid,

         b.callbegin      as begintime,

         b.callend        as endtime,

         a.filename,

         b.calltype,

         b.serviceno,

         b.ackbegin       as visittime,

         b.mediatype      as mediatype,

         b.modno          as modno,

         b.trkno,

         b.serviceno      as serviceid,

         1                as stopreason,

         3                as recordformat,

         b.skillid        as userwantedskillid,

         b.currentskillid as currentskillid

    from T_DZTMP_RECFILE_201811 a, --录音文件表(注意修改时间)

         tbilllog11             b --话单表(注意修改时间)

   where b.callend >= to_date('20181101', 'yyyymmdd') --开始时间(注意修改时间)

     and b.callend < to_date('20181201', 'yyyymmdd') --结束时间(注意修改时间)

     and a.agentid = b.deviceno

     and b.devicetype = 2

     and a.callend > b.callend - (1 / 24 / 3600) * 5

     and a.callend < b.callend + (1 / 24 / 3600) * 5;

commit;

   

 

说明:

由于少数录音文件的修改时间与tbilllog表中的callend时间并存在一些误差,所以上述方法只能恢复大部分的trecordinfo记录,还是有少数记录无法恢复。但实际操作时发现部分录音文件的修改时间与tbilllogcallend时间只有1~2秒的误差,此时可以通过修改sql语句中where a.callend = b.callend ± (1/24/2300)*n的方法再匹配出一些记录。

另外,该文档是基于仅有外呼业务的局点所编写的,该局点的tbilllog表中记录相对简单,一个呼叫仅一条记录。对于客服中心等业务复杂的局点,可能需要根据实际情况修改上述sql语句的条件才能满足要求。


  

    

2     检查并对比恢复导入数据量

2.1      查询恢复数据量

select *

from trecordinfo11 t --注意修改时间

where t.begintime >= to_date('20181101', 'yyyymmdd') --开始时间(注意修改时间)

and t.endtime < to_date('20181201', 'yyyymmdd') --结束时间(注意修改时间)

2.2      查询恢复数据量

select callid, count(1)as cnt from tbilllog2  t

where t.callend >= to_date('20170201','yyyymmdd') and t.callend < to_date('20170301','yyyymmdd')

and t.devicetype = 2

and t.callend - t.callbegin > 5*(1/24/3600)

group by callid;

2.3      查看同一个callid是否有多条记录

select callid, count(1) from T_DZTMP_RECORD201811 t

group by callid

order by count(1) desc                                      

解决方案

l  TBILLLOG表中保存有每通呼叫的“开始时间、“结束时间”、“工号”;

l  录音文件自身属性记录了该文件的“最后修改时间”,录音文件所在目录即为该录音文件对应的“工号;


由此可见,TBILLLOG与“录音文件”之间可通过“工号”和“呼叫结束时间”建立关联关系。但这种关联关系需要建立在“CTIServer服务器”与“录音文件服务器”的时间保持一致的情况下,如果有误差,还需要在关联时进行人工修正。

建议与总结

1、平时需要对数据库定期做备份,保障数据安全。
2、对数据库的任何操作都要谨慎。