8.1준비
8.1.1파일
통계 데이터 삭제 쿼리문과 원시 데이터 파일이 필요합니다.
- 통계 데이터 삭제 쿼리문은 엔지니어에게 요청하시면 됩니다.
- 원시 데이터 파일은 dbfile 디렉토리에 있습니다. (CALL, AGENT, WORK 파일)
ls –lrt | grep 20140731
과 같은 명령어로 해당 날짜의 파일을 찾을 수 있습니다.
[cube@localhost cube]$ cd dbfile [cube@localhost dbfile]$ ls -lrt -rw-r--r-- 1 cube kmt 556 Jul 30 11:25 WORK_20140729 -rw-r--r-- 1 cube kmt 3996 Jul 30 11:25 AGENT_20140729 -rw-r--r-- 1 cube kmt 3762 Jul 30 14:06 CALL_20140729 -rw-r--r-- 1 cube kmt 542 Jul 31 09:29 WORK_20140730 -rw-r--r-- 1 cube kmt 2010 Jul 31 09:29 AGENT_20140730 -rw-r--r-- 1 cube kmt 89 Jul 31 09:30 WORK_20140731 -rw-r--r-- 1 cube kmt 304 Jul 31 09:30 AGENT_20140731 -rw-r--r-- 1 cube kmt 948 Jul 31 11:03 CALL_20140730 -rw-r--r-- 1 cube kmt 180 Jul 31 11:03 CALL_20140731
.tmp 디렉토리의 파일을 열어보면, 해당 통계를 몇 Byte까지 DB에 입력했는지 확인이 가능합니다.
[cube@localhost cube]$ cd .tmp [cube@localhost .tmp]$ ls -al total 32 drwxr-xr-x. 4 cube kmt 4096 Jul 31 11:29 . drwxr-xr-x. 13 cube kmt 4096 Jun 24 16:43 .. -rw-r--r--. 1 cube kmt 12 Jul 31 09:30 .AGENT -rw-r--r--. 1 cube kmt 12 Jul 31 11:03 .CALL -rw-r--r--. 1 cube kmt 8 Jul 31 02:00 .DAILY -rw-r--r--. 1 cube kmt 11 Jul 31 09:30 .WORK drwxr-xr-x. 2 cube kmt 4096 Jun 2 13:24 .photo drwxr-xr-x. 2 cube kmt 4096 Jul 30 20:08 .scenario
304 Bytes insert 했습니다. 304부분을 0으로 되돌리면 DB를 처음부터 다시 insert 합니다.
[cube@localhost .tmp]$ cat .AGENT 20140731 304
8.2기존 통계 삭제
8.2.1쿼리문 수정
기존 통계를 삭제하는 쿼리문에는 날짜와 시간이 포함되어 있습니다. 날짜와 시간 부분을 삭제하려는 날짜와 시간으로 변경합니다. 예를 들어 다음 쿼리문에서 '20140501000000’은 2014년 05월 01일 00시 00분 00초입니다. (‘00’은 00시, ‘0000’은 00시 00분, ‘20140501’은 2014년 05월 01일)
delete FROM OT_CALLSTAT Where EVENT_STARTTIME Between '20140501000000' and '20140516235959';
8.2.2쿼리문 실행
DB에 접속하여 삭제 쿼리문을 실행합니다. sqlplus로 접속할 경우 다음과 같이 진행합니다.
[cube@localhost ~]$ sqlplus cubeid/cubepw@cubesid ..................... ID/PW@SID SQL> delete FROM OT_CALLSTAT Where EVENT_STARTTIME Between '20140731000000' and '20140731235959'; delete FROM BU_OT_CALLSTAT Where EVENT_STARTTIME Between '20140731000000' and '20140731235959'; delete FROM RE_QUEUESTEP5ANAB_D WHERE END_DATE Between '20140731' and '20140731' ; delete FROM RE_QUEUESTEP5ANAB_H WHERE END_DATE Between '20140731' and '20140731' AND END_HOURLY BETWEEN '00' AND '23'; delete FROM RE_QUEUESTEP5ANAB_U WHERE END_DATE Between '20140731' and '20140731' AND END_USERMINUTE BETWEEN '0000' AND '2359'; delete FROM RE_QUEUESTATL_D WHERE END_DATE Between '20140731' and '20140731'; delete FROM RE_QUEUESTATL_H WHERE END_DATE Between '20140731' and '20140731' AND END_HOURLY BETWEEN '00' AND '23'; delete FROM RE_QUEUESTATL_U WHERE END_DATE Between '20140731' and '20140731' AND END_USERMINUTE BETWEEN '0000' AND '2359'; delete FROM RE_EMPTALKTIMESTEP_D WHERE END_DATE Between '20140731' and '20140731' ; delete FROM RE_EMPTALKTIMESTEP_H WHERE END_DATE Between '20140731' and '20140731' AND END_HOURLY BETWEEN '00' AND '23'; delete FROM RE_EMPTALKTIMESTEP_U WHERE END_DATE Between '20140731' and '20140731' AND END_USERMINUTE BETWEEN '0000' AND '2359'; delete FROM RE_EMPQSKILL_D WHERE END_DATE Between '20140731' and '20140731'; delete FROM RE_EMPQSKILL_H WHERE END_DATE Between '20140731' and '20140731' AND END_HOURLY BETWEEN '00' AND '23'; delete FROM RE_EMPQSKILL_U WHERE END_DATE Between '20140731' and '20140731' AND END_USERMINUTE BETWEEN '0000' AND '2359'; delete FROM RE_EMPLOYEEPOBCALL_D WHERE END_DATE Between '20140731' and '20140731' ; delete FROM RE_EMPLOYEEPOBCALL_H WHERE END_DATE Between '20140731' and '20140731' AND END_HOURLY BETWEEN '00' AND '23'; delete FROM RE_EMPLOYEEPOBCALL_U WHERE END_DATE Between '20140731' and '20140731' AND END_USERMINUTE BETWEEN '0000' AND '2359'; delete FROM RE_EMPLOYEECALL_D WHERE END_DATE Between '20140731' and '20140731' ; delete FROM RE_EMPLOYEECALL_H WHERE END_DATE Between '20140731' and '20140731' AND END_HOURLY BETWEEN '00' AND '23'; delete FROM RE_EMPLOYEECALL_U WHERE END_DATE Between '20140731' and '20140731' AND END_USERMINUTE BETWEEN '0000' AND '2359'; delete FROM RE_DNIS_D WHERE END_DATE Between '20140731' and '20140731' ; delete FROM RE_DNIS_H WHERE END_DATE Between '20140731' and '20140731' AND END_HOURLY BETWEEN '00' AND '23'; delete FROM RE_DNIS_U WHERE END_DATE Between '20140731' and '20140731' AND END_USERMINUTE BETWEEN '0000' AND '2359'; delete FROM RE_DNCALL_D WHERE END_DATE Between '20140731' and '20140731' ; delete FROM RE_DNCALL_H WHERE END_DATE Between '20140731' and '20140731' AND END_HOURLY BETWEEN '00' AND '23'; delete FROM RE_DNCALL_U WHERE END_DATE Between '20140731' and '20140731' AND END_USERMINUTE BETWEEN '0000' AND '2359'; delete FROM RE_EMPQIB_D WHERE END_DATE Between '20140731' and '20140731' ; delete FROM RE_EMPQIB_H WHERE END_DATE Between '20140731' and '20140731' AND END_HOURLY BETWEEN '00' AND '23'; delete FROM RE_EMPQIB_U WHERE END_DATE Between '20140731' and '20140731' AND END_USERMINUTE BETWEEN '0000' AND '2359'; delete FROM RE_EMPLOYEECAMPCALL_D WHERE END_DATE Between '20140731' and '20140731' ; delete FROM RE_EMPLOYEECAMPCALL_H WHERE END_DATE Between '20140731' and '20140731' AND END_HOURLY BETWEEN '00' AND '23'; delete FROM RE_EMPLOYEECAMPCALL_U WHERE END_DATE Between '20140731' and '20140731' AND END_USERMINUTE BETWEEN '0000' AND '2359'; delete FROM OT_EMPLOYEESTATE Where EVENT_STARTTIME Between '20140731000000' and '20140731235959'; delete FROM RE_EMPLOYEESTATE_D WHERE END_DATE Between '20140731' and '20140731' ; delete FROM RE_EMPLOYEESTATE_H WHERE END_DATE Between '20140731' and '20140731' AND END_HOURLY BETWEEN '00' AND '23'; delete FROM RE_EMPLOYEESTATE_U WHERE END_DATE Between '20140731' and '20140731' AND END_USERMINUTE BETWEEN '0000' AND '2359'; delete FROM RE_EMPLOYEEREASON_D WHERE END_DATE Between '20140731' and '20140731' ; delete FROM RE_EMPLOYEEREASON_H WHERE END_DATE Between '20140731' and '20140731' AND END_HOURLY BETWEEN '00' AND '23'; delete FROM RE_EMPLOYEEREASON_U WHERE END_DATE Between '20140731' and '20140731' AND END_USERMINUTE BETWEEN '0000' AND '2359'; delete FROM OT_EMPLOYEETIMEBOOK Where LOGON_TIME Between '20140731000000' and '20140731235959'; delete FROM RE_EMPLOYEELOGINCOUNT_D WHERE END_DATE Between '20140731' and '20140731' ; delete FROM RE_EMPLOYEELOGINCOUNT_H WHERE END_DATE Between '20140731' and '20140731' AND END_HOURLY BETWEEN '00' AND '23'; delete FROM RE_EMPLOYEELOGINCOUNT_U WHERE END_DATE Between '20140731' and '20140731' AND END_USERMINUTE BETWEEN '0000' AND '2359'; SQL> commit; SQL> quit
8.3Recovery 실행
8.3.1Recovery 실행
준비해둔 dbfile을 CUBE 엔진 서버로 이동합니다. CUBE 홈 디렉토리 내에 새로운 디렉토리를 만들거나 dbfile 디렉토리 내에 새로운 디렉토리를 만들어서 정리해두는 것이 좋습니다. bin 디렉토리로 이동하여 Recovery를 실행합니다. dbfile의 위치는 $NEXUS_HOME/recovery_20140731 입니다. AGENT – WORK – CALL의 순서대로 진행합니다.
./recovery –u cube –p cube123@cube –f ../recovery_20140731/AGENT_20140731 ./recovery –u cube –p cube123@cube –f ../recovery_20140731/WORK_20140731 ./recovery –u cube –p cube123@cube –f ../recovery_20140731/CALL_20140731
Recovery 실행 시, 리다이렉션(>)을 이용하면 콘솔에 출력되는 내용을 해당 파일에 출력하여, recovery 후 로그 내용을 파일로 확인할 수 있습니다.
ex) recovery -u test -p test@test -f CALL_20090101 > recovery.log
8.3.2Recovery 일괄 실행
recovery 실행 시 -d로 디렉토리 경로를 입력하면 해당 디렉토리 내의 모든 dbfile을 DB에 insert 합니다. AGENT - WORK - CALL 순서로 자동으로 insert 됩니다.
[cube@kmt-linux1 bin]$ ./recovery -h recovery -u <user> -p <pass> -f <filename> -d <directoryname>
다음과 같이 실행합니다.
./recovery –u cube –p cube123@cube –f ../recovery_20140731
완료 후에 파일 수를 확인합니다.
========================================= total : (../recovery/) ----------------------------------------- recovery files[3] : recovery success[3] =========================================
주의
Recovery를 일괄 실행할 경우, dbfile의 크기에 따라 개수를 나누어 작업해야 합니다.
너무 많은 내용을 일괄적으로 Recovery 시 데이터가 누락될 위험이 있습니다.