预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共33页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

CDR系统的改进 市话的WLLCDR(CallDetailRecorder)是一个基于窗口的程序,它用于轮询WLL/V5WLL节点以收集所有CDR记录。每个相连WLL/V5WLL节点实时收集CDR信息。每完成四个或八个呼叫(依赖于WLL/V5WLL接的设置),WLL/V5WLL就向运行WLLCDR软件的计算机发送最近的CDR,计算机负责存储和整理CDR记录,CDR记录有两种存储方式:文本文件、MDB数据库。其中文本文件用于存档,作为辅助计费资料,MDB数据库被用于网管系统从中提取话务数据。MDB数据库有个缺点,就是稳定性差,特别是文件大小超过1GB,会使CDR系统退出运行,丢失大量话务数据。 针对以上问题,采取标本兼治的方针,从标、本两个方面进行改进,提高其稳定性。 一、治标:系统在退出后,WLL/V5WLL节点能保留一定数量的呼叫信息,在系统恢复后自动发送保存的信息,只要确保系统退出后在一定的时间内能够再次启动,就不会影响正常的呼叫信息收集。 因此,可以设计一个程序,能监视CDR程序的运行,一旦监测到CDR程序退出,就会自动重新启动CDR程序,保证CDR的不间断运行。 按照这个思路,我用WSH编了个程序,达到了目的。程序的框图如下: 初始化 检查CDR 进程是否存在 是 否 重新启动 记录本次事件 首先,对程序初始化,设定记录文件的名称,需要监控的程序名称以及程序所在目录,并并检查记录文件是否存在,若存在,则以追加方式打开文件,否则新建记录文件;接着进入程序主体运行,这是一个死循环的过程,程序检测CDR程序是否存在,若不存在,则重新启动,并在文件中记录这次事件发生的时间,重新返回执行再次检测,若存在,则休眠一段时间并返回,进行下一轮循环。 二、治本 以上的方法只是解决了程序的不间断运行的问题,但是由于mdb数据库增大而影响系统的稳定造成的话务数据丢失的根本问题仍未得到圆满解决。 既然数据库的稳定性是根本原因,那么只要提高数据库的稳定性,就能从根本上解决问题,Oracle是一种大型的数据库管理系统,支持海量的数据存储,并具有很强的稳定性。如果CDR系统使用Oracle,那系统会很稳定的。关键问题是CDR系统是否有支持Oracle的数据库接口,CDR的最新版本同时能支持两种数据库连接。 首先,在一台服务器上建立数据库,采用Oracle9i,为典型安装,建立的数据库使用缺省配置,SID是netmandb。数据库安装完成后,建立所需的用户,需要建立三个用户,CDR、PGTCDR、DWRTCDR。建立表空间,CDR系统的通话记录有三部分:域内通话(使用CDR_REC表)、域间通话(使用PGTCDR_REC表)及数据通信记录(使用DWRTCDR_REC表),出于灵活性及稳定性考虑,三部分应分别使用独立的表空间,但我市的PAS系统还没有城市之间的漫游功能,不存在域间通话记录,另外数据业务还没有对外开通,也没有数据通信记录,所以,这两部分记录使用的表可以使用USER表空间,仅建立用于保存域内通话记录的表空间。为加快数据的查询速度,对域内通话记录表建立了索引。确定表空间的大小,目前无法确定每天的通话记录数量,也就没办法估计所需表空间的大小,于是,先建立一个512M的表空间文件,待系统运行起来以后,根据实际情况再进行动态调整。具体方法:1、建立CDR_REC用的表空间CDR: SQLPLUS>CREATETABLESPACE"CDR" LOGGING DATAFILE'F:\ORACLE\ORADATA\NETMANDB\CDR01.dbf'SIZE512MEXTENT MANAGEMENTLOCALSEGMENTSPACEMANAGEMENTAUTO 2、建立索引CDR_REC_INDEX用的表空间CDR_INDEX:SQLPLUS>CREATETABLESPACE"CDR_INDEX" LOGGING DATAFILE'F:\ORACLE\ORADATA\NETMANDB\CDR_INDEX01.dbf'SIZE256MEXTENT MANAGEMENTLOCALSEGMENTSPACEMANAGEMENTAUTO 3、建立CDR用户,分配使用CDR表空间,分配权限:SQLPLUS>DropUSER"CDR"cascade; SQLPLUS>CREATEUSER"CDR"PROFILE"DEFAULT"IDENTIFIEDBYUTSTARCOMDEFAULTTABLESPACE"CDR"TEMPORARYTABLESPACE"TEMP"ACCOUNTUNLOCK; SQLPLUS>GRANTALTERANYSNAPSHOTTO"CDR"; SQLPLUS>GRANTALTERSESSIONTO"CDR"; SQLPLUS>GRAN