المقدمة
يصف هذا المستند عملية أستكشاف أخطاء الجداول المكررة وإصلاحها لميزة إعداد التقارير ل Cisco Customer Voice Portal (CVP).
تمت المساهمة من قبل محمد محسب، أليكسي يانكوفسكي وألكسندر ليفيتشيف، مهندسي TAC من Cisco.
المتطلبات الأساسية
المتطلبات
توصي Cisco بأن تكون لديك معرفة بالمواضيع التالية:
- نظام التشغيل Microsoft Windows Server
- Cisco CVP
- أداة وصول DB المعلوماتية
المكونات المستخدمة
تستند المعلومات الواردة في هذا المستند إلى الإصدار 11.0 من خادم CVP، ولكنها تنطبق أيضا على الإصدارات السابقة.
تم إنشاء المعلومات الواردة في هذا المستند من الأجهزة الموجودة في بيئة معملية خاصة. بدأت جميع الأجهزة المُستخدمة في هذا المستند بتكوين ممسوح (افتراضي). إذا كانت شبكتك مباشرة، فتأكد من فهمك للتأثير المحتمل لأي أمر.
أستكشاف أخطاء الجداول المكررة وإصلاحها في تقارير CVP
في عناصر تحكم جدول agg_schedule لقاعدة بيانات CiscoAdmin عدد المرات التي يتم فيها تشغيل كل تجميع. في بعض الحالات بعد الترقية، تتم إعادة تحميل الجدول بجدول جديد إلا أن الجدول القديم لا يزال موجودا. وهذا يؤدي إلى تنفيذ كل تجميع مرتين. وسيؤثر هذا تأثيرا سلبيا على دقة الجداول الموجزة لأن كل جدول سيكون له ضعف عدد الصفوف، وبالتالي عدد الصفوف المدرجة فيه.
تشخيص
تحقق من وجود تكرارات في الجدول agg_schedule.
تسجيل الدخول إلى خادم تقارير CVP مع مستخدم CVP_DBADMIN.
بدء تشغيل أداة Windows CMD. اكتب dbaccess أمر. حدد علامة التبويب توصيل > توصيل. حدد خادم قاعدة بيانات CVP واضغط مفتاح الإدخال. ستتم مطالبتك بكتابة بيانات الاعتماد. أستخدم حساب 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 كما هو موضح في هذه الصورة.
تأكد من عدم وجود أنواع مكررة. إذا تم العثور على تكرارات، فقم بتنفيذ الحل البديل.
الحل
إزالة جدول مكرر
تعطيل مهمة الملخص (CVPSummary) في Windows Task Scheduler.
فتح ملف schedule.txt وإزالة كافة البنود المكررة. يجب أن يبقى فقط الإدخالات ال 10 الأولى.
قم بالاتصال بقاعدة بيانات CiscoAdmin كما هو موضح مسبقا وقم بتشغيل هذا الاستعلام. يحذف هذا الأمر جميع الإدخالات من جدول agg_schedule.
قم بتحميل القيم الجديدة من ملف schedule.txt الذي لا يحتوي على أي تكرارات لجدول agg_schedule.
تأكد من عدم وجود تكرارات في الجدول 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 يوما، كرر الخطوات المذكورة أعلاه بالنسبة للجداول اليومية والأسبوعية والشهرية.
إعادة ضبط عمليات الإعدام الأخيرة
إعادة تعيين حقل Lastrun لجداول مدتها 15 دقيقة.
تعرف على الوقت الذي تم فيه تحديث الجداول ذات ال 15 دقيقة. قم بتشغيل هذه الأوامر مقابل قاعدة بيانات cvp_data.
SELECT max(dbdatetime) FROM applicationsummary_15;
SELECT max(dbdatetime) FROM call_15;
قم بتدوين عدد الأيام منذ آخر تحديث.
قم بتشغيل هذا الاستعلام لإعادة تعيين آخر تنفيذ للجداول التي مدتها 15 دقيقة على قاعدة بيانات CiscoAdmin. في هذا المثال، تم تحديث الجداول ذات ال 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 يوما السابقة لهذه الجداول. بهذه الطريقة تضمن أنه في المرة القادمة عند بدء عملية 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;
معلومات ذات صلة