sequence 重置问题

kong_d_f 2007-12-24 03:53:13
小弟的oracle库中有约200个表,建库文件由于没有及时更新,版本已经很旧了,将测试库的数据全部清空后,sequence 也要重置,如何做?
从网上找到几个重置sequence 的方法,都是一个一个重置的,有没有批量重置的方法?将所有的sequence一下全部重置,谢谢了
...全文
457 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
david_xu322 2007-12-27
  • 打赏
  • 举报
回复


基本思路是重建序列,删除后重建,象楼上的修改序列初始值的方法也可以。
vc555 2007-12-24
  • 打赏
  • 举报
回复
删除重建,或写一个过程都行。
网上现成的过程,你用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
---------
2

SQL> /

NEXTVAL
---------
3

SQL> /

NEXTVAL
---------
4

SQL> /

NEXTVAL
---------
5

SQL> exec seq_reset(''''seq_1'''');

PL/SQL 过程已成功完成。

SQL> select seq_1.currval from dual;

CURRVAL
---------
1

SQL>
dawugui 2007-12-24
  • 打赏
  • 举报
回复
sequence,
这个没必要重置吧,他每次自动加1.数据足够大,应该没问题的.

如果非要重置,变通的方法是:
备份库,删除用户,重建用户,重新导入备份文件.注意:表空间不动.

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧