Apart from deadlocks, would you say the same thing if we are getting the ORA-26787 error that the row does not exist (BTW, I am aware of error/conflict handlers for these ORA errors as mentioned in the documentation...but they are not working for me right now)?
It's as if a LCR got skipped/missed and then the following LCR could not apply the changes because it needed the changes in the previous LCR to successfully complete. So now we have a gap and thousands of errors (dependencies). And until that is resolved, the apply process cannot apply the LCRs. I have even tried to explicitly insert the missing record from the source 'insert into table_name select * from table_name@sourcedblink where...' and it says it has inserted and commited, but there is no row there. Strange.
Any feedback in understanding this would be awesome!
I ended up using the 'EXEC DBMS_STREAM.SET_TAG(tag => HEXTORAW('17'));' solution and then ran EXECUTE_ALL_ERRORS for the apply process. This did not really make sense to me as the changes were already captured and propagated over to the dest db. Anyways it cleared up the errors.
However, I did find something strange. In the documentation, it mentions to use the DBMS_STREAM.SET_TAG... to prevent changes from being captured. So I did a test after running that procedure. I create a test table in my schema and when I checked the dest db, IT WAS THERE! Why did that happen? It was executed in the same session too. Just curious.