Sun Java System Calendar Server 6.3 管理指南

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 公用程式會在刪除資料庫之前發出警告。