If you have a lock contention issue going on, then another user may have a lock on data that your insert is trying to acquire. Using V$LOCK in conjuntion with v$session may tell you what user is hanging you up. If you determine this is the problem, it may be better to kill that user's session rather than your own. Some other ideas. Do the insert at night when transaction volume is low. Or your business situation may allow you to open the database restricted and do the insert.
Also, explicity assign the transaction to a large rollback segment and make sure this RB segment can grow to accomodate the entire transaction. Or write a procedure to commit at intervals.