作业号问题

[复制链接]
查看11 | 回复9 | 2005-10-30 17:05:33 | 显示全部楼层 |阅读模式
ORACLE的作业号是自动产生的序列号,用户好像无法控制,但是当作业号达到定义的最大值以后(好像9I的最大值是1000),如何使系统的作业号降下来呢?比如,从1开始。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
最大值不是1000
sql>select sequence_name,sequence_owner,min_value,max_value from dba_sequences where sequence_name like '%JOB%';
SEQUENCE_NAME
SEQUENCE_OWNER
MIN_VALUEMAX_VALUE
------------------------------ ------------------------------ ---------- ----------
JOBSEQ
SYS
1999999999
WK$JOB_ID_SEQ
WKSYS
1 1.0000E+27
sql>select sys.jobseq.nextval from dual;
NEXTVAL
----------
4
sql>var l_job number
sql>begin
2dbms_job.submit(:l_jobno,'begin null; end;');
3dbms_output.put_line(:l_jobno);
4end;
5/
5
PL/SQL procedure successfully completed.
sql>set serveroutput on
sql>/
6
PL/SQL procedure successfully completed.
sql>select jobseq.currval from dual;
CURRVAL
----------
6
sql>begin
2 dbms_job.submit(:l_jobno,'begin null; end;');
3 dbms_output.put_line(:l_jobno);
4 end;
5/
7
PL/SQL procedure successfully completed.
sql>select jobseq.currval from dual;
CURRVAL
----------
7
sql>show user
USER is "SYS"
sql>
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
哦,原来是这样,谢谢!
但是,
是否能控制作业号呢?
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
当然可以,在SYS帐号下更改JOBSEQ这个Sequence就行了,比如:
alter sequence JOBSEQ maxvalue 2000;
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
谢谢!
我的意思是:当前作业号的值能减少吗?
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
不行
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
那么如何才能减少呢?(不会重装数据库吧?)(这个问题好像有点无聊,就是想知道)
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
我也想知道这个问题,又没有办法让job初始化,从1开始
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
其实有一个方法,就是不知道oracle有没有support。
比如s_tst的current是2000,而你想设]1000
1 alter sequence s_tst
INCREMENT BY 1
MAXVALUE 2000
MINVALUE 1000
CYCLE;
2 select s_tst.next from dual;
3 alter sequence s_tst把所有设定改回到原来的
当年在8i上试过
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
这个是针对一般的SEQUENCE吧,如果是JOBSEQ呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行