oracle操作注意事项,Oracle job操作注意事项

创建一个简单的JOB实列

1、创建测试表

SQL> create table a(a date,b varchar2(10));

表已创建。

2、创建一个自定义过程

SQL> create or replace procedure test1 as

begin

insert into a values(sysdate,'start');

begin

dbms_stats.gather_schema_stats(ownname=> 'ABM' , cascade=> TRUE);

end;

insert into a values(sysdate,'end');

end;

/

过程已创建。

3、创建JOB

SQL> variable job1 number;

SQL>

SQL> begin

dbms_job.submit(:job1,'test1;',sysdate,'trunc(SYSDATE)+3.5/24+7');  --每天1440分钟,即一分钟运行test过程一次

end;

/

PL/SQL 过程已成功完成。

4、运行JOB

SQL> begin

dbms_job.run(:job1);

end;

/

PL/SQL 过程已成功完成。

SQL> select to_char(a,'yyyy/mm/dd hh24:mi:ss') 时间 from a;

时间

-------------------

2001/01/07 23:51:21

2001/01/07 23:52:22

2001/01/07 23:53:24

5、删除JOB

SQL> begin

? 2? dbms_job.remove(:job1);

? 3? end;

? 4? /

PL/SQL 过程已成功完成。

6、一些必要的参数

修改initsid.ora参数

job_queue_processes = 4

job_queue_interval = 10

job_queue_keep_connections=true

修改可执行作业个数为20个

ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 20

修改取消限制模式

ALTER SYSTEM DISABLE RESTRICTED SESSION;

7、两个必要的表

user_jobs及dba_jobs_running

8、相关的几个JOB操作

删除job:dbms_job.remove(jobno);

修改要执行的操作:job:dbms_job.what(jobno,what);

修改下次执行时间:dbms_job.next_date(job,next_date);

修改间隔时间:dbms_job.interval(job,interval);

停止job:dbms_job.broken(:job1,broken,nextdate);

启动job:dbms_job.run(jobno);

9、几个常用的语句

select to_char(a,'yymmddhh24:mi:ss'),b from a;

select job,last_date,last_sec,next_date,next_sec,what from dba_jobs ;

dbms_job.submit(:job1,'test;',trunc(SYSDATE)+13.6/24,'SYSDATE+5/1440');

select to_char(sysdate,'yymmddhh24:mi:ss') from dual;

10、需要注意的问题:

1)job的下一次执行时间的确定:一个job必须run一次之后,才能按照设定的间隔确定下次运行的时间。

2)如果job运行时间小于两次的间隔,则下次运行时间等于job开始运行时间+间隔时间;如果job运行时间大于等于两次的间隔,则下次运行时间等于上次job运行结束的时间。

3)what后面跟的存储过程要有分号,next_date的参数是日期型,interval是个日期格式的字符串+几代表每隔多长时间执行一次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值