小弟的oracle库中有约200个表,建库文件由于没有及时更新,版本已经很旧了,将测试库的数据全部清空后,sequence 也要重置,如何做?
从网上找到几个重置sequence 的方法,都是一个一个重置的,有没有批量重置的方法?将所有的sequence一下全部重置,谢谢了
从网上找到几个重置sequence 的方法,都是一个一个重置的,有没有批量重置的方法?将所有的sequence一下全部重置,谢谢了
调试欢乐多
这个没必要重置吧,他每次自动加1.数据足够大,应该没问题的.如果非要重置,变通的方法是:
备份库,删除用户,重建用户,重新导入备份文件.注意:表空间不动.
网上现成的过程,你用select sequence_name from user_sequences把序列名查出来,再改下过程就解决了:
SQL> create sequence seq_1 increment by 1 start with 1 maxvalue 999999999;序列已创建。
SQL> create or replace procedure seq_reset(v_seqname varchar2) as
2 n number(10);
3 tsql varchar2(100);
4 begin
5 execute immediate ''''select ''''||v_seqname||''''.nextval from dual'''' into n;
6 n:=-(n-1);
7 tsql:=''''alter sequence ''''||v_seqname||'''' increment by ''''|| n;
8 execute immediate tsql;
9 execute immediate ''''select ''''||v_seqname||''''.nextval from dual'''' into n;
10 tsql:=''''alter sequence ''''||v_seqname||'''' increment by 1'''';
11 execute immediate tsql;
12 end seq_reset;
13 /过程已创建。SQL> select seq_1.nextval from dual; NEXTVAL
---------
2SQL> / NEXTVAL
---------
3SQL> / NEXTVAL
---------
4SQL> / NEXTVAL
---------
5SQL> exec seq_reset(''''seq_1'''');PL/SQL 过程已成功完成。SQL> select seq_1.currval from dual; CURRVAL
---------
1SQL>