日本語PDF

1.112 DML_LOCKS

DML_LOCKSには、トランザクションで変更されされる表ごとのDMLロックの最大数を指定します。

特性 説明

パラメータ・タイプ

整数

デフォルト値

次の値が導出される: 4×TRANSACTIONS

変更可能

いいえ

PDBで変更可能

いいえ

値の範囲

20から無制限。0に設定すると、エンキューは使用禁止になる。

基本

いいえ

Oracle RAC

すべてのインスタンスに、このパラメータを設定する必要があり、すべてのインスタンスに正の値を指定するか、またはすべてに0を指定する必要がある。

DMLロックは、DML操作(挿入、更新および削除)を行う表でロックを取得します。DML_LOCKS値は、すべてのユーザーが参照するカレント表に対するロックの総計と等しい値である必要があります。たとえば、3人のユーザーが1つの表のデータを変更しようとするときは、3つのエントリが必要になります。3人のユーザーが2つの表のデータを変更しようとするときは、6つのエントリが必要になります。

デフォルト値は、各トランザクションで参照される4つの表の平均値になります。システムによっては、この値では足りない場合があります。

エンキューは、データベース・リソースへのアクセスをシリアライズ化する共有メモリーの構造です。DML_LOCKSの値を0に設定すると、エンキューが使用禁止になり、パフォーマンスがわずかに改善されます。ただし、DML_LOCKS0に設定する場合は、次の制限に注意する必要があります。

  • DROP TABLECREATE INDEX文は使用できません。

  • LOCK TABLE IN EXCLUSIVE MODEのような明示的なロック文は使用できません。

  • DML_LOCKS0が設定されているインスタンスでは、Enterprise Managerを実行できません。

パラレルDML中は、シリアル実行中より多くのロックが保持されます。そのため、データベースが多くのパラレルDMLをサポートする場合、このパラメータの値を増やす必要がある場合があります。

関連項目: