Last updated on FEBRUARY 08, 2017
Applies to:Oracle Spatial - Version 22.214.171.124 and later
Information in this document applies to any platform.
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
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.
Sign In with your My Oracle Support account
Don't have a My Oracle Support account? Click to get started
Million Knowledge Articles and hundreds of Community platforms