Enq: TX - Row Lock Contention Wait Event On RDF_LINK$ (Doc ID 1544258.1)

Last updated on FEBRUARY 08, 2017

Applies to:

Oracle Spatial - Version 11.2.0.2 and later
Information in this document applies to any platform.

Symptoms

Doing multithreaded ingestion, getting the following errors on 4 out of 8 threads:

Caused by: java.sql.BatchUpdateException: ORA-55303: SDO_RDF_TRIPLE_S constructor failed: BNode-non-reuse case: SQLERRM=ORA-06519: active autonomous transaction detected and rolled back

ORA-06512: at "MDSYS.MD", line 1723
ORA-06512: at "MDSYS.MDERR", line 17
ORA-06512: at "MDSYS.SDO_RDF_TRIPLE_S", line 64

We suggested:

Catch the error and try the insert again.

Customer implemented that and he observes contention on table RDF_LINK$

They commented that they removed dbms_lock usage and catch of error if insert goes wrong.

They see contention:

  enq: TX - row lock contention wait event.

Checking the objects on which this event is happening:

UPDATE /*+ INDEX (a RDF_LNK_PVIDCENSNMID_IDX) */ mdsys.rdf_link$
SET cost = cost + 1
WHERE p_value_id = :pv_id
AND start_node_id = :sv_id
AND canon_end_node_id = :cov_id
AND model_id = :m_id

More precisely on partition MODEL_8 on table RDF_LINK$

Partition MODEL_8 is huge and contains 70% (290 Millions) of all rows of RDF_LINK$ (more than 420 Millions rows).

Is there something that we can do on this table ?
Because it seems that every thread involved in ingestion is trying to update the same value on rdf_link$.

Insert a row is taking nearly 6s to complete while monitoring a session.
And they have several rows to insert.
Time decrease to 2s after gathering statistics with sem_perf but it will return to 6s after some time.

Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms