目錄

簡介

資料庫表

摘要表和彙總表

CVP 8.x和9.0報告資料庫之間的差異

報表伺服器過載

疑難排解

故障和恢復 — 報告伺服器部分

報告伺服器故障

資料庫連線失敗

未完成的呼叫

恢復模式

跟蹤級別和日誌檔案

聚合器調試和日誌

資料庫空間問題

簡介

本檔案將概述思科整合客戶語音入口網站(CVP)報告伺服器，並提供疑難排解步驟。

- 報告服務從Cisco Unified IP Interactive Voice Response(IVR)服務、會話發起協定(SIP)服務（如果使用）和Cisco Unified CVP語音XML(VXML)伺服器接收報告資料。然後，該服務將資料轉換並寫入Informix報告資料庫，該資料庫在呼叫中心環境中用作歷史報告。

- 然後，報告服務會分析這些消息，將其轉換為適用的結構化查詢語言(SQL)語句批次，並通過Java資料庫連線(JDBC)API將它們執行到SQL資料庫中。

資料庫表

CVP表分類為：

- 呼叫表

- VXML表

- 摘要/彙總表

- 查詢和引用表

- CallBack表提供

呼叫從呼叫表開始，並通過CallGUID列連結到VXMLSession表。

附註：統一CVP日期時間記錄為UTC時間；例外是dbdatetime，它被記錄為本地時間。Localtimezoneoffset是Call表中的列，其中包含從UTC偏移的分鐘數，以便匯出本地時間。這可以用作間隔。

摘要表和彙總表

統一CVP報告伺服器包括一個彙總過程，該流程將呼叫表和VXMLElement表中的資料彙總到新的彙總表中。

報告的摘要表包括：

- ApplicationSummary_15

- ApplicationSummary_Daily

- ApplicationSummary_Weekly

- ApplicationSummary_Monthly

- Call_15

- Call_Daily

- Call_weekly

表是根據此計畫建立的：

- 每日表格在15分鐘表格後面的一天填充。

- 每週表由每日表填充，一旦針對所述周完全填充這些表。

- 每月表格由每週表格填寫，一旦在相關月份完全填寫。

請參閱思科錯誤ID CSCue65248，「CVP Reporting summary tables are not populated」。 在CVP報告伺服器中，不會填充摘要表。此問題是由於CVP 9.0中引入的每月摘要指令碼。

CVP 8.x和9.0報告資料庫之間的差異

僅Windows 2008 R2伺服器支援統一CVP 9.0(1)報告資料庫。由於Windows 2003支援統一CVP 8.x報告資料庫，因此沒有直接更新統一CVP 9.0(1)報告資料庫。

有關遷移說明，請參閱《安裝指南》。請注意：

- 如果電腦已經是域的一部分，則無法安裝報告伺服器元件。

- 報表伺服器元件不能安裝在屬於域的伺服器上。安裝該元件要求本地安全策略的優先順序高於組策略控制檯中的相同安全策略，如果伺服器是域的一部分，則無法這樣做。但是，安裝後，可以將伺服器新增回域，因為這不需要在伺服器上運行任何本地策略。

安裝後任務的差異包括：

- 4.x、7.x報告資料庫 — 以Informix使用者身份登入，然後運行以下批處理檔案：

- ReportingRunAsInformix.bat。

- ReportingRunAsCVP_DbAdmin.bat。

- 8.x報告資料庫 — 以Informix使用者身份登入，然後運行此批處理檔案：

- CVP_Database_Config.bat。

- 9.x報告資料庫 — 安裝後過程不需要批處理檔案。

使用者的主要區別在於，使用9.x時，Informix使用者已不復存在。相反，cvp_dbadmin使用者是資料庫的所有者。

報表伺服器過載

Cisco MCS-7845報告伺服器每秒可處理420條消息。

使用以下等式來確定每個VoiceXML應用程式每秒生成的報告消息數：

A# = %CPS * CPS *消息

其中：

- %CPS =使用此VoiceXML應用程式的呼叫的百分比

- CPS =每秒呼叫數

- MSG =此應用程式生成的報告消息數

使用以下公式新增每個應用程式生成的消息：

A（總計）= A1+ A2+?..+An

其中A(total)是VoiceXML應用程式每秒生成的報告消息總數。

每個元素或活動的報告消息數在Cisco Unified Customer Voice Portal(CVP)解決方案參考網路設計(SRND)版本9.0(1)中的表17中。

為簡單起見，您可以使用此查詢計算每秒寫入vxmlsession表的平均消息數：

select count(*)/86400 from vxmlsession where dbdatetime between

'2012-12-12 00:00:00' and '2012-12-13 00:00:00'"

對以下14個表運行此查詢：

1. 通話

2. 呼叫事件

3. CallICMInfo

4. OutgoingECCVariable（與CCB相關）

5. VXMLCustomContent

6. VXMLElement

7. VXMLElementDetail

8. VXMLElementFlag

9. VXMLError

10. VXMLHotEvent

11. VXMLHotLink

12. VXMLSession

13. VXMLSessionVariable

14. VXMLVoiceInteractDetail

新增結果以獲取報告伺服器每秒接收的平均郵件數。

疑難排解

如果報告伺服器超載，報告日誌包含以下警報：

CVP_8_0_RPT-1-REPORTING_DB_ALERT_RAISE ALERT!!!!! The total JDBC messages queue

size has exceeded the critical limit 300000 .... All the JDBC messages will

be dropped. [id:4014]

CVP_8_0_RPT-1-REPORTING_DB_ALERT_RAISE ALERT!!!!! The total JDBC messages queue

size has exceeded the max limit 250000 .... Some of the JDBC messages may be

dropped. [id:4014]

故障和恢復 — 報告伺服器部分

報告伺服器進入部分服務有幾種情況。但是，「部分服務」並不一定表示存在問題。

報告伺服器故障

如果報告伺服器發生故障，呼叫伺服器會快取發往報告伺服器的消息，記憶體中最多可儲存200,000條消息。達到此限制後，所有新的消息詳細資訊都會被丟棄。

附註：對於UCS平台，必須修改報告伺服器上的「接收緩衝區數」設定，以便最大限度地提高虛擬平台上的完全報告和呼叫負載。如果在安裝作業系統後未修改此設定，則在CallServer上備份消息，並且消息隊列將填滿。您會看到每秒呼叫數(CPS)急劇下降。

執行以下步驟，將報告伺服器TCP設定上的接收緩衝區數設定為4096（最大值）：

1. 在報告伺服器上，按一下控制面板 > 網路連線。

2. 按一下右鍵「Network Connection(網路連線)」。

3. 按一下Advanced頁籤。

4. 在「屬性」頁籤下，選擇「接收緩衝區數」。

5. 在值文本框中，輸入4096。

6. 重新啟動報表伺服器。

請參閱整合CVP的虛擬化：UCS網路配置以瞭解其他資訊。

資料庫連線失敗

如果資料庫連線失敗，報告伺服器會發出簡單網路管理協定(SNMP)警報，並開始將消息儲存到使用者指定的限制範圍內的永久檔案(%CVP_HOME%\tmp\CVPReporting.tmp)。在這段時間內，報告伺服器處於服務中。當達到限制的75%時，會向日誌檔案中寫入一條警告。當達到100%的限制時，將傳送SNMP警報，並且報告伺服器進入部分服務。任何新郵件都可能被丟棄。

當資料庫連線恢復時，報告伺服器將進入恢復模式，並將其狀態更改為「部分服務」（如果它尚未處於該狀態）。 然後，它開始從%CVP_HOME%\tmp\CVPReporting.tmp檔案讀取消息並將它們提交到資料庫。根據檔案的大小，將所有資料提交到資料庫可能需要幾個小時。恢復期間傳入的新消息將在記憶體中緩衝。

但是，無論伺服器的模式或狀態如何，報告伺服器可以緩衝的消息數都有限制：

- 當緩衝的消息數達到100,000時，會向使用者傳送SNMP警報作為警告。

- 在200,000條消息時，將發出另一個SNMP警報，丟棄所有新消息的詳細資訊，並且僅保留基本資料（如呼叫、呼叫事件和會話資訊）。在200,000條消息上，報告伺服器也會將其狀態更改為Partial Service（如果它尚未處於該狀態）。

- 當緩衝消息的總數達到300,000時，將傳送另一個SNMP警報，並且從此點開始丟棄所有新消息。

- 當記憶體中的消息數回落到50,000以下時，會發出一個SNMP警報，表明隊列大小已恢復正常，並且報告伺服器的狀態恢復為正在服務。

如果在啟動時存在永久性檔案，則報告伺服器將處於「部分服務」狀態並進入恢復模式。

未完成的呼叫

當報告伺服器恢復未完成的呼叫時，還可以轉到部分服務。

在報告伺服器日誌中看到以下消息：

%CVP_8_0_RPT-1-REPORTING_STATE_CHANGE:  REPORTING Subsystem state changed to

RPT SS RPT1 changes its state to Partial Service cause Unfinished calls

recovery started [id:4001]

日誌還包含有關這些呼叫恢復的資訊。請記住，恢復過程可能需要很長時間！

%CVP_8_0_RPT-6-REPORTING_INFO:  Recover Uncompleted call: 73

CallGUID:90DAAAC91000013C01075FC253EF37A4 Event Id: 11 CauseId: 0 [id:4000]

...

%CVP_8_0_RPT-6-REPORTING_INFO:  Recover Uncompleted call:

129 CallGUID:673A58361000013C087A209E53EF37A5 Event Id: 0 CauseId: 0 [id:4000]

完成未完成的呼叫後，將看到這些消息，並且報告伺服器將返回到「正在服務」狀態：

%CVP_8_0_RPT-6-REPORTING_INFO:  Recover CallRegistry finished [id:4000]

%CVP_8_0_RPT-6-REPORTING_INFO:  initKeepAliver() -- processed unfinished calls

[id:4000]

%CVP_8_0_RPT-1-REPORTING_STATE_CHANGE:  REPORTING Subsystem state changed to RPT

SS RPT1 changes its state to In Service cause Normal Operation [id:4001]

恢復模式

可以刪除%CVP_HOME%\tmp\CVPReporting.tmp檔案，以避免恢復過程並使報告伺服器恢復服務。以下過程介紹了如何繞過恢復過程：

1. 停止CVP呼叫伺服器服務。

2. 導航到%CVP_HOME%\tmp。

3. 重新命名CVPReporting.tmp檔案。

4. 啟動CVP呼叫伺服器服務。

請參閱思科錯誤ID CSCtu43570，「CVPReporting.tmp超出大小限制且無法及時復原。」 新的呼叫報告資料丟失，因為無法完全讀取該檔案。硬碟已滿，最終導致「磁碟空間不足」的情況。

此問題已在Unified CVP 8.5(1)SR18和8.5(1)SR6報告資料庫中修復。

跟蹤級別和日誌檔案

編輯<install_dir>\Cisco\CVP\conf\reporting.properties檔案，以在報告伺服器日誌中設定跟蹤級別。範例如下：

RPT.traceMask = 0x810000

RPT.logLevel = DEBUG

聚合器調試和日誌

這些摘要使用ciscoadmin資料庫中的兩個表：agg_schedule和agg_statements。

<CVP_HOME>\logs\reporting.txt檔案顯示聚合是否已運行。

以下過程介紹了如何為aggregator.bat作業啟用其他跟蹤：

1. 等待至少15分鐘。

2. 編輯<CVP_HOME>\bin\aggregator.bat檔案。將.bat檔案的值更改為此預設值：

echo call sp_sched_agg(); | dbaccess ciscoadmin

到：

echo call sp_sched_agg('D'); | dbaccess ciscoadmin

調試日誌寫入CVP_HOME>\logs\Agg_Debug.out檔案。

資料庫空間問題

附註：在不同的實現中已經看到過此空間問題。由於此問題的解決方案涉及深入的Informix技術知識，因此如果您遇到此問題，請聯絡思科技術協助中心(TAC)。

此程式說明疑難排解程式：

1. 升級至Unified CVP 8.0(1)報告資料庫。

2. 運行CVP_Database_Config.bat檔案，並發現問題：

3. 檢視c:\temp\cvpupg.sql檔案。內容為：

call upg_est(); UNLOAD to "c:/temp/upgvars.out" SELECT estimate1,estimate2,

retention,log_space_needed,minlog,maxlog FROM cvp_data:upg_estimate;

4. 連線到資料庫。當您嘗試檢查upg_estimate表時，它不存在。

5. 檢查c:\Temp\CiscoUnifiedCVPDB.log檔案，然後檢視以下錯誤：

23:41:54 Wed Dec 19 2012 : dbaccess cvp_data

C:\Cisco\CVP\informix_frag\upg_est.sql

Database selected.

312: Cannot update system catalog (sysprocbody).

131: ISAM error: no free disk space

Error in line 26

Near character position 11

23:41:54 Wed Dec 19 2012 : dbaccess cvp_data c:/temp/cvpupg.sql 2>NUL

Database selected.

206: The specified table (upg_estimate) is not in the database.

6. 檢查upg_est.sql。upg_estimate表的內容為：

SELECT COUNT(*)

INTO tmp_int

FROM systables

WHERE tabname='upg_estimate';

IF tmp_int=0 THEN

CREATE TABLE upg_estimate (

estimate1 INTERVAL HOUR TO MINUTE,

estimate2 INTERVAL HOUR TO MINUTE,

retention SMALLINT,

log_space_needed INTEGER,

minlog INTEGER,

maxlog INTEGER

);
但是，不會建立此表。

7. 連線到DBAccess，然後運行以下查詢：

SELECT COUNT(*) FROM systables     WHERE tabname='upg_estimate';
該查詢返回0，因此應該已經建立了表。

8. 嘗試在DBAccess中手動建立表：

CREATE TABLE upg_estimate (

estimate1 INTERVAL HOUR TO MINUTE,

estimate2 INTERVAL HOUR TO MINUTE,

retention SMALLINT,

log_space_needed INTEGER,

minlog INTEGER,

maxlog INTEGER

);
您會收到錯誤訊息：

261: Cannot Create file for table (informix.upg_estimate).

131: ISAM error: no free disk space

9. 運行onstat - d命令，並驗證最後一個區塊沒有足夠的空間：

10. 以「Informix」使用者身份登入CVP Informix框。

11. 在E:\ifmxdata\cvp_db_wp17cvprpt1a\下建立一個名為new_space的新空檔案。開啟命令提示符，然後輸入以下命令。請勿複製和貼上：

onspaces -a cvp_data_dbspace -

E:\ifmxdata\cvp_db_wp17cvprpt1a\cvp_data_dbspace\new_space -o 0 -s 10240

附註：-s表示新區塊的大小，以KB為單位。100 MB為100 * 1024 = 102400。

此命令向CVP Informix伺服器新增100 MB的dbspace。

12. 重新運行CVP_Database_Config.bat檔案。現在它將正常運行。

此示例說明如何使用DBAccess連線到資料庫：