That said, there are a couple of replication-specific areas to look at. I would walk through these, in order.
- Be sure you are not running into any locking scenarios related to the normal execution of distributed transactions against your master table. In other words, verify you aren't doing a refresh or a push at the same time you are trying to re-execute the error.
- Reorganize the master table.
- Apply the transaction manually and delete the error from the queue using the dbms_defer_sys.delete_error package. There is no rule that says your deferred transaction has to be applied through your replication architecture. In fact, unless I have many errors queued (in which I use dynamic SQL to re-execute each one) I usually correct the error, apply the data transaction myself and then do a simple execute behind it for all the queued transactions that haven't fired yet.
I hope this helps.