The issue of parallel inserts has a serialization issue with
Oracle's TM locks.
Mark Bobak
has some excellent comments on TM locking during table DDL:
As to the TM enqueue, well, any DML or DDL will take a TM
enqueue. This is to protect the object's data dictionary
definition. Conventional DML will take a TM enqueue in shared
mode.
DDL takes a TM enqueue in exclusive mode. So, a table that's
undergoing DML cannot have DDL executed. (The exclusive mode
required for DDL is not compatible with the shared mode
the DML session already holds.) However, other conventional DML
will be able to proceed, cause a shared mode enqueue is
compatible with the shared mode already held.
In this way, Oracle allows concurrent DML, while
preventing DDL on tables undergoing DML. Now, the direct-path
INSERT is a special case. A direct-path INSERT takes a TM
enqueue in exclusive mode, the same as DDL does. This prevents
all other DML from occurring.
Honestly, I don't know enough about the details of the
mechanism to clearly explain why this is required. I would
speculate it's because otherwise, it would be possible to have
direct-path INSERT modifying the HWM, and then (if it were
permitted) conventional DML could fill all the blocks on the
freelists, causing that session to want to raise the HWM.
That would be a problem, cause you'd have two different
sessions wanting to raise the HWM at the same time. So, seems to
me, you either serialize on the TM enqueue, or, you'd serialize
on ST enqueue. (ST=space management transaction enqueue).