I think committing every row is a bit overkill. It would be faster to delete every 1000 or so.

You could do it like this :

declare
procedure del_1000 is
begin
delete from mytable where rownum < 1000;
commit;
end;
Begin

del_1000;
while SQL%rowcount > 0 loop
del_1000;
end loop;

end;