Sun Java System Calendar Server 6.3 管理指南

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

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

本章說明如何使用 csdb 公程式管理 Calendar Server 資料庫,其中包括以下小節:

16.1 使用 csdb 公用程式管理行事曆資料庫

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

16.1.1 識別三種邏輯資枓庫群組

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

16.1.1.1 行事曆資料庫群組 (csdb)

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

/var/opt/SUNWics5/csdb

如果願意,您可以在執行 Calendar Server 配置程式 (csconfigurator.sh) 時指定其他目錄。如需有關配置程式的資訊,請參閱第 2 章, Calendar Server 6.3 軟體的初始執行階段配置程式 (csconfigurator.sh)

下表說明各種行事曆資料庫 (caldb) 檔案:

表 16–1 Calendar Server 資料庫檔案

檔案 

說明 

ics50calprops.db

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

ics50events.db

所有行事曆的事件。 

ics50todos.db

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

ics50alarms.db

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

ics50gse.db

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

ics50journals.db

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

ics50caldb.conf

資料庫版本識別碼。 

ics50recurring.db

週期性事件。 

ics50deletelog.db

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

16.1.1.2 階段作業資料庫群組 (sessdb)

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

16.1.1.3 統計資料庫群組 (statdb)

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

/opt/SUNWics5/cal/lib/counter/

16.1.2 使用 csdb 公用程式指定特定的目標資料庫群組

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

-t caldb

行事曆資料庫群組。

-t sessdb

階段作業資料庫群組。

-t statdb

統計資料庫群組。


提示 –

如果未包含 -t 選項,csdb 將對所有三個資料庫進行操作。checkrebuild 兩個指令只會對行事曆資料庫 caldb 進行操作。


16.2 使用 csdb 公用程式管理資料庫

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


備註 –

若要執行 csdb 公用程式,您必須以對執行 Calendar Server 的系統具有管理權限的使用者身份登入。如需更多資訊,請參閱附錄 DCalendar Server 指令行公用程式參照


Procedure列出資料庫群組狀態

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

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

  1. 以具有安裝 Calendar Server 的系統之管理權限的使用者身份登入。

  2. Calendar Server 可以執行,也可以停止;然而,如果可能,請停止 Calendar Server。

  3. 移至 /sbin 目錄。例如,在 Solaris 作業系統上,輸入:

    cd /opt/SUNWics5/cal/sbin

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

    ./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

Procedure檢查行事曆資料庫群組中是否發生毀損

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

check 指令不檢查警示或群組排程引擎 (Group Scheduling Engine, GSE) 資料庫中是否發生損毀。

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

  1. 以具有安裝 Calendar Server 的系統之管理權限的使用者身份登入。

  2. Calendar Server 可以執行,也可以停止;然而,如果可能,請停止 Calendar Server。

  3. 如果您尚未建立行事曆資料庫的副本,請建立副本。僅複製資料庫 (.db) 檔案。您無需複製任何共用 (__db.*) 檔或記錄 (log.*) 檔。

  4. 移至 cal-svr-base/SUNWics5/cal/sbin 目錄。例如,在 Solaris 作業系統上,輸入:

    cd /opt/SUNWics5/cal/sbin

  5. 對行事曆資料庫的副本執行 check 指令:

    ./csdb check dbdir \> /tmp/check.out 2\>&1

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

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

  6. 執行 check 指令之後,請複查輸出檔。

    如果資料庫已毀壞,則可以使用緊急備份副本替代該資料庫。或者,您可以嘗試執行 rebuild 指令重建已毀壞的資料庫。

Procedure重建行事曆資料庫群組 (caldb),不包括 GSE 資料庫

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

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

在以下說明中, rebuild 指令不會重建群組排程引擎 (GSE) 資料庫。

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

  1. 以具有安裝 Calendar Server 的系統之管理權限的使用者身份登入。

  2. 停止 Calendar Server。

  3. 如果您尚未建立行事曆資料庫的副本,請建立副本。複製資料庫 (.db) 檔案及記錄 (log.*) 檔。您無需複製任何共用 (__db.*) 檔案。

  4. 移至 cal-svr-base/SUNWics5/cal/sbin 目錄。例如,在 Solaris 作業系統上,輸入:

    cd /opt/SUNWics5/cal/sbin

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

  5. 對以行事曆資料庫製成的副本執行 rebuild 指令:

    ./csdb rebuild /tmp/db /tmp/

    如果未指定資料庫目錄,rebuild 指令會使用目前目錄中的

    資料庫。在前面的範例中,/tmp/ 參數為重建資料庫指定目標目錄。


    備註 –

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

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

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

    1. ./csdb rebuild db_0629

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

    2. ./csdb rebuild db_0615

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

    3. ./csdb rebuild db_0601

      ... etc.

    rebuild 指令會將重建的資料庫寫入 cal-svr-base/SUNWics5/cal/sbin/rebuild_db 目錄。


  6. rebuild 完成後,請複查 rebuild.out 檔案中的輸出。如果重建成功,rebuild.out 檔案中的最後一行應為:


    Calendar database has been rebuilt
  7. 在驗證已成功完成 rebuild 之後,請將重建的資料庫 (.db) 檔案及作業事件記錄 (log.*) 檔從 rebuild_db 目錄複製到您的生產資料庫。

  8. 如果存在任何已毀壞資料庫的共用 (__db.*) 檔案,請將其移至其他目錄。

  9. 重新啟動 Calendar Server。

Procedure重建行事曆資料庫群組,包括 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 作業系統上,輸入:

    cd /opt/SUNWics5/cal/sbin

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

  6. 對行事曆資料庫的副本執行 rebuild 指令:

    ./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 目錄。


  7. rebuild 完成後,請複查 rebuild.out 檔案中的輸出。

    如果重建成功,rebuild.out 檔案中的最後一行應為:


    Calendar database has been rebuilt
  8. 驗證已成功完成 rebuild 之後,請將重建的資料庫 (.db) 檔案從 rebuild_db 目錄複製到您的生產資料庫。

  9. 如果存在任何已毀壞資料庫的共用 (__db.*) 檔案,請將它們移至其他目錄。

  10. 重新啟動 Calendar Server。


範例 16–1 重建輸出範例

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

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


# ./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

16.2.1 刪除資料庫群組

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

使用 -t 選項指定目標資料庫 (caldbsessdbstatdb);否則,csdb 會同時刪除這三個資料庫。

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

csdb -t caldb delete

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