CDR系统的改进Word文档格式.docx
- 文档编号:17507930
- 上传时间:2022-12-06
- 格式:DOCX
- 页数:19
- 大小:75.69KB
CDR系统的改进Word文档格式.docx
《CDR系统的改进Word文档格式.docx》由会员分享,可在线阅读,更多相关《CDR系统的改进Word文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
SIZE512MEXTENT
MANAGEMENTLOCALSEGMENTSPACEMANAGEMENTAUTO
2、建立索引CDR_REC_INDEX用的表空间CDR_INDEX:
CDR_INDEX"
\ORACLE\ORADATA\NETMANDB\CDR_INDEX01.dbf'
SIZE256MEXTENT
3、建立CDR用户,分配使用CDR表空间,分配权限:
DropUSER"
cascade;
CREATEUSER"
PROFILE"
DEFAULT"
IDENTIFIEDBYUTSTARCOMDEFAULTTABLESPACE"
TEMPORARYTABLESPACE"
TEMP"
ACCOUNTUNLOCK;
GRANTALTERANYSNAPSHOTTO"
;
GRANTALTERSESSIONTO"
GRANTCREATEANYSNAPSHOTTO"
GRANTCREATECLUSTERTO"
GRANTCREATEDATABASELINKTO"
GRANTCREATEPROCEDURETO"
GRANTCREATESEQUENCETO"
GRANTCREATESESSIONTO"
GRANTCREATESYNONYMTO"
GRANTCREATETABLETO"
GRANTCREATETRIGGERTO"
GRANTCREATETYPETO"
GRANTCREATEVIEWTO"
GRANTUNLIMITEDTABLESPACETO"
4、建立PGTCDR、DWRTCDR用户分配使用USERS表空间,分配权限。
5、以CDR用户登陆到数据库,建立表及索引:
DROPTABLEcdr_rec;
CREATETABLEcdr_recTABLESPACE"
(callingnumVARCHAR2(15),
callednumVARCHAR2(15),
setuptimeDATENOTNULL,
connecttimeDATENOTNULL,
answertimeDATE,
disconnecttimeDATENOTNULL,
remoteonhooktimeDATE,
durationINTEGER,
hostrtVARCHAR2(12),
visitedrtVARCHAR2(12),
rpcINTEGER,
rpnoINTEGER,
calltypeINTEGER
);
DROPTABLErec_count;
CREATETABLErec_count(
totalrecordsINTEGERdefault0
CREATEINDEX"
."
CDR_REC_INDEX"
ON"
CDR_REC"
("
SETUPTIME"
"
CALLEDNUM"
CALLINGNUM"
)
TABLESPACE"
6、建立PGTCDR、DWRTCDR所用的表。
接着,在CDR系统上安装Oracle的客户连接,并将UT提供的Oracle_ora.reg文件导入注册表,这样CDR系统就能使用Oracle数据库了。
通过以上的调整,增强了CDR系统的稳定性,但是通过CDR系统进行的话务数据采集的重要功能却没有了,原因是UT提供的进行话务采集模块仅支持从mdb数据库的采集,还不支持Oracle。
有什么办法解决呢?
话务采集的原理是定时收集CDR数据库中的记录并进行计算,将结果导入到网管数据库中。
根据原理,结合对数据库、网管的深入研究,我用WSH开发出了一个类似的工具来实现话务采集,相对于原有的工具,注重了可靠性,增加了障碍恢复功能,能够在系统恢复后,自动重新完成系统停顿期间未进行的数据采集,具有Log文件检查功能,在Log文件超过100K后,将文件存档,建立新的Log文件,同时保留必要的信息。
程序的流程如图:
否
是
同时为了保证CDR系统的持续使用,开发了程序定时清除CDR数据库中过期的数据,代码见附录。
将以上的两个程序加入到计划任务中,其中采集程序是每小时执行一次,清除程序是每天夜里执行一次。
通过以上两种标本兼治的办法,大大提高了CDR系统的稳定新性,以往每过一段时间,系统就会退出,开始频繁出错,丢失大量的数据,现在这种情况很少发生,并且由于网管系统故障而引起的话务数据丢失的问题也没有出现过。
附录:
CDR程序监视程序
logfile="
.\cdr.txt"
'
设定log文件名
psname="
WLLCDR.EXE"
pspath="
d:
\mon"
setWshShell=WScript.CreateObject("
WScript.Shell"
Setfs=CreateObject("
Scripting.FileSystemObject"
)'
建立对象
iffs.FileExists(logfile)=Truethen'
建立log文件
setflog=fs.OpenTextFile(logfile,8)'
若log文件存在,则已追加方式打开,否则创建新文件
elseSetflog=fs.createTextFile(logfile)
flog.writelinepsname+"
monitorwritenbysungw"
endif
flog.writeline"
Iamworkingnow:
"
+cstr(Date)+"
"
+cstr(Time)
WhileTrue
SetoExec=WshShell.Exec("
C:
\ProgramFiles\SupportTools\tlist.exe-p"
+psname)
WScript.Sleep500
DoWhileoExec.Status<
>
1
WScript.Sleep500
msgbox"
1"
Loop
input="
DoWhileTrue
IfNotoExec.StdOut.AtEndOfStreamThen
input=input&
oExec.StdOut.Read
(1)
Else
WScript.Sleep100
exitdo
EndIf
'
2"
input"
+input
IfInStr(input,"
-1"
)<
0Then
resumethenncandlogit
3"
WScript.Sleep10000
Somethingwrongwith"
+psname+"
at"
returnnum=WshShell.run(pspath+"
\"
.lnk"
,Ture)
returnnum="
+cstr(returnnum)
DoWhilereturnnum<
0
Loop
5"
Nowitworked"
Else
donothingjustsleep
5'
EndIf
6"
WScript.Sleep5000
7"
Wend
话务采集程序
RT话务密度的补丁程序'
CDR程序在使用MDB数据库时,随着MDB数据库的增大变得很不稳定,因此在新版中改用Oracle,这样虽然解决了稳定问题,但相应的CDRTOOL
并没有更新,造成RT话务密度数据无法采集的新问题,本补丁程序取代了CDRTOOL,解决了这个问题,同时消除了CDRTOOL采集的数据不全
的问题,并增加了呼叫次数采集的功能,有一定的故障恢复功能,本次采集若无法完成,在下一个时段会重新进行。
配套有个数据库记录删除
脚本
使用方法:
设置CDR数据库名称,用户名,密码,网管数据库名称,用户名,密码;
将改程序添加到"
任务计划"
中,每个小时执行一次'
作者:
孙国文2003-06-23
版本1.02003年07月05日发布
版本1.12003年10月01日准备增加log文件大小检查的功能,可以在文件长度大到一定程度以致影响效率的时候,提取log文件中需要的信息后
将原有log文件转存为带日期结尾的文件,并生成新的log文件
OptionExplicit
设置数据库连接参数
Perm="
Provider=msdaora.1;
&
DataSource=swapp;
UserId=develop;
Password=develop;
性能库
Cdr="
DataSource=netmandb;
UserId=cdr;
Password=utstarcom;
采集库
logfile="
.\Log.txt"
shibiefus="
到"
shibiefue="
#"
startworktime=Now'
程序启动时间,用于程序运行时间比较,防止运行时间超过1小时,计划任务再次调用程序,造成采集错误
以只读方式打开log文件,读取采集数据记录,与当前时间比较,获得需要采集次数
jiange=1'
设置间隔
SetWshShell=WScript.CreateObject("
readdate="
Iffs.FileExists(logfile)=Truethen
setflog=fs.OpenTextFile(logfile,1)'
以只读方式打开文件
DoWhileflog.AtEndOfStream<
True'
读文件直到文件结束
retstring=flog.ReadLine
startp=InStr(1,retstring,shibiefus,1)'
确定上次采集时间记录的起始位置
endp=InStr(1,retstring,shibiefue,1)'
确定上次采集时间记录的结束位置
Ifstartp>
0andendp>
startpThen
'
MsgBoxstartp
MsgBoxendp
readdate=Mid(retstring,startp+1,endp-startp-1)
MsgBoxreaddate
ifreaddate<
Thenjiange=DateDiff("
h"
Cdate(readdate),Now())
flog.close
新增的log文件大小检查的功能
Setf=fs.GetFile(logfile)
iff.size>
100000Then
MsgBoxcurrentdate&
logfile'
fordebuglog文件大小检查的功能
f.movecurrentdate&
.old.log"
Setflog=fs.CreateTextFile(logfile)
flog.writeline"
Tobecontinued"
上次采集时间段是从"
&
Cstr(Cdate(readdate)-1/24)&
shibiefus&
readdate&
shibiefue
else
setflog=fs.OpenTextFile(logfile,8)
endIf
setf=nothing
Else
Setflog=fs.CreateTextFile(logfile)
flog.writelinecstr(Date)&
cstr(Time)&
Starttowork"
heretoexit"
WScript.Quit'
flog.writeline
连接数据库,若连接不成功,则退出
SetPermConn=Wscript.CreateObject("
ADODB.Connection"
SetCdrConn=Wscript.CreateObject("
ConnPermConn,Perm
ConnCdrConn,Cdr
Daystr=Cstr(date())
Currtime=Time()
Endhour=Right(cstr("
00"
cstr(hour(currtime)-0)),2)
Endt=Cdate(daystr&
endhour&
:
00:
ForTimes=jiange-1To0step-1'
?
flog.writelinetimes
endti=Endt-Times/24'
24?
caijiendti,flog
IfDateDiff("
m"
startworktime,now())>
55Thenexitfor
Next
Permconn.Close
Cdrconn.Close
SetPermConn=Nothing
SetCdrConn=Nothing
flog.writelineCStr(Date)&
CStr(Time)&
Endthework"
flog.close
主程序结束,以下为过程、函数
采集过程
Subcaiji(endtime,logfile)
设置采样时间
logfile.writelineCStr(Date)&
开始采集"
StartTime=Endtime-1/24
MsgBoxendtime
MsgBoxstarttime
节点数组nodes,从cdr数据库中获取
vistedrt
Query="
selectdistinctvisitedrtfromcdr.cdr_recwheresetuptime>
=To_Date('
cstr(starttime)&
'
yyyy-mm-ddhh24:
mi:
ss'
)andsetuptime<
cstr(endtime)&
)"
SetRT=CdrConn.Execute(Query)
Dimvisitedrts()
visit_len=0
WhileNotRT.EOF
visit_len=visit_len+1
ReDimPreservevisitedrts(visit_len)
visitedrts(visit_len-1)=RT(0).Value
RT.MoveNext
Wend
hostrt
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CDR 系统 改进