The parameters that affect parallel DML and parallel DDL resource consumption are:
Parallel insert, update, and delete operations require more resources than serial DML operations. Similarly, PARALLEL
CREATE
TABLE
AS
SELECT
and PARALLEL
CREATE
INDEX
can require more resources. For this reason, you may need to increase the value of several additional initialization parameters. These parameters do not affect resources for queries.
Oracle Database Reference for information about initialization parameters
For parallel DML and DDL, each query server process starts a transaction. The parallel execution coordinator uses the two-phase commit protocol to commit transactions; therefore, the number of transactions being processed increases by the DOP. Consequently, you might need to increase the value of the TRANSACTIONS
initialization parameter.
The TRANSACTIONS
parameter specifies the maximum number of concurrent transactions. The default assumes no parallelism. For example, if you have a DOP of 20, you have 20 more new server transactions (or 40, if you have two server sets) and 1 coordinator transaction. In this case, you should increase TRANSACTIONS
by 21 (or 41) if the transactions are running in the same instance. If you do not set this parameter, Oracle Database sets it to a value equal to 1.1 x SESSIONS
. This discussion does not apply if you are using server-managed undo.
If a system fails when there are uncommitted parallel DML or DDL transactions, you can speed up transaction recovery during startup by using the FAST_START_PARALLEL_ROLLBACK
parameter.
This parameter controls the DOP used when recovering terminated transactions. Terminated transactions are transactions that are active before a system failure. By default, the DOP is chosen to be at most two times the value of the CPU_COUNT
parameter.
If the default DOP is insufficient, set the parameter to HIGH
. This gives a maximum DOP of at most four times the value of the CPU_COUNT
parameter. This feature is available by default.
This parameter specifies the maximum number of DML locks. Its value should equal the total number of locks on all tables referenced by all users. A parallel DML operation's lock requirement is very different from serial DML. Parallel DML holds many more locks, so you should increase the value of the DML_LOCKS
parameter by equal amounts.
Parallel DML operations are not performed when the table lock of the target table is disabled.
Table 8-4 shows the types of locks acquired by coordinator and parallel execution server processes for different types of parallel DML statements. Using this information, you can determine the value required for these parameters.
Table 8-4 Locks Acquired by Parallel DML Statements
Type of Statement | Coordinator Process Acquires: | Each Parallel Execution Server Acquires: |
---|---|---|
Parallel |
1 table lock SX 1 partition lock X for each pruned partition or subpartition |
1 table lock SX 1 partition lock 1 partition-wait lock S for each pruned partition or subpartition owned by the query server process |
Parallel row-migrating |
1 table lock SX 1 partition X lock for each pruned partition or subpartition 1 partition lock SX for all other partitions or subpartitions |
1 table lock SX 1 partition lock 1 partition-wait lock S for each pruned partition owned by the query server process 1 partition lock SX for all other partitions or subpartitions |
Parallel |
1 table lock SX Partition locks X for all partitions or subpartitions |
1 table lock SX 1 partition lock 1 partition-wait lock S for each partition or subpartition |
Parallel |
1 table lock SX 1 partition lock X for each specified partition or subpartition |
1 table lock SX 1 partition lock 1 partition-wait lock S for each specified partition or subpartition |
Parallel |
1 table lock X |
None |
Consider a table with 600 partitions running with a DOP of 100. Assume all partitions are involved in a parallel UPDATE
or DELETE
statement with no row-migrations.
The coordinator acquires:
1 table lock SX
600 partition locks X
Total server processes acquire:
100 table locks SX
600 partition locks NULL
600 partition-wait locks S