Sun Java logo     上一個      目錄      索引      下一個     

Sun logo
Sun Java System Calendar Server 6 2005Q1 管理指南 

第 16 章
使用 csdb 管理 Calendar Server 資料庫

Calendar Server 將許多資料庫檔案保存在多個目錄中。您必須透過實作第 10 章「配置自動備份 (csstored)」中說明的自動備份程序或實作您自己的備份系統來保護資料庫檔案。您可以使用 csdb 公用程式管理資料庫檔案。

本章說明如何使用 csdb 管理 Calendar Server。本章包括以下小節:


使用 csdb 管理行事曆資料庫

若要管理資料庫檔案,請使用 Calendar Server 公用程式 csdb。本小節包含以下主題:

csdb 如何將資料庫檔案分組

行事曆資料庫公用程式 csdb 將資料庫檔案視為三種邏輯資料庫:

行事曆資料庫 (caldb)

caldb 由資料庫目錄中所有的 .db 檔案和 _db.* 檔案組成。以下是行事曆資料庫檔案 (以及 cld_cacheldap_cache 子目錄) 的預設位置:

/var/opt/SUNWics5/csdb

如果願意,您可以在執行 Calendar Server 配置程式 (csconfigurator.sh) 時指定其他目錄。如需有關此配置程式的資訊,請參閱第 3 章「Calendar Server 配置程式 (csconfigurator.sh)」

表 16-1 說明行事曆資料庫 (caldb) 檔案:

表 16-1 Calendar Server 資料庫檔案

檔案

說明

ics50calprops.db

所有行事曆的行事曆特性。包括行事曆 ID (calid)、行事曆名稱、存取控制清單 (ACL) 及所有者。

ics50events.db

所有行事曆的事件。

ics50todos.db

所有行事曆的待辦事項 (工作)。

ics50alarms.db

所有事件和待辦事項 (工作) 的警示。

ics50gse.db

群組排程引擎 (GSE) 之排程請求的佇列。

ics50journals.db

行事曆的日誌。在目前發行版本中未實現日誌。

ics50caldb.conf

資料庫版本識別碼。

ics50recurring.db

週期性事件。

ics50deletelog.db

刪除的事件和待辦事項 (工作)。另請參閱第 18 章「管理刪除記錄資料庫」

階段作業資料庫 (sessdb)

階段作業資料庫由以下目錄中的所有檔案組成:/opt/SUNWics5/cal/lib/admin/session/
/opt/SUNWics5/cal/lib/http/session/

統計資料庫 (statdb)

統計資料庫由以下 counter 目錄中的所有檔案組成:

/opt/SUNWics5/cal/lib/counter/

csdb 可以以特定資料庫為目標

csdb 公用程式的 -t 選項讓您可以指定目標資料庫:

如果您不包含 -t 選項,除 checkrebuild 僅在行事曆資料庫上作業之外,csdb 將在所有三個資料庫上作業。


csdb 管理工作

本小節說明如何使用 csdb 公用程式執行以下管理工作:

列出資料庫群組狀態

若要檢視資料庫群組 (caldbsessdbstatdb) 的狀態,請使用 csdb 公用程式 list 指令。

若要列出資料庫狀態,請:

  1. 以具有安裝 Calendar Server 的系統之管理權限的使用者身份登入。
  2. Calendar Server 可以執行,也可以停止;然而,如果可能,請停止 Calendar Server。
  3. 變更至 /sbin 目錄。例如,在 Solaris 作業系統上,輸入:
  4. cd /opt/SUNWics5/cal/sbin

  5. 對一個或所有資料庫群組執行 list 指令。例如,若要列出所有三個資料庫群組的狀態和統計資料,請執行:
  6. ./csdb list

    以下代碼顯示範例輸出:

    Sleepycat Software:Berkeley DB 4.1.25:(December 19, 2002)

    Calendar database version: 3.0.0 [BerkeleyDB]

    Total database size in bytes: 57344

    Session database version: 1.0.0 [BerkeleyDB]

    Total database size in bytes: 0

    Counter database version: 1.0.0 [Memory Mapped Files]

    Total database size in bytes: 118792

    或者,您可以選擇使用詳細模式。例如:

    ./csdb -v list

    以下範例代碼顯示詳細輸出:

    Sleepycat Software:Berkeley DB 4.1.25:(December 19, 2002)

    Calendar database version:3.0.0 [BerkeleyDB]

    Total database size in bytes: 57344

    Total number of calendars: 2

    Total number of events: 0

    Total number of tasks: 0

    Total number of alarms: 0

    Total number of gse entries: 0

    Total number of master component entries: 0

    Total number of deletelog entries: 0

    Total logfile size in bytes: 5779919

    Session database version:1.0.0 [BerkeleyDB]

    Total database size in bytes: 0

    Total logfile size in bytes: 0

    Counter database version:1.0.0 [Memory Mapped Files]

    Total database size in bytes: 118792

    或者,使用 -t 選項指定一個目標資料庫群組 (caldbsessdbstatdb)。例如,若要僅檢視行事曆資料庫的資料庫狀態和統計資料,請執行:

    csdb -t caldb list

檢查行事曆資料庫是否損毀

使用 check 指令掃描行事曆資料庫,以檢查行事曆中 (包括行事曆特性 [calprop]、事件和待辦事項 [工作]) 是否有損毀。如果 check 指令找到無法解決的不一致情況,它會在輸出中報告該情況。

check 指令不檢查警示或群組排程引擎 (GSE) 資料庫中是否有損毀。

若要檢查資料庫是否損毀,請:

  1. 以具有安裝 Calendar Server 的系統之管理權限的使用者身份登入。
  2. Calendar Server 可以執行,也可以停止;然而,如果可能,請停止 Calendar Server。
  3. 如果您尚未建立行事曆資料庫的複本,請建立複本。僅複製資料庫 (.db) 檔案。您無需複製任何共用 (__db.*) 檔案或記錄 (log.*) 檔案。
  4. 移至 cal_svr_base/SUNWics5/cal/sbin 目錄。例如,在 Solaris 作業系統上,
    輸入:
  5. cd /opt/SUNWics5/cal/sbin

  6. 在行事曆資料庫的複本中執行 check 指令:
  7. ./csdb check dbdir > /tmp/check.out 2>&1

    如果您未指定 dbdircheck 將使用目前目錄中的資料庫。

    check 指令可產生大量資訊,因此請考量將所有輸出 (包括 stdoutstderr) 重新導向至一個檔案 (如範例所示)。

  8. check 已完成時,請複查輸出檔案。
  9. 如果資料庫已被損毀,則可以選擇用緊急備份副本替代該資料庫。或者,您可以嘗試執行 rebuild 指令重建已損毀的資料庫。(請參閱以下的「重建行事曆資料庫 (caldb) ─ 無 GSE」。)

重建行事曆資料庫 (caldb) ─ 無 GSE

若要回復已損毀的行事曆資料庫 (caldb),請使用 csdb 公用程式 rebuild 指令。rebuild 指令將掃描所有行事曆資料庫,以檢查是否有損毀。如果 rebuild 指令找到不一致性,它會在 cal_svr_base/SUNWics5/cal/sbin/rebuild_db 目錄中產生重建行事曆資料庫 (.db 檔案)。

rebuild 指令可產生大量資訊,因此請考量將所有輸出 (包括 stdoutstderr) 重新導向至一個檔案。

在以下說明中,rebuild 指令不能重建群組排程引擎 (GSE) 資料庫。如需有關包含重建 GSE 資料庫的說明,請參閱「重建行事曆資料庫,包括 GSE 資料庫」。

若要重建行事曆資料庫而不重建 GSE 資料庫,請:

  1. 以具有安裝 Calendar Server 的系統之管理權限的使用者身份登入。
  2. 停止 Calendar Server。
  3. 如果您尚未建立行事曆資料庫的複本,請建立複本。複製資料庫 (.db) 檔案和記錄 (log.*) 檔。您無需複製任何共用 (__db.*) 檔案。
  4. 移至 cal_svr_base/SUNWics5/cal/sbin 目錄。例如,在 Solaris 作業系統上,輸入:
  5. cd /opt/SUNWics5/cal/sbin

    如果 sbin 目錄的磁碟空間不足,請在其他目錄中執行 rebuild 指令。

  6. 在行事曆資料庫的複本中執行 rebuild 指令:
  7. ./csdb rebuild /tmp/db /tmp/

    如果您未指定資料庫目錄,rebuild 將使用目前目錄中的資料庫。在前面的範例中,/tmp/ 參數為重建資料庫指定目標目錄。


    注意

    請始終使用最新的備份複本重建您的行事曆資料庫。

    然而,如果您的資料大量遺失,而您已經定期備份了資料庫並有多個複本可用,請從最新的複本到最舊的複本進行重建。(唯一的缺點是已刪除的行事曆元件將重新出現在重建資料庫中。)

    例如,如果您有三組備份行事曆資料庫檔案,分別在目錄 db_0601db_0615db_0629 中,請按以下序列執行 rebuild 指令:

    1. ./csdb rebuild db_0629

    然後檢查是否有損毀。如果此備份副本也被損毀,則在下一個備份副本上執行 rebuild。

    1. ./csdb rebuild db_0615

    然後檢查是否有損毀。如果此備份副本也被損毀,則在下一個備份副本上執行 rebuild。

    1. ./csdb rebuild db_0601

    ... 等等.

    rebuild 指令會將已重建的資料庫寫入至 cal_svr_base/SUNWics5/cal/sbin/rebuild_db 目錄。


  8. rebuild 已完成時,請複查 rebuild.out 檔案中的輸出。如果重建成功,rebuild.out 檔案中的最後一行應該是:
  9. Calendar database has been rebuilt

  10. 驗證 rebuild 成功之後,請從 rebuild_db 目錄中將重建資料庫 (.db) 檔案複製到您的產品資料庫。
  11. 如果您有任何損毀資料庫的共用 (__db.*) 檔案或記錄 (log.*) 檔案,請將其移至其他目錄。
  12. 重新啟動 Calendar Server。

重建行事曆資料庫,包括 GSE 資料庫

如果您已在所在站點實作群組排程,則重建應該包括 GSE 資料庫。

若要同時重建行事曆資料庫和 GSE 資料庫,請:

  1. 透過執行 csschedule -v list 指令確定 GSE 資料庫中是否有項目,然後讓 GSE 完成處理這些項目。
  2. 以具有安裝 Calendar Server 的系統之管理權限的使用者身份登入。
  3. 停止 Calendar Server。
  4. 如果您尚未建立行事曆資料庫的複本,請建立複本。複製資料庫 (.db) 檔案和記錄 (log.*) 檔。您無需複製任何共用 (__db.*) 檔案。
  5. 移至 cal_svr_base/SUNWics5/cal/sbin 目錄。例如,在 Solaris 作業系統上,輸入:
  6. cd /opt/SUNWics5/cal/sbin

    如果 sbin 目錄的磁碟空間不足,請在其他目錄中執行 rebuild 指令。

  7. 在行事曆資料庫的複本中執行 rebuild 指令:
  8. ./csdb -g rebuild /tmp/db /tmp/

    如果您未指定資料庫目錄,rebuild 將使用目前目錄中的資料庫。在前面的範例中,/tmp/ 參數為重建資料庫指定目標目錄。


    注意

    請始終使用最新的備份複本重建您的行事曆資料庫。

    然而,如果您的資料大量遺失,而您已經定期備份了資料庫並有多個複本可用,請從最新的複本到最舊的複本進行重建。(唯一的缺點是已刪除的行事曆元件將重新出現在重建資料庫中。)

    例如,如果您有三組備份行事曆資料庫檔案,分別在目錄 db_0601db_0615db_0629 中,請按以下序列執行 rebuild 指令:

    ./csdb rebuild db_0629
    ./csdb rebuild db_0615
    ./csdb rebuild db_0601

    然後 rebuild 指令會將重建資料庫寫入至 cal_svr_base/SUNWics5/cal/sbin/rebuild_db 目錄。


  9. rebuild 已完成時,請複查 rebuild.out 檔案中的輸出。如果重建成功,rebuild.out 檔案中的最後一行應該是:
  10. Calendar database has been rebuilt

  11. 驗證 rebuild 成功之後,請從 rebuild_db 目錄中將重建資料庫 (.db) 檔案複製到您的生產資料庫。
  12. 如果您有任何損毀資料庫的共用 (__db.*) 檔案或記錄 (log.*) 檔案,請將其移至其他目錄。
  13. 重新啟動 Calendar Server。

重建輸出範例

以下範例顯示指令及其產生的輸出:

# ./csdb -g rebuild

Building calprops based on component information.

Please be patient, this may take a while...

Scanning events database...

512 events scanned

Scanning todos database...

34 todos scanned

Scanning events database...

512 events scanned

Scanning todos database...

34 todos scanned

Scanning deletelog database...

15 deletelog entries scanned

Scanning gse database...

21 gse entries scanned

Scanning recurring database...

12 recurring entries scanned

Successful components db scan

Calendar database has been rebuilt

Building components based on calprops information.

Please be patient, this may take a while...

Scanning calprops database to uncover events...

25 calendars scanned

Scanning calprops database to uncover todos...

25 calendars scanned

Successful calprops db scan

Calendar database has been rebuilt


注意

前面的輸出範例顯示事件資料庫和待辦事項資料庫分別被掃描了兩遍。這不是錯誤。掃描第一遍以驗證 calprops 資料庫中的資訊,然後再掃描一遍以確定 calprops 可從行事曆資料庫中存取。


刪除資料庫群組

若要刪除行事曆資料庫,請使用 csdb 公用程式 delete 指令。必須停止 Calendar Server。

使用 -t 選項指定目標資料庫 (caldbsessdbstatdb);否則,csdb 將刪除所有三個資料庫。

例如,若要刪除行事曆資料庫:

csdb -t caldb delete

csdb 公用程式會在刪除資料庫之前發出警告。



上一個      目錄      索引      下一個     


文件號碼﹕819-1479。Copyright 2005 Sun Microsystems, Inc. 版權所有。