pd_check_pendingオペランドの指定値がUSE又は省略の場合の,整合性チェックユティリティを使用した整合性確認手順を次の図に示します。
図13-41 検査保留状態を使用する場合の整合性確認手順(検査制約)
![[図データ]](figure/zu120322.gif)
- 確認する表の整合性チェック
表単位,又は制約単位に整合性チェックをします。
インナレプリカ機能を使用している場合,確認する表の世代番号を指定します。インナレプリカ機能を使用していない場合,又は全世代に整合性チェックを実行する場合,世代番号の指定は不要です。
- 制約違反有無判定
手順1.の整合性チェック結果で,制約違反データの有無を判定します。
- 違反データの修正方法
違反データの修正をユティリティで行うか,SQLで行うかを選択します。ユティリティで行う場合,手順6.へ進んでください。
- 確認する表の操作抑止
整合性が保証できない表を使用する業務の運用を停止します。
- 確認する表の検査保留状態を強制解除
制約違反の対策をするため,検査保留状態を強制解除します。
- 制約違反の対策
- ユティリティで修正する場合
- 対策方法を次に示します。対策後,手順1.に戻り,整合性チェックを実行し,違反データがないことを確認し,終了します。
条件 | 対策方法 |
---|
検査制約の定義で指定した探索条件を修正する場合 | 手順を次に示します。
- 表のデータをすべてアンロードします。
- DROP TABLEで表の定義を削除します。
- CREATE TABLEで表を再定義します。このとき,検査制約の定義に正しい探索条件を指定します。
- 1.でアンロードしたデータをロードします。
|
表に制約違反データがある場合 | - データベース作成ユティリティ(pdload)の作成モードで正しいデータをロードします。
- データベース再編成ユティリティ(pdrorg)のUOCを使用した削除で不要なデータを削除します。
|
- SQLで修正する場合
- 対策方法を次に示します。対策後,手順7.に進みます。
条件 | 対策方法 |
---|
検査制約の定義で指定した探索条件を修正する場合 | ユティリティで修正する場合と同じです。 |
表に制約違反データがある場合 | 制約違反データをDELETE文で削除,又は,UPDATE文で正しい値に更新します※。 |
- 注※
- 対策する表を被参照表とする参照表が存在する場合,修正順序に注意が必要です。例えば,次のような関係があるとします。
![[図データ]](figure/zu120327.gif)
- ●CHK1の制約違反の対策をする場合の注意
- 表T1のデータをDELETE文で修正する場合,REF1でON DELETE RESTRICTを指定しているときは,対応する表T2のデータを先に削除後,表T1のデータを削除してください。また,UPDATE文で修正する場合,REF1でON UPDATE RESTRICTを指定しているときは,更新前のデータに対応する表T2のデータを削除後,表T1のデータを更新してください。
- 違反があった制約を強制的に検査保留状態に設定
整合性チェックユティリティを制約単位で実行し,対策をした制約を強制的に検査保留状態に設定します。
- 確認する表の操作抑止解除
運用を停止していた業務を再開します。手順1.に戻り,整合性チェックを実行し,違反データがないことを確認します。
- 確認する世代の有無
複数世代のレプリカRDエリアを作成している場合,又は世代単位の整合性チェックを実行した場合,手順1.に戻り,各世代で整合性チェックを実行します。