If you have 10g try with queues, if not (like me) on triggers I fill "interface" table and then I refresh data with JOBS on remote database marking those I refreshed after inserting in remote table in the same transaction. So, if remote database can't connect or something happens, I know what is not applied on remote database.