Yes, open the cursor "with hold", and do a commit every 100 to 1000 updates. Normally a cursor is closed upon commit, but if you use "with hold" option it will stay open.
Also, open the cursor with UR isolation level, and do the update separately (not update where current of cursor). This assumes the table has a primary key.