資料倉儲一些老的任務搞的慢死了--轉一篇Oracle job 管理 學習一下,也處理一下當前的
發表於: 2007.04.04 13:19
分類: Oracle
出處: http://swallow0175.itpub.net/post/21573/277240
---------------------------------------------------------------
初始化相關引數job_queue_processes
alter system set job_queue_processes=39 scope=spfile;//最大值不能超過1000 ;job_queue_interval = 10 //排程作業重新整理頻率秒為單位
DBA_JOBS describes all jobs in the database.
USER_JOBS describes all jobs owned by the current user
1 select job,what,to_char(last_date,'yyyy-mm-dd HH24:mi:ss'),to_char(next_date,'yyyy-mm-dd HH24:m),interval from dba_jobs where job in (325,295)
2 select job,what,last_date,next_date,interval from dba_jobs where job in (1,3);
查詢job的情況。
show paramter background_dump_dest.
看alter.log 和trace
SVRMGR> select * from dba_jobs;
初始化相關引數job_queue_processes
alter system set job_queue_processes=39 scope=spfile;//最大值不能超過1000
job_queue_interval = 10 //排程作業重新整理頻率秒為單位
DBA_JOBS describes all jobs in the database.
USER_JOBS describes all jobs owned by the current user
1 select job,what,to_char(last_date,'yyyy-mm-dd HH24:mi:ss'),to_char(next_date,'yyyy-mm-dd HH24:m),interval from dba_jobs where job in (325,295)
2 select job,what,last_date,next_date,interval from dba_jobs where job in (1,3);
查詢job的情況。
show paramter background_dump_dest.
看alter.log 和trace
請問我如何停止一個JOB
SQL> exec dbms_job.broken(1,true)
PL/SQL 過程已成功完成。
SQL>commit //必須提交否則無效
啟動作業
SQL> exec dbms_job.broken(1,false)
PL/SQL 過程已成功完成。
停其他使用者的job
SQL>exec sys.dbms_ijob.broken(98,true);
SQL>commit;
============================
exec dbms_job.broken(:job) 停止
exec dbms_job.broken(186,true) //標記位broken
exec dbms_job.broken(186,false)//標記為非broken
exec dbms_job.broken(186,false,next_day(sysdate,'monday')) //標記為非broken,指定執行時間
exec dbms_job.remove(:job);刪除
exec dbms_job.remove(186);
commit;
把一個broken job重新執行
三、檢視相關job資訊
1、相關檢視
dba_jobs
all_jobs
user_jobs
dba_jobs_running 包含正在執行job相關資訊
建立JOB
variable jobno number;
begin
dbms_job.submit(:jobno, 'statspack.snap;', trunc(sysdate+1/24,'HH'), 'trunc(SYSDATE+1/24,''HH'')', TRUE, :instno);
commit;
end;
print jobno
例如,我們已經建立了一個儲存過程,其名稱為my_job,在sql/plus中以scott使用者身份登入,執行如下命令:
sql> variable n number;
sql> begin
dbms_job.submit(:n‘my_job;’,sysdate,
‘sysdate+1/360’);
commit;
end;
Sql> print :n;
系統提示執行成功。
Sql> print :n;
系統列印此任務的編號,例如結果為300。
簡單例子
一個簡單例子:
建立測試表
SQL> create table TEST(a date);
表已建立。
建立一個自定義過程
SQL> create or replace procedure MYPROC as
2 begin
3 insert into TEST values(sysdate);
4 end;
5 /
過程已建立。
建立JOB
SQL> variable job1 number;
SQL>
SQL> begin
2 dbms_job.submit(:job1,'MYPROC;',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 TEST;
時間
-------------------
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 過程已成功完成。
=======================================
a、利用dbms_job.run()立即執行該job
sql>begin
sql>dbms_job.run(:jobno) 該jobno為submit過程提交時返回的job number
sql>end;
sql>/
b、利用dbms_job.broken()重新將broken標記為false
sql>begin
sql>dbms_job.broken (:job,false,next_date)
sql>end;
sql>/
========================================
SQL> create table a(a date);
Table created
建立一個過程
SQL> create or replace procedure test as
2 begin
3 insert into a values(sysdate);
4 end;
5 /
Procedure created
提交作業
SQL> declare
2 job1 number; //定義一個數字型變數
3 begin
4 dbms_job.submit(:job1,'test;',sysdate,'sysdate+1/1440'); //按分鐘算一天1440分鐘
5 end;
6 /
PL/SQL procedure successfully completed
job1
---------
4
SQL> commit;
Commit complete
執行作業
SQL> begin
2 dbms_job.run(4);
3 end;
4 /
PL/SQL procedure successfully completed
刪除作業
SQL> begin
2 dbms_job.remove(4);
3 end;
4 /
PL/SQL procedure successfully completed
SQL> commit;
Commit complete
job change//修改作業
execute dbms_job.change(186,null,null,'sysdate+3');
execute dbms_job.change(186,'scott.test(update)');
DBA_JOBS
===========================================
欄位(列) 型別 描述
JOB NUMBER 任務的唯一標示號
LOG_USER VARCHAR2(30) 提交任務的使用者
PRIV_USER VARCHAR2(30) 賦予任務許可權的使用者
SCHEMA_USER VARCHAR2(30) 對任務作語法分析的使用者模式
LAST_DATE DATE 最後一次成功執行任務的時間
LAST_SEC VARCHAR2(8) 如HH24:MM:SS格式的last_date日期的小時,分鐘和秒
THIS_DATE DATE 正在執行任務的開始時間,如果沒有執行任務則為null
THIS_SEC VARCHAR2(8) 如HH24:MM:SS格式的this_date日期的小時,分鐘和秒
NEXT_DATE DATE 下一次定時執行任務的時間
NEXT_SEC VARCHAR2(8) 如HH24:MM:SS格式的next_date日期的小時,分鐘和秒
TOTAL_TIME NUMBER 該任務執行所需要的總時間,單位為秒
BROKEN VARCHAR2(1) 標誌引數,Y標示任務中斷,以後不會執行
INTERVAL VARCHAR2(200) 用於計算下一執行時間的表示式
FAILURES NUMBER 任務執行連續沒有成功的次數
WHAT VARCHAR2(2000) 執行任務的PL/SQL塊
CURRENT_SESSION_LABEL RAW MLSLABEL 該任務的信任Oracle會話符
CLEARANCE_HI RAW MLSLABEL 該任務可信任的Oracle最大間隙
CLEARANCE_LO RAW MLSLABEL 該任務可信任的Oracle最小間隙
NLS_ENV VARCHAR2(2000) 任務執行的NLS會話設定
MISC_ENV RAW(32) 任務執行的其他一些會話引數
描述 INTERVAL引數值
每天午夜12點 'TRUNC(SYSDATE + 1)'
每天早上8點30分 'TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)'
每星期二中午12點 'NEXT_DAY(TRUNC(SYSDATE ), ''TUESDAY'' ) + 12/24'
每個月第一天的午夜12點 'TRUNC(LAST_DAY(SYSDATE ) + 1)'
每個季度最後一天的晚上11點 'TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), 'Q' ) -1/24'
每星期六和日早上6點10分 'TRUNC(LEAST(NEXT_DAY(SYSDATE, ''SATURDAY"), NEXT_DAY(SYSDATE, "SUNDAY"))) + (6×60+10)/(24×60)'
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/82392/viewspace-144731/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 任務管理之 ----program(程式)---scheduler(計劃)--Job(任務)Oracle
- 今天來學習一下MySQl的 臨時表,變數,行轉列,預處理的一些相關技術的使用!MySql變數
- [轉帖]見識一下SQL Server隱式轉換處理的不同SQLServer
- Netflix如何使用bulldozer從資料倉儲批處理資料轉移到鍵值儲存?
- DBA“老司機”怎麼看待Oracle自治資料倉儲?Oracle
- Oracle資料倉儲的實時資料採集XSOracle
- Linux任務的前後臺管理Linux
- SpringMVC入門學習---資料的處理SpringMVC
- 如何處理Oracle資料庫中的壞塊問題(轉)Oracle資料庫
- 當前NLP遷移學習中的一些問題遷移學習
- Docker命令搞一下Docker
- 免費的NLP學習資源,瞭解一下
- flink學習(加餐)——job任務狀態變化
- 總結一下最近的Go學習Go
- Java中的任務超時處理Java
- 內網穿透[搞一下]內網穿透
- 分庫分表神器 Sharding-JDBC,幾千萬的資料你不搞一下?JDBC
- 維度處理-資料倉儲-讀書筆記(四)筆記
- vue中當資料為空時的處理Vue
- Oracle 定時任務job實際應用Oracle
- Oracle診斷案例-Job任務停止執行Oracle
- Struts2 action前的資料預處理
- 分享一下Sass處理的更高階媒體查詢
- 想問一下有沒有采用 Laravel+Vue 的前後端分離的開源專案可以學習一下的啊?LaravelVue後端
- 簡單瞭解一下大資料的一些基本概念大資料
- (轉)Android ConstraintLayout的一下功能AndroidAI
- 轉載:關於oracle無法啟動儲存,記錄一下Oracle
- 批處理 求得到當前資料夾下指定字尾的檔名的各種形式
- ORACLE 資料庫管理員的職責(轉)Oracle資料庫
- 聽說你還在為海量資料構建不同資料倉儲?華為雲學院 DataLake瞭解一下!
- 分享一下 Laravel 的中時間的簡單處理方式例項Laravel
- ETL資料倉儲的使用方式
- 深度學習--資料預處理深度學習
- 奈學:資料湖和資料倉儲的區別有哪些?
- 可以看一下我學習linux的過程Linux
- 徵詢一下,大佬是如何學習 python 的Python
- 學習一下Array.reduce函式的使用函式
- 前%的處理--PostgreSQLSQL