How do you know that, it is not doing anything. Open another SQL session and count the number of rows in that table. If it is still hanging, may be you need to kill the session. You will be able to see those rows if you are committing for x number of rows.
Check to see if your archive log directory is full. (df -k .)
make sure you have enough space available to create additional files.
The view v$log_history should tell you the frequency of log switch
if you are generating too many log files it is possible that your archiver
process is unable to keep up with the load. If you check the v$log
and see all of them as active or current you should consider either
increasing the size of your redo logs or create more redo groups.