Jun 172013
 
select a_sequence.nextval,
       may_not_come_out_in_order
from   rac_databases;

   NEXTVAL MAY_NOT_COME_OUT_IN_ORDER
---------- -------------------------
         1                         Y 

conn chris@rac_node2

select a_sequence.nextval,
       may_not_come_out_in_order
from   rac_databases;

   NEXTVAL MAY_NOT_COME_OUT_IN_ORDER
---------- -------------------------
        21                         Y 

conn chris@rac_node1

select a_sequence.nextval,
       may_not_come_out_in_order
from   rac_databases;

   NEXTVAL MAY_NOT_COME_OUT_IN_ORDER
---------- -------------------------
         2                         Y 

From time-to-time code is written to process items greater than or equal to the last value in a 
table based on a sequence (usually the primary key). Because sequence values are cached on each 
instance rather than cluster-wide, be prepared for this to break if you move to a RAC environment!
Apr 292013
 
create sequence ora 
start  with -1002 minvalue -1002;

begin
  for commits in (
    select loops 
    from   queries
    where  we = 'specify'
    for    update
  ) loop
    dbms_output.put_line(
      'Causes an ' || sqlerrm(ora.nextval));
    commit;
  end loop;
end;
/

Error report:
ORA-01002: fetch out of sequence
Issuing a commit after opening a cursor with the "for update" releases the row locks
and invalidates the cursor, meaning you can no longer fetch data out of it!

Click here for a complete script to see this in action.