How do I debug an ETL process that is unable to commit any records?
Since you're using a standard Oracle-to-Oracle database link, Oracle automatically does two-phase commits.  If you commit (or rollback) on one system, any changes made as part of the same transaction on the other system will committed (or rolled back) as well.  

If there is an open transaction on the remote system that has row-level locks, that strongly implies that the local session is still there as well.  So you probably just have to do a commit (or a rollback) in the local session to remove the locks.

If the ETL process is really stuck waiting on locks that are held by the other session, you should be able to query gv$session on the remote database and see that the session that the ETL application is running is waiting on row-level lock contention.  Specifically, you would expect to see an event of enq: TX - row lock contention in gv$session.  You would also expect that if you queried dba_blockers that you would see the session ID of the session that connected from the local database over the database link and that if you queried dba_waiters that you would see that the ETL process's session was blocked by that session.