您的位置:首页 > 其它

通过案例学调优之--JOB管理

2015-03-31 12:06 246 查看
通过案例学调优之--JOB管理Oracle在创建和管理job主要借助两个包,分别为DBMS_JOB和DBMS_SCHEDULER[oracle@rh6 ~]$ sqlplus '/as sysdba'
      no_parse IN BOOLEAN DEFAULT FALSE,                                    --是否从新解析
      instance IN BINARY_INTEGER DEFAULT any_instance,          
      --指定哪个实例去执行(用在RAC环境下)
      force IN BOOLEAN DEFAULT FALSE                                             --是否必须由执行的实例才能执行
                                     );
案例测试:1、建立测试表117:17:45 SCOTT@ prod >CREATE TABLE DATE_LOG
17:18:03   2         (create_date DATE CONSTRAINT create_date_pk PRIMARY KEY);
Table created.
Elapsed: 00:00:01.15
17:18:06 SCOTT@ prod >desc date_log
 Name                                                              Null?    Type
 ----------------------------------------------------------------- -------- --------------------------------------------
 CREATE_DATE                                                       NOT NULL DATE2、建立一个procedure17:18:15 SCOTT@ prod >CREATE OR REPLACE PROCEDURE create_date_log_row
17:18:27   2        IS
17:18:27   3        BEGIN
17:18:27   4        INSERT INTO date_log(create_date)VALUES(sysdate);
17:18:27   5        END;
17:18:27   6        /
Procedure created.3、建立一个job17:40:02 SCOTT@ prod >begin
17:40:23   2  dbms_job.submit(:jobno,'create_date_log_row;',sysdate,'sysdate+1/1440');
17:40:31   3  commit;
17:40:35   4  end;
17:40:36   5  /
PL/SQL procedure successfully completed.4、查看测试表情况17:41:31 SCOTT@ prod >select * from DATE_LOG;
CREATE_DA
---------
25-AUG-14
25-AUG-14
25-AUG-14
25-AUG-145、查看job的工作情况17:42:28 SCOTT@ prod >col interval for a50
17:42:36 SCOTT@ prod >r
  1  select last_date,last_sec,next_date,next_sec,interval,broken from user_jobs
  2* where job=24
LAST_DATE LAST_SEC         NEXT_DATE NEXT_SEC         INTERVAL                                           B
--------- ---------------- --------- ---------------- -------------------------------------------------- -
25-AUG-14 17:41:41         25-AUG-14 17:42:41         sysdate+1/1440                                     N
 LAST_DATE  第一次执行日期
 LAST_SEC    第一次执行时间
 NEXT_DATE  下一次执行日期
 NEXT_SEC   下一次执行时间
 INTERVAL    执行频率6、中止和启动job的执行17:43:22 SCOTT@ prod >exec dbms_job.broken(24,true);
PL/SQL procedure successfully completed.

17:43:45 SCOTT@ prod >commit;   //注意要提交
Commit complete.

查看中断信息:
17:43:47 SCOTT@ prod >select broken from user_jobs where job = 24;
B
-
Y
启动job:
17:44:00 SCOTT@ prod >exec dbms_job.broken(24,false);
PL/SQL procedure successfully completed.

17:44:35 SCOTT@ prod >select broken from user_jobs where job = 24;
B
-
N7、修改job的执行时间
11:17:40 SCOTT@ prod >select job,log_user,last_date,last_sec,next_date,next_sec,interval,what from user_jobs       JOB LOG_USER   LAST_DATE LAST_SEC         NEXT_DATE NEXT_SEC         INTERVAL   WHAT
---------- ---------- --------- ---------------- --------- ---------------- ---------- ----------
        23 SCOTT      26-AUG-14 11:17:40         26-AUG-14 11:18:40         sysdate+1/ create_dat
                                                                            1440       e_log_row;
        24 SCOTT      26-AUG-14 11:10:39         26-AUG-14 11:18:39         sysdate+3/ create_dat
                                                                            (24*60)    e_log_row;[code;'>查询目前下次执行时间          
11:17:40 SCOTT@ prod >select next_date,next_sec from user_jobs;
NEXT_DATE NEXT_SEC
--------- ----------------
26-AUG-14 11:20:40
26-AUG-14 11:21:40 
                  
修改下次执行之时间              
SQL> exec dbms_job.next_date(24,sysdate+2/(24*60));
SQL>commit; 
                          
查询目前下次执行时间              
SQL> select next_date,next_sec from user_jobs;              
NEXT_DATE  NEXT_SEC              
---------- ----------------              
26-AUG-14 12:05:58 
       
第五步 修改job执行频率       
SQL> exec dbms_job.interval(24,'sysdate+3/(24*60)');
SQL>commit;  
     
查询执行频率       
SQL> select interval from user_jobs;       
INTERVAL       
--------------------------------------       
sysdate+3/(24*60)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: