データ整合性のためのロックの使用
ロックは、複数のユーザーが同じデータに同時にアクセスしようとしても、データの整合性を確保できます。 ロックを使用して、所定の時間にデータを変更する特権が 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;