Calendar Server には、削除された予定や仕事 (作業) を格納するための削除ログデータベース (ics50deletelog.db) が用意されています。
初期のリリースでは、Calendar Server は削除された予定や作業をデータベースに維持していませんでした。カレンダの予定と作業のローカルコピーを格納するユーザーインタフェースでは、どの予定が削除されたかを判断することが困難でした。クライアントソフトウェアは、どのコンポーネントが削除されたかを判断するために、すべての予定または仕事 (作業) の一意の識別子 (uid) または定期予定 ID (rid) を、データの Calendar Server コピーと比較するしかありませんでした。この制限は、WCAP コマンドを使用してクライアントユーザーインタフェース (UI) を作成するインストールに直接影響しました。この制限を解決するため、削除ログデータベースが作成されました。
削除ログは、データベースファイルと同様に管理する必要があります。次の節で、削除ログファイルの管理について説明します。
Calendar Server は、その他の Calendar Server データベースファイルと同様に削除ログデータベース (ics50deletelog.db) を csdb ディレクトリ内に自動的に作成します。Calendar Server は、予定と仕事を次のように削除ログデータベースに書き込みます。
繰り返されない予定と仕事
繰り返されない予定または仕事を削除すると、Calendar Server はそれを予定データベース (ics50events.db) または仕事データベース (ics50todos.db) から消去し、削除ログデータベース (ics50deletelog.db) に書き込みます。
定期的な予定と仕事
定期的な予定または仕事の個々のインスタンスが削除された場合、Calendar Server は削除された予定または仕事のインスタンスを削除ログデータベース (ics50deletelog.db) に書き込みます。
定期的な予定または仕事のすべてのインスタンスを削除すると、Calendar Server は予定データベースまたは仕事データベースからマスターコンポーネントを削除し、それを削除ログデータベースに書き込みます。削除ログデータベース内のマスターコンポーネントには、繰り返しパラメータ rrules、rdates、exrules、および exdates が含まれます。
ここでは、削除ログデータベースを照会する方法について説明します。
削除ログデータベースからエントリを返すには、展開モードまたは圧縮モードの fetch_deletedcomponents WCAP コマンドを使用します。
次に、それぞれのモードを使用する場合とその方法について説明します。
展開モード (recurring = 0)
recurring パラメータが 0 の場合、fetch_deletedcomponents は、条件と一致する定期的な予定のすべてのインスタンスを返しますが、定期的な予定のマスターコンポーネントは返しません。
圧縮モード (recurring = 1)
recurring パラメータが 1 の場合、fetch_deletedcomponents は、繰り返されない予定、および定期的な予定のマスターコンポーネントを返しますが、個々の定期的な予定は返しません。
繰り返しチェーンのすべてのインスタンスを削除すると、マスターコンポーネントは dtstart 、dtend、rrules、rdates、exrules、exdates、および uid パラメータを返します。
また fetch_deletedcomponents は、削除された繰り返しインスタンスに関連付けられているアクティブな状態のマスターコンポーネントを返しません。アクティブな状態のマスターコンポーネントを返すには、fetchcomponents_by_lastmod WCAP コマンドを使用します。fetch_deletedcomponents コマンドは、fetchcomponents_by_lastmod コマンドと組み合わせて使用する必要があります。
WCAP コマンドについては、『Sun Java System Calendar Server 6.3 WCAP Developer’s Guide 』を参照してください。
ここでは、削除ログデータベースを破棄する方法について説明します。Calendar Server では、削除ログデータベースを破棄する方法として、自動と手動の 2 つが用意されています。
ここでは、次の内容について説明します。
削除ログデータベースを破棄する前に、サービスを受けるエンドユーザーに十分注意する必要があります。エンドユーザーが Communications Express を使用している場合、デフォルトのパラメータ設定で十分です。しかし、予定と作業のローカルコピーを格納した、Connector for Microsoft Outlook や Sync Tool などのクライアントユーザーインタフェースを使用している場合は、自動破棄構成パラメータの設定をそれぞれの必要に応じて調整する必要があります。一般に、30 日間またはそれ以上のエントリを削除ログに格納しておく必要があります。このため、削除ログのサイズが非常に大きくなります。この調整を行わないと、データベースに問題が生じることがあります。破棄間隔も、ユーザーの必要に合わせて調整してください。たとえば、データを破棄できるようになるまで 30 日間削除ログデータベースに格納しておく場合、1 分ごとに破棄を実行しても無駄になる可能性があります。しかしどんなものでも日々古くなっていくので、毎日の破棄は妥当なことです。
同様の問題は、手動で cspurge を実行する場合にも起きる可能性があります。削除ログから削除しすぎると、Connector for Microsoft Outlook および Sync Tool のユーザーがサーバーデータベースと同期できなくなることがあります。
削除ログデータベースを破棄するまでかなりの時間が経過した場合、ファイルが非常に大きくなる原因になります。この場合、巨大な破棄が行われたときに、日常のトランザクションログが非常に大きくなります。なぜなら、各項目を破棄するというトランザクションは、トランザクションログに記録されてからアーカイブおよびホットバックアップにアーカイブされるからです。トランザクションログがこのように大きくなった場合、システムに問題があると疑われ、何が起きたかを把握するために多くの時間が費やされてしまいます。
削除ログデータベースのエントリを指定した間隔で Calendar Server に自動破棄させることができます。自動破棄はデフォルトで無効になっています。
ics.conf の次のパラメータにより自動破棄機能が制御されます。
表 18–1 削除ログデータベースの自動破棄に適用される構成パラメータ
パラメータ |
説明 |
---|---|
削除ログデータベース (ics50deletelog.db) エントリの自動破棄を有効化 (yes) または無効化 (no) します。 デフォルトは "no" です。 |
|
削除ログデータベース (ics50deletelog.db) のエントリを自動的に破棄する間隔を秒単位で指定します。 デフォルトは 60 秒です。 |
|
削除ログデータベース (ics50deletelog.db) から自動的に破棄するエントリの存続時間を秒単位で指定します。 デフォルトは 518400 秒 (6 日) です。 |
たとえば、5 分 (600 秒) おきに、2 日 (172800 秒) を経過した削除ログデータベースのエントリを Calendar Server に自動破棄させるには、「18.3.2 削除ログデータベースの自動破棄」のパラメータを次のように設定します。
service.admin.purge.deletelog="yes" caldb.berkeleydb.purge.deletelog.interval=600 caldb.berkeleydb.purge.deletelog.beforetime=172800
パラメータの設定が完了したら、新しい値が適用されるように Calendar Server を再起動します。
cspurge ユーティリティーを使用して、削除ログデータベース (ics50deletelog.db) のエントリを手動で破棄することもできます。
このユーティリティーの使用方法は次のとおりです。
cspurge -e endtime -s starttime
endtime と starttime の変数は、対象範囲の開始と終了を世界標準時形式 (GMT または UTC とも呼ばれる) で指定します。
cspurge を実行するには、Calendar Server を稼動しているユーザーとグループ (デフォルトでは icsuser と icsgroup )、またはスーパーユーザー (root) としてログインする必要があります。
たとえば、2003 年 7 月 1 日から 2003 年 7 月 31 日までのエントリを破棄するには、次のように実行します。
cspurge -e 20030731T235959Z -s 20030701T120000Z
詳細は、「D.13 cspurge」を参照してください。
次の表は、削除ログデータベース (ics50deletelog.db) をサポートする Calendar Server ユーティリティーを示しています。
表 18–2 削除ログデータベースをサポートするユーティリティー
ユーティリティー |
説明 |
---|---|
cspurge |
削除ログデータベースのエントリを手動で破棄します。 |
csbackup と csrestore |
削除ログデータベースのバックアップと復元をサポートします。 |
csstats |
削除ログデータベースの統計情報をレポートします。 |
csdb |
削除ログデータベースのチェック、復元、再構築をサポートします。 |
cscomponents |
削除ログデータベースのエントリの数をリスト表示します (読み取り専用情報)。 |
これらのユーティリティーの構文など、詳細は 付録 D 「Calendar Server のコマンド行ユーティリティーのリファレンス」を参照してください。