通过案例学调优之--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)
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)
相关文章推荐
- Spark商业案例与性能调优实战100课》第11课:商业案例之通过纯粹通过DataFrame分析大数据电影点评系仿QQ和微信、淘宝等用户群分析与实战
- 通过案例学调优之--AWR基本概念
- 通过案例学调优之--跨库建立物化视图(Materialized View)
- 通过案例学调优之--分区表基本概念
- 通过案例学调优之--AWR BaseLine管理
- 【Oracle】转:通过案例学调优之--Oracle Time Model(时间模型)
- 通过案例学调优之--10046事件
- 通过案例学调优之--AWR Snapshot管理
- 通过案例学调优之--模拟buffer busy waits事件
- 《Spark商业案例与性能调优实战100课》第6课:商业案例之通过Spark SQL实现大数据电影用户行为分析
- 通过案例学调优之--Oracle Time Model(时间模型)
- 通过案例学调优之--和 LOG BUFFER 相关的主要 Latch
- 通过案例学调优之--Oracle中null使用索引
- 通过案例学调优之--Oracle数据块(block)
- 通过案例学调优之--AWR BaseLine管理
- 通过案例学调优之--10046事件
- 通过案例学调优之--Oracle Time Model(时间模型)
- 通过案例学调优之--Oracle 全文索引
- 通过案例学调优之--模拟buffer busy waits事件
- 通过案例学调优之--AWR baseline对比生成AWR报告