소개
이 문서에서는 Cisco CVP(Customer Voice Portal) 보고 기능에 대한 중복 일정의 문제 해결 프로세스에 대해 설명합니다.
기고자: Mohasseb, Aleksey Yankovsky, Alexander Levecv, Cisco TAC 엔지니어
사전 요구 사항
요구 사항
다음 주제에 대한 지식을 보유하고 있으면 유용합니다.
- Microsoft Windows Server
- Cisco CVP
- Informix DB 액세스 도구
사용되는 구성 요소
이 문서의 정보는 CVP 서버 버전 11.0을 기반으로 하지만 이전 버전에도 적용됩니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다.이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다.현재 네트워크가 작동 중인 경우, 모든 명령어의 잠재적인 영향을 미리 숙지하시기 바랍니다.
CVP 보고에서 중복 일정 문제 해결
ciscoadmin 데이터베이스 agg_schedule 테이블에서 각 집계가 실행되는 빈도를 제어합니다. 일부 경우 업그레이드 후 테이블이 새 일정으로 재로드되지만 이전 일정이 여전히 존재합니다. 이렇게 하면 각 집계가 두 번 수행됩니다. 이렇게 하면 각 데이터베이스에 행 개수가 두 배로 증가하므로 요약 테이블의 정확성에 부정적인 영향을 줍니다. 따라서 개수는 해당 테이블에 삽입됩니다.
진단
agg_schedule 테이블에 중복 항목이 있는지 확인합니다.
cvp_dbadmin 사용자를 사용하여 CVP 보고 서버에 로그인합니다.
Windows CMD 도구를 시작합니다.dbaccess 명령을 입력합니다.Connection(연결) 탭 > Connect(연결)를 선택합니다.cvp 데이터베이스 서버를 선택하고 Enter 키를 누릅니다.자격 증명을 입력하라는 메시지가 표시됩니다.cvp_dbadmin 계정을 사용합니다.
ciscoadmin@cvp 데이터베이스를 선택합니다. 쿼리 언어 > 새로 만들기를 선택합니다.이 명령을 실행합니다.
UNLOAD TO schedule.txt SELECT * FROM agg_schedule
schedule.txt 파일을 엽니다.CVP 버전에 따라 C:\Users\Administrator 또는 C:\db\Informix\etc\sysadmin 폴더에 있을 수 있습니다.
고유한 CVP 데이터 일정 항목이 있어야 합니다.예: call_15 또는 applicationsummary_daily는 이 그림에 나와 있습니다.
중복 유형이 없는지 확인합니다.중복 항목이 발견되면 해결 방법을 구현합니다.
해결 방법
중복 일정 제거
Windows 작업 스케줄러에서 요약 작업(CVPSummary)을 사용하지 않도록 설정합니다.
schedule.txt 파일을 열고 모든 중복 행을 제거합니다.처음 10개의 항목만 남아 있어야 합니다.
ciscoadmin 데이터베이스에 연결하고 이 쿼리를 실행합니다.이 명령은 agg_schedule 테이블에서 모든 항목을 삭제합니다.
agg_schedule 테이블에 중복 항목이 포함되지 않은 schedule.txt 파일에서 새 값을 로드합니다.
agg_schedule 테이블에 중복 항목이 없는지 확인합니다.schedule1.txt 파일의 출력에는 10개의 항목만 포함되어야 합니다.
테이블에서 중복 항목 제거
15분 테이블은 다른 모든 테이블이 채워지는 기준이므로 먼저 수정해야 합니다.
cvp_data 데이터베이스에 연결합니다.
call_15 테이블에 대해 다음 명령을 실행합니다.
SELECT distinct * FROM call_15 into temp t1 with no log;
TRUNCATE table call_15;
INSERT into call_15 select * from t1;
DROP table t1;
applicationSummary_15 테이블에 대해 동일한 단계를 반복합니다.
SELECT distinct * from applicationsummary_15 into temp t1 with no log;
TRUNCATE table applicationsummary_15;
INSERT into applicationsummary_15 select * from t1;
DROP table t1;
참고:60일 이상 전에 문제가 시작되면 매일, 매주, 매월 표에 위의 단계를 반복합니다.
최근 실행 다시 설정
15분 테이블의 lastrun 필드 재설정
15분 테이블이 업데이트된 시간을 확인합니다.cvp_data 데이터베이스에 대해 다음 명령을 실행합니다.
SELECT max(dbdatetime) FROM applicationsummary_15;
SELECT max(dbdatetime) FROM call_15;
마지막 업데이트 이후의 일 수를 기록합니다.
이 쿼리를 실행하여 ciscoadmin DB에서 15분 테이블의 마지막 실행을 재설정합니다.이 예에서는 15분 테이블이 마지막으로 17일 전에 업데이트되었습니다.
UPDATE ciscoadmin:agg_schedule SET lastrun = (current year to day - 17 units day) WHERE dst_tabname LIKE 'call_15';
UPDATE ciscoadmin:agg_schedule SET lastrun = (current year to day - 17 units day) WHERE dst_tabname LIKE 'applicationsummary_15';
참고:명령에서 "17"을 이 두 테이블 각각에 대해 단계에서 얻은 일 수로 대체합니다.
15분 후에 테이블이 수정됩니다.
15분 테이블은 최근 60일 동안 데이터를 보존하므로 일별, 주별 및 월별 테이블에 대한 시작 값을 재설정하고 이러한 테이블에 대한 모든 데이터를 60일 뒤로 삭제합니다. 이렇게 하면 다음에 aggregation.bat 프로세스가 시작될 때 일별, 주별, 월별 테이블에 데이터를 올바른 값으로 채웁니다.
ciscoadmin 데이터베이스에 대해 실행되는 이 명령을 사용하여 일별, 주별 및 월별 테이블의 시작을 재설정합니다.
UPDATE ciscoadmin:agg_schedule SET lastrun = (current year to day - 60 units day) WHERE dst_tabname LIKE 'call_daily';
UPDATE ciscoadmin:agg_schedule SET lastrun = (current year to day - 60 units day) WHERE dst_tabname LIKE 'call_weekly';
UPDATE ciscoadmin:agg_schedule SET lastrun = (current year to day - 60 units day) WHERE dst_tabname LIKE 'call_monthly;
UPDATE ciscoadmin:agg_schedule SET lastrun = (current year to day - 60 units day) WHERE dst_tabname LIKE 'applicationsummary_daily;
UPDATE ciscoadmin:agg_schedule SET lastrun = (current year to day - 60 units day) WHERE dst_tabname LIKE 'applicationsummary_weekly;
UPDATE ciscoadmin:agg_schedule SET lastrun = (current year to day - 60 units day) WHERE dst_tabname LIKE 'applicationsummary_monthly;
60일 전에 일별, 주별 및 월별 테이블의 모든 데이터를 삭제합니다.
DELETE FROM cvp_data:call_daily WHERE dbdatetime > (current - 60 units day);
DELETE FROM cvp_data:call_weekly WHERE dbdatetime > (current - 60 units day);
DELETE FROM cvp_data:call_monthly WHERE dbdatetime > (current - 60 units day);
DELETE FROM cvp_data:applicationsummary_daily WHERE dbdatetime > (current - 60 units day);
DELETE FROM cvp_data:applicationsummary_weekly WHERE dbdatetime > (current - 60 units day);
DELETE FROM cvp_data:applicationsummary_monthly WHERE dbdatetime > (current - 60 units day);
집계 프로세스를 다시 시작하려면 작업 스케줄러에서 요약 작업 CVPSummary를 활성화합니다.
다음을 확인합니다.
이 섹션을 사용하여 컨피그레이션이 제대로 작동하는지 확인합니다.
cvp_db 데이터베이스에 대해 실행된 명령을 사용하여 요약 테이블이 업데이트되는지 확인합니다.
SELECT MAX(dbdatetime) FROM applicationsummary_15;
SELECT max(dbdatetime) FROM applicationsummary_daily;
SELECT max(dbdatetime) FROM applicationsummary_weekly;
SELECT max(dbdatetime) FROM applicationsummary_monthly;
SELECT MAX(dbdatetime) FROM call_15;
SELECT MAX(dbdatetime) FROM call_daily;
SELECT MAX(dbdatetime) FROM call_weekly;
SELECT MAX(dbdatetime) FROM call_monthly;
관련 정보