Veja abaixo todo o procedimento que deve ser feito para reiniciar uma sequência no Oracle sem nenhum tipo de intercorrência.
Para reinicializar uma sequência SEQ crie através do comando:
CREATE SEQUENCE SEQ;
Basta ver o seu valor atual, através do comando:
SELECT SEQ.CURRVAL FROM DUAL;
Em seguida, modificar a sequência adicionando a opção "increment by", agregando em valor VAL -(valor atual - 1) para reinicializar a sequência em 1 :
ALTER SEQUENCE SEQ INCREMENT by -VAL;
Depois, executar o comando que vai reinicializar a sequência:
SELECT SEQ.NEXTVAL FROM DUAL;
Enfim, reestabelecer o incremento da sequência da sequência:
ALTER SEQUENCE SEQ INCREMENT by 1;
Exemplo :
SQL> CREATE sequence seq;
Sequência criada.
SQL> SELECT seq.nextval from dual;
NEXTVAL
----------
1
SQL> select seq.nextval from dual;
NEXTVAL
----------
2
SQL> select seq.nextval from dual;
NEXTVAL
----------
3
SQL> select seq.currval from dual;
CURRVAL
----------
3
SQL> alter sequence seq increment by -2; // 2=SEQ.CURRVAL-1
Sequência alterada.
SQL> select seq.nextval from dual;
NEXTVAL
----------
1
SQL> alter sequence seq increment by 1;
Sequência alterada.