データ整合性のためのロックの使用

ロックは、複数のユーザーが同じデータに同時にアクセスしようとしても、データの整合性を確保できます。 ロックを使用して、所定の時間にデータを変更する特権が 1 ユーザーのみに付与され、コミットされていないデータにアクセスする特権がどのユーザーにも付与されないようにできます。

このタスクについて

反復可能読み取り (RR)、読み取り固定 (RS)、またはカーソル固定 (CS) を分離レベルとして使用すると、Db2 は、ロックを使用してデータへのアクセスを自動的に制御します。 しかし、分離レベルとして非コミット読み取り (UR) を使用している場合は、ユーザーはコミットされていないデータにアクセスでき、その結果不整合データが取り込まれることがあります。 監査員は、UR 分離を使用するアプリケーション、および不整合データを取り込んだりセキュリティー上のリスクをもたらす可能性のあるアプリケーションを認識する必要があります。

汎用プログラミングインターフェース情報の開始。静的SQLの場合は、カタログに問い合わせることで、UR分離を使用するプランとパッケージを特定することができます。

動的SQL文の場合、パフォーマンス・トレース・クラス3をオンにして、どのプランとパッケージがUR分離を使用しているかを判断します。汎用プログラミングインターフェース情報の終了。

システム間の整合性 :アプリケーションプログラムが Db2 と IMS の両方に、または Db2 と CICS® の両方にデータを書き込む場合、プログラムが整合性のポイントを宣言するまで、サブシステムはデータの同時使用を防止します。

静的 SQL ステートメントの場合に、どのプランが UR 分離を使用しているかを判別するには、以下の照会を使用します。
SELECT DISTINCT Y.PLNAME
   FROM SYSIBM.SYSPLAN X, SYSIBM.SYSSTMT Y
   WHERE (X.NAME = Y.PLNAME AND X.ISOLATION = 'U')
       OR Y.ISOLATION = 'U'
   ORDER BY Y.PLNAME;
静的 SQL ステートメントの場合に、どのパッケージが UR 分離を使用しているかを判別するには、以下の照会を使用します。
SELECT DISTINCT Y.COLLID, Y.NAME, Y.VERSION
   FROM SYSIBM.SYSPACKAGE X, SYSIBM.SYSPACKSTMT Y
   WHERE (X.LOCATION = Y.LOCATION AND
          X.LOCATION = ' '        AND
          X.COLLID   = Y.COLLID   AND
          X.NAME     = Y.NAME     AND
          X.VERSION  = Y.VERSION  AND
          X.ISOLATION = 'U')
       OR Y.ISOLATION = 'U'
   ORDER BY Y.COLLID, Y.NAME, Y.VERSION;