データベース整合性チェックを設定する
データベースの情報に重複や欠落があると、パフォーマンスの低下、予期しないエラー、不正確な構成など、Jira で複数の問題が発生する可能性があります。
データベース整合性チェックでは、Jira のデータベースで検出された不整合を定期的に修正し、データを安定した状態にリセットすることで、データの正確性と一貫性を維持します。これは次のような場合を含むさまざまなシチュエーションで役に立ちます。
プロジェクトを新しいワークフローに移行する前
外部プログラムが Jira のデータベースを変更している場合
サーバー クラッシュをトラブルシューティングする場合
データベース整合性チェックを設定して調整するには、Jira 管理者権限を持つユーザーとしてログインする必要があります。Jira のグローバル権限の概要については、こちらをご確認ください。
データベース整合性チェックを調整する
Instance Optimizer for Jira アプリを最新バージョンに更新すると、インスタンスの定期的なデータベース整合性チェックが自動的に有効になります。つまり、このアプリは事前に構成された設定に基づいて、データの不整合を定期的に検出して修正します。
既定では、このチェックは毎週日曜日の午前 3 時 (Jira のシステム時刻) に実行されます。Jira のシステム情報の詳細をご確認ください
最初は一部のチェックのみが有効になっていますが、インスタンス最適化ツールの設定でチェックのスケジュールやリストを調整することも、この機能を完全に無効にすることもできます。
Jira アプリの右上で [Jira 管理] > [システム] の順に選択します。
サイドバーで、[インスタンス最適化ツール] に移動して [データベース整合性チェック] を選択します。このページには、Jira の保存データの一般的な不整合を探して対処する複数の整合性チェックが表示されます。既存のチェックの概要
[スケジュール] セクションで、チェックを自動的に実行する時間を設定します。cron 構文のガイドラインについては、「cron 式の作成」を参照してください。
チェックを実行するアクターを指定します。既定では、有効なシステム管理者がアクターとして選択されます。
実行するチェックの横にあるチェックボックスを選択します。すべてのチェックを実行するには、[すべてのチェック] を選択します。
[保存] をクリックすると、指定したスケジュールに従って定期的にチェックが実行されます。[手動で実行] ボタンを選択して、すぐにチェックを実行することもできます。
有効なチェックのリストを変更した場合は、変更を保存してから先に進んでください。そうしないと、以前に保存したチェックのみが実行されます。
チェックを開始すると、すべての有効なチェックがバックグラウンドで実行され、適切な修正が自動的に行われます。[ログを表示] ボタンをクリックすると、実行されたアクションを高度な監査ログで確認できます。
チェックを手動で開始したか自動で開始したかに関係なく、選択したデータベース整合性チェックごとに、修正または削除された内容の詳細を含む監査ログ エントリが生成されます。Jira の監査ログ イベントの概要
実行中に、その他のダウンストリームの Jira 監査イベントが生成されることがあります。これは意図された動作です。
整合性チェックの概要
このセクションでは、利用可能なすべてのデータベース整合性チェックを示し、その実行内容について詳しく説明します。
課題の関係を確認する
| 名前の確認 | 長時間かかるか | チェック対象 | 検出された問題の修正方法 |
|---|---|---|---|
関連付けられたプロジェクトがない課題のチェック | はい | 課題のプロジェクト ID が既存のプロジェクトを指しているかどうかを確認します。 | 対応するプロジェクトがない場合は、課題を削除します。以下も削除します。
このチェックは、課題とそれに関連するすべてのデータを完全に削除します。課題のインデックスが解除され、削除イベントが送信されます。 このアクションでは、ディスクや Amazon S3 に保存されている添付ファイルは削除されません。 |
ワークフロー ステップのない課題のチェック | はい | 課題のワークフロー ID が既存のワークフロー エントリを指しているかどうかを確認します。 |
|
壊れた課題リンクのチェック | いいえ | 課題リンクの発信元または宛先の課題 ID が既存の課題を指しているかどうかを確認します。 | 破損した課題リンクをデータベースから削除します。 |
課題リンク タイプが無効な課題リンクのチェック | いいえ |
| 破損した課題リンクをデータベースから削除します。 |
検索リクエストのチェック
| 名前の確認 | 長時間かかるか | チェック対象 | 検出された問題の修正方法 |
|---|---|---|---|
検索リクエスト内の無効なプロジェクト参照のチェック | はい | 空でないプロジェクト フィールドを含む検索リクエスト (検索フィルター) が既存のプロジェクトを指しているかどうかを確認します。 |
|
課題の権限のチェック
| 名前の確認 | 長時間かかるか | チェック対象 | 検出された問題の修正方法 |
|---|---|---|---|
重複する権限スキームのチェック | はい |
|
|
ワークフローのチェック
| 名前の確認 | 長時間かかるか | チェック対象 | 検出された問題の修正方法 |
|---|---|---|---|
無効なワークフロー ステータスのチェック | いいえ | ステータスが | 検出されたすべての課題の、対応するワークフロー エントリの状態を |
各課題の現在のワークフロー ステップのチェック | いいえ | ワークフローにおける課題の現在のステータスが正しいかどうかを確認します。 このチェックは、インスタンスにあるすべての課題で繰り返されます。課題の数によっては、長時間かかる場合があります。 | ユースケースに応じて、修正できる場合とできない場合があります。 ユースケース 1: 課題のステータスが 結果: このチェックは修正できません。代わりに「ステータスが null の課題のチェック」を使用してください。 ユースケース 2: 課題のワークフロー ステータス ID が null です。 結果: このチェックは修正できません。代わりに「ワークフロー ステップのない課題のチェック」を使用してください。 ユースケース 3: 課題のステータスは設定されていますが、ワークフローにはこのステータスにリンクされたステップ記述子がありません。 結果: このチェックは修正できません。 ユースケース 4: 特定のワークフロー エントリ ID を持つ課題について、現在のステップ テーブルにレコードが見つかりません。 結果: 特定のステータスとワークフロー エントリ ID を持つ特定の課題 ID に対して、欠落している現在のステップを作成します。 ユースケース 5: 特定のワークフロー エントリ ID を持つ課題の現在のステップ テーブルに 1 個のレコードが見つかりましたが、ステップ ID が null であるか、課題のステータスからマップされたものと異なります。 結果: 見つかった現在のステップ レコードが無効な場合は、その値をデータベースに設定します。そうでなければ、スキップします。 ユースケース 6: 特定のワークフロー エントリ ID を持つ課題について、現在のステップ テーブルに 1 個以上のレコードが見つかりました。 結果: 冗長なステップを削除して、1 つだけ保持します。 |
ステータスが null の課題のチェック | いいえ | 課題のステータスが |
|
フィールド レイアウト スキームのチェック
| 名前の確認 | 長時間かかるか | チェック対象 | 検出された問題の修正方法 |
|---|---|---|---|
カスタム フィールドのないフィールド レイアウトのチェック | いいえ | すべてのフィールド レイアウト項目が既存のカスタム フィールドを指しているかどうかを確認します。 フィールド レイアウト アイテムでは、特定のフィールド レイアウトに特定のカスタム フィールドが必要かどうかを指定できます。フィールド動作の指定に関する詳細をご確認ください | フィールド レイアウト アイテム テーブルから不正なレコードを削除します。 |
フィルター サブスクリプションのチェック
| 名前の確認 | 長時間かかるか | チェック対象 | 検出された問題の修正方法 |
|---|---|---|---|
検索フィルターのないフィルター サブスクリプションのチェック | いいえ | フィルター サブスクリプションが存在しない検索フィルター (検索リクエスト) にリンクされているかどうかを確認します。 |
|
存在しないジョブがスケジュールされているフィルター サブスクリプションのチェック | いいえ | フィルター サブスクリプションが、クラスター ジョブ テーブルに存在しない定期クラスター ジョブにリンクされているかどうかを確認します。 | フィルター サブスクリプション テーブルから不正なレコードを削除します。 |
無効なユーザーのフィルター サブスクリプションのチェック | いいえ | このチェックは、バージョン 5.2.1 と 6.1.3 (およびその後の 5.x と 6.x) 以降で利用できます。 有効な権限を失ったユーザーに属するフィルター サブスクリプションを確認します。
このチェックは、権限の一時的な付与や設定ミスによるサブスクリプションの誤削除を防ぐため、既定でオフになっています。 | 有効な権限を失ったユーザーのフィルター サブスクリプションを削除します。 |
データベース整合性チェック用のプロパティ キー
データベース整合性チェックでは、REST API を使用して調整できる次のアプリ プロパティ キーを使用します。application-properties モジュールの詳細をご確認ください
プロパティ キー | 説明 | 既定値 |
|---|---|---|
| チェックが長時間かかる操作としてマークされた場合に処理する修正の最大数。 | 1000 |
| チェックのバッチ サイズ: 各課題の現在のワークフロー ステップ。 | 1000 |
| チェックのバッチ サイズ: 検索フィルターのないフィルター サブスクリプション。 | 1000 |
