主頁 > 資料庫 > Oracle 定時任務job實際應用

Oracle 定時任務job實際應用

2023-05-12 10:18:42 資料庫

目錄
  • 一、Oracle定時任務簡介
  • 二、dbms_job涉及到的知識點
  • 三、初始化相關引數job_queue_processes
  • 四、實際創建一個定時任務(一分鐘執行一次),實作定時一分鐘往表中插入資料
    • 4.1 創建需要定時插入資料的目標表
    • 4.2 創建定時執行的存盤程序
    • 4.3 創建定時一分鐘定時任務job
    • 4.5 可以根據以下陳述句查詢剛創建好的job
    • 4.6 如果我們不需要這個定時任務了,那要怎么停止呢?
    • 4.7 啟用剛才停用的定時任務
  • 五、定時任務中job運行時間

一、Oracle定時任務簡介

Oracle定時任務是在oracle系統中一個非常重要的子系統,運用得當,可以大大提高我們系統運行和維護能力,oracle定時任務的功能,可以在指定的時間點自行執行任務,

那么在實際作業中,什么樣的場景會用到定時任務呢?下面是在實際作業中用到的真實業務場景舉例

  • 在生成環境中,有時候需要在表中記錄一些業務日志,系統運行時間長了之后,表中日志會越來越多,導致系統性能下降,這時候就需要用到定時任務,定時去洗掉表中一些時間年代比較久遠垃圾資料,
  • 在某些業務場景中,明細表的資料量特別大,而需要查詢明細表一下匯總資料,就需要將明細表中的資料【某天的業務產生的金額、人數等】通過計算匯總到另外表中,這樣在查詢的時候就能優化查詢效率,而以上操作需要在業務量比較少的情況下進行【一般都在凌晨之后】,這是就需要用到定時任務,

二、dbms_job涉及到的知識點

  • 創建job腳本
variable jobno number;
dbms_job.submit(:jobno,       —-job號 
'your_procedure;',            —-執行的存盤程序, ';'不能省略 
next_date,                    —-下次執行時間 
'interval'                    —-每次間隔時間,
interval                      以天為單位);

上面是通過腳本創建,當然也可以通過plsql圖形化工具來創建,具體創建程序如下

**系統會自動分配一個任務號jobno ** ,根據jobno 可以進行如下定時任務操作

  • 洗掉job: dbms_job.remove(jobno);

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

  • 修改下次執行時間:dbms_job.next_date(jobno, next_date);

  • 修改間隔時間:dbms_job.interval(jobno, interval);

  • 啟動job: dbms_job.run(jobno);

  • 停止job: dbms.broken(jobno, broken, nextdate); –broken為boolean值

三、初始化相關引數job_queue_processes

  • job_queue_process表示oracle能夠并發的job的數量,當job_queue_process值為0時表示全部停止oracle的job
  • 查看job_queue_processes引數
show parameter job_queue_process;
或者
select * from v$parameter where name='job_queue_processes';
  • 修改job_queue_processes引數
alter system set job_queue_processes = 10;

四、實際創建一個定時任務(一分鐘執行一次),實作定時一分鐘往表中插入資料

4.1 創建需要定時插入資料的目標表

create table t_test (id varchar2(30),
                  name varchar2(30)
                 );

4.2 創建定時執行的存盤程序

create or replace procedure proce_t is
begin
  insert into t_test
    (id, name)
  values
    ('1', to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss'));
  commit;
end proce_t;
/

4.3 創建定時一分鐘定時任務job

variable jobno number;
begin 
dbms_job.submit(:jobno,
'proce_t;',
 sysdate, 
 'sysdate+1/24/60'); 
 commit;
end;

4.5 可以根據以下陳述句查詢剛創建好的job

select job, next_date, next_sec, failures, broken from user_jobs where job = '1424'

查詢結果如下

SQL> select job, next_date, next_sec, failures, broken from user_jobs where job = '1424'
  2  /
 
       JOB NEXT_DATE   NEXT_SEC           FAILURES BROKEN
---------- ----------- ---------------- ---------- ------
      1424 2020-12-30  13:07:14                  0 N

其中broken = N 表示該job已經生效

我們再來查看目標表中有沒有定時插入資料

SQL> select * from t_test;
 
ID                             NAME
------------------------------ ------------------------------
1                              2020-12-30 13:05:14
1                              2020-12-30 13:03:14
1                              2020-12-30 13:04:14
1                              2020-12-30 13:08:14
1                              2020-12-30 13:06:14
1                              2020-12-30 13:07:14
 
6 rows selected

可以看到,定時一分鐘插入了一條資料,

4.6 如果我們不需要這個定時任務了,那要怎么停止呢?

1、根據jobno,執行以下腳本可以停止job

SQL> begin
  2    dbms_job.broken(1424, true, sysdate);
  3    commit;
  4  end;
  5  /
 
PL/SQL procedure successfully completed

再來查看定時任務是否停用成功

SQL> select job, next_date, next_sec, failures, broken from user_jobs where job = '1424';
 
       JOB NEXT_DATE   NEXT_SEC           FAILURES BROKEN
---------- ----------- ---------------- ---------- ------
      1424 4000-01-01  00:00:00                  0 Y

我們發現BROKEN=Y 說明定時任務已經停止成功了

4.7 啟用剛才停用的定時任務

SQL> begin
  2   dbms_job.run(1424);
  3   commit;
  4  end;
  5  /
 
PL/SQL procedure successfully completed

SQL> select job, next_date, next_sec, failures, broken from user_jobs where job = '1424';
 
       JOB NEXT_DATE   NEXT_SEC           FAILURES BROKEN
---------- ----------- ---------------- ---------- ------
      1424 2020-12-30  13:20:53                  0 N

BROKEN = N ,剛才的定時任務又啟動了

五、定時任務中job運行時間

下面總計了一些定時任務中常用的運行時間

  • 每分鐘執行: TRUNC(sysdate,'mi') + 1/(24*60)

  • 半個小時: sysdate+30/(24*60)

  • 每天凌晨1點執行:TRUNC(sysdate) + 1 +1/(24)

  • 每周一凌晨1點執行: TRUNC(next_day(sysdate,'星期一'))+1/24

  • 每月1日凌晨1點執行: TRUNC(LAST_DAY(SYSDATE))+1+1/24

  • 每季度的第一天凌晨1點執行: TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 1/24

  • 每年7月1日和1月1日凌晨1點: ADD_MONTHS(trunc(sysdate,'yyyy'),6)+1/24

  • 每年1月1日凌晨1點執行: ADD_MONTHS(trunc(sysdate,'yyyy'), 12)+1/24

  • 每個小時的第15分鐘運行,比如:8:15,9:15,10:15…:trunc(sysdate,'hh')+(60+15)/(24*60)

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/552282.html

標籤:Oracle

上一篇:MySQL好玩新特性:離線模式

下一篇:返回列表

標籤雲
其他(158905) Python(38128) JavaScript(25420) Java(18033) C(15226) 區塊鏈(8265) C#(7972) AI(7469) 爪哇(7425) MySQL(7179) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5871) 数组(5741) R(5409) Linux(5338) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4570) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2432) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1972) 功能(1967) Web開發(1951) HtmlCss(1936) python-3.x(1918) C++(1915) 弹簧靴(1913) xml(1889) PostgreSQL(1875) .NETCore(1860) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • Oracle 定時任務job實際應用

    (Oracle 定時任務job實際應用) 一、Oracle定時任務簡介 Oracle定時任務是在oracle系統中一個非常重要的子系統,運用得當,可以大大提高我們系統運行和維護能力。oracle定時任務的功能,可以在指定的時間點自行執行任務。 那么在實際作業中,什么樣的場景會用到定時任務呢?下面是在 ......

    uj5u.com 2023-05-12 10:18:42 more
  • MySQL好玩新特性:離線模式

    GreatSQL社區原創內容未經授權不得隨意使用,轉載請聯系小編并注明來源。 GreatSQL是MySQL的國產分支版本,使用上與MySQL一致。 作者:Yejinrong/葉金榮 文章來源:GreatSQL社區原創 繼續吹MySQL 8.0~ 在以前,當需要對MySQL資料庫進行維護操作時,通常需 ......

    uj5u.com 2023-05-12 10:18:15 more
  • MySQL外鍵約束和多表查詢

    外鍵約束和多表查詢 一、外鍵是什么 圖解 知識點 外鍵: 多個表之間的關聯欄位 特點1: 從表外鍵的值是對主表主鍵的參考。 特點2: 從表外鍵型別,必須與主表主鍵型別一致。 主從表: 外鍵欄位所在的表是從表,依賴欄位對應的表是主表 多表關系: 一對一 一對多 多對多 一對多關系: 主表是一方 從表是 ......

    uj5u.com 2023-05-12 10:12:56 more
  • 資料治理三大模式詳解,治理新范式釋放資料潛能

    隨著世界經濟由工業經濟向數字經濟轉型,資料逐步成為關鍵的生產要素,企業開始將資料作為一種戰略資產進行管理。資料從業務中產生,在IT系統中承載,要對資料進行有效治理,需要業務充分參與,IT系統確保遵從,這是一個非常復雜的系統工程。 資料治理架構 實踐證明,企業只有構筑一套企業級的資料治理綜合體系,明確 ......

    uj5u.com 2023-05-12 10:05:57 more
  • Apache DolphinScheduler 開源之夏學生專案申請開啟,6 大課題等你

    開源之夏 2023 學生報名已經正式開啟!Apache DolphinScheduler 今年繼續參與開源之夏的活動,2023 年 4 月 29 日-6 月 3 日 15:00 UTC+8,同學們可以在開源之夏官網 https://summer-ospp.ac.cn/ 找到 Apache Dolph ......

    uj5u.com 2023-05-12 10:05:39 more
  • 資料剖析更靈活、更快捷,火山引擎 DataLeap 動態探查全面升級

    更多技術交流、求職機會,歡迎關注位元組跳動資料平臺微信公眾號,回復【1】進入官方交流群 近期,火山引擎 DataLeap 上線“動態探查”能力,為用戶提供全域資料視角、完善的抽樣策略,提高資料探查的靈活度以及回應速率。 傳統的資料探查是基于庫表的全量探查,由后端引擎執行,通過自動化檢查資料成分、關系、 ......

    uj5u.com 2023-05-12 10:05:27 more
  • V$INDEX_USAGE_INFO中找不到監控索引資料的尷尬經歷

    在一個Oracle 12.1實體中,想監控一個表的索引使用情況,在system用戶下執行了下面腳本以及輸出的監控索引腳本后,發現V$OBJECT_USAGE下一直沒有對應的記錄(在system用戶下查詢) SELECT 'ALTER INDEX '||OWNER||'.'||INDEX_NAME|| ......

    uj5u.com 2023-05-11 08:43:03 more
  • Oracle之table()函式的使用,提高查詢效率

    (Oracle之table()函式) 一、序言 前段時間一直在弄報表,快被這些報表整吐了,然后接觸到了Oracle的table()函式。所以今天把table()函式的具體用法整理下,防止下次遇到忘記了。。 利用table()函式,可接收輸入引數,然后將pl/sql 回傳的結果集代替table。由于表 ......

    uj5u.com 2023-05-11 08:42:59 more
  • mysql資料記錄

    mysql資料記錄 準備作業 創建庫、表 #創建資料庫 create database mysql02; #使用資料庫 use mysql02; #創建表 create table student(id int ,name varchar(10),age int); 查看student表結構 資料增 ......

    uj5u.com 2023-05-11 08:42:55 more
  • 從快取的本質說起,說服技術大佬用Redis

    摘要:在技術領域中,沒有銀彈。我們需要不斷探索和研究新的技術,結合具體問題和需求,選擇最適合的解決方案。 本文分享自華為云社區《知乎問題:如何說服技術老大用 Redis ?》,作者:勇哥java實戰分享。 最近在某問答平臺看到一個技術討論:如何說服技術老大用Redis? “他總覺得用Redis每次都 ......

    uj5u.com 2023-05-11 08:42:43 more