1.102 DML_LOCKS
DML_LOCKSには、トランザクションで変更されされる表ごとのDMLロックの最大数を指定します。
| 特性 | 説明 |
|---|---|
|
パラメータ・タイプ |
整数 |
|
デフォルト値 |
次の値が導出される: 4× |
|
変更可能 |
いいえ |
|
PDBで変更可能 |
いいえ |
|
値の範囲 |
20から無制限。0に設定すると、エンキューは使用禁止になる。 |
|
基本 |
いいえ |
|
Oracle RAC |
すべてのインスタンスに、このパラメータを設定する必要があり、すべてのインスタンスに正の値を指定するか、またはすべてに0を指定する必要がある。 |
DMLロックは、DML操作(挿入、更新および削除)を行う表でロックを取得します。DML_LOCKS値は、すべてのユーザーが参照するカレント表に対するロックの総計と等しい値である必要があります。たとえば、3人のユーザーが1つの表のデータを変更しようとするときは、3つのエントリが必要になります。3人のユーザーが2つの表のデータを変更しようとするときは、6つのエントリが必要になります。
デフォルト値は、各トランザクションで参照される4つの表の平均値になります。システムによっては、この値では足りない場合があります。
エンキューは、データベース・リソースへのアクセスをシリアライズ化する共有メモリーの構造です。DML_LOCKSの値を0に設定すると、エンキューが使用禁止になり、パフォーマンスがわずかに改善されます。ただし、DML_LOCKSを0に設定する場合は、次の制限に注意する必要があります。
-
DROP TABLE、CREATE INDEX文は使用できません。 -
LOCK TABLE IN EXCLUSIVE MODEのような明示的なロック文は使用できません。 -
DML_LOCKSに0が設定されているインスタンスでは、Enterprise Managerを実行できません。
パラレルDML中は、シリアル実行中より多くのロックが保持されます。そのため、データベースが多くのパラレルDMLをサポートする場合、このパラメータの値を増やす必要がある場合があります。
関連項目:
-
ロックおよびパラレルDMLに必要なエンキュー・リソースの詳細は、『Oracle Database概要』を参照してください。
-
データの同時実行性の詳細は、『Oracle Database概要』を参照してください。