oracle定时执行操作

1. 首先需要将安装路径 oracle\admin\ORACLE\pfile 下的init.ora文件中添加下面两项:

###########################################
# 进程和会话
###########################################
processes=150
job_queue_interval = 30    <------
job_queue_processes = 3    <------

SNP启动参数的描述部分如下:
job_queue_process=n
job_queue_interval=N
第一行定义SNP进程的启动个数为n。系统缺省值为0,正常定义范围为0~36,根据任务的多少,可以配置不同的数值。
第二行定义系统每隔N秒唤醒该进程一次。系统缺省值为60秒,正常范围为1~3600秒。事实上,该进程执行完当前任务后,就进入睡眠状态,睡眠一段时间后,由系统的总控负责将其唤醒。

2. 重启数据库
   重启完毕如果无法登陆,请恢复原来状态(撤销上面修改,重启数据库)
   然后以管理员身份执行
   alter system set job_queue_processes=1;
   然后重复以上步骤;

3. 以管理员身份登陆
   确保Oracle的工作模式允许启动任务队列管理器
   alter system disable restricted session;
   利用如上命令更改系统的会话方式为disable restricted,为SNP的启动创造条件。

4. 授权给执行定时执行的用户
   grant execute on dbms_job to scott;

5. 以执行用户登录,建立定时执行任务;

    一个简单例子:
  
  创建测试表
  SQL> create table a(a date);
  
  表已创建。
  
  创建一个自定义过程
  SQL> create or replace procedure test as
  2 begin
  3 insert into a values(sysdate);
  4 end;
  5 /
  
  过程已创建。
  
  创建JOB
  SQL> variable job1 number;
  SQL>
  SQL> begin
  2 dbms_job.submit(:job1,'test;',sysdate,'sysdate+1/1440');  --每天1440分钟,即一分钟运行test过程一次
  3 end;
  4 /
  
  PL/SQL 过程已成功完成。
  
  运行JOB
  SQL> begin
  2 dbms_job.run(:job1);
  3 end;
  4 /
  
  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
  
  删除JOB
  SQL> begin
  2 dbms_job.remove(:job1);
  3 end;
  4 /
  
  PL/SQL 过程已成功完成。

 

posted @ 2006-10-09 20:58  zzjj  阅读(1022)  评论(0)    收藏  举报