1. 程式人生 > >oracle sql語句定時執行

oracle sql語句定時執行

通過網上查詢,找到一種方案,就是先在oracle裡面對要定時的sql寫成儲存過程,再用DBMS_scheduler對儲存過程進行定時執行。

在資料庫中新建了一個表MY_JOB_TEST

在資料庫中新建了一個表MY_JOB_TEST


在資料庫中新建了一個表MY_JOB_TEST


 在PLSQL中,執行下面語句模擬儲存過程的呼叫,執行後要點提交才有反應

BEGIN
INSERT INTO MY_JOB_TEST (NUM) VALUES (1);
END;

然後下面建立一個儲存過程JOB_TEST

(注意,這裡使用者需要CREATE JOB許可權,可以用超級管理員使用者執行下面語句給指定使用者賦予該許可權)

 Grant Create Job To 指定使用者名稱


SQL>CREATE OR REPLACE PROCEDURE
   JOB_TEST
BEGIN
   INSERT INTO MY_JOB_TEST (NUM) VALUES (1);
END;

(此處要執行儲存過程不能用exec JB_TEST,這種執行方式只能在命令列中使用)

使用DBMS_SCHEDULER進行定時,這裡為每分鐘執行一次

SQL> BEGIN  
    DBMS_SCHEDULER.CREATE_JOB (  
      job_name           =>  'SCHEDULER_TEST',  
       job_type           =>  'STORED_PROCEDURE',  
       job_action         =>  'JOB_TEST',  
       start_date         =>  sysdate,  
       repeat_interval    =>  'FREQ=MINUTELY;INTERVAL=1');  
    END;  

但是這樣子定時任務並不會執行。

我們可以用下面的命令檢視一下scheduler的狀態

SQL>SELECT * FROM USER_SCHEDULER_JOBS;
此時我們可以看到enable的狀態是false的,因此我們需要去啟動定時任務
SQL>BEGIN
DBMS_SCHEDULER.ENABLE('SCHEDULER_TEST');
END


dbms_scheduler.enable('j_test');  --啟用jobs   
dbms_scheduler.disable('j_test');  --禁用jobs    
dbms_scheduler.run_job('j_test');  --執行jobs    
dbms_scheduler.stop_job('j_test');  --停止jobs   
dbms_scheduler.drop_job('j_test');  --刪除jobs  


然後再查詢job的enable裝態,發現為true了。

然後檢視MY_JOB_TEST表,發現每分鐘會往裡面新增記錄。

當需要修改定時任務或者排程的其他屬性時,可以用下面的

dbms_scheduler.set_attribute('排程名','排程屬性','排程值'); 


至此,定時任務完成。

相關推薦

oracle sql語句定時執行

通過網上查詢,找到一種方案,就是先在oracle裡面對要定時的sql寫成儲存過程,再用DBMS_scheduler對儲存過程進行定時執行。 在資料庫中新建了一個表MY_JOB_TEST 在資料庫中新建了一個表MY_JOB_TEST 在資料庫中新建了一個表MY_JO

OracleSQL語句提高執行效率的5種需要注意的書寫方法

        1、操作符號: NOT IN操作符   2、注意union和union all的區別。union比union all多做了一步distinct操作。能用union all的情況下儘量不用union。   3、查詢時儘量不要返回不需要的行、列。另外在多表連線查詢

.net mvc3 直接執行oracle sql語句

備忘錄1) SQL語句查詢實體var members = crmDB.Members.SqlQuery( "select * from Member").ToList();2) SQL語句查詢非實體型別注意不要把型別指定錯了,這裡返回的一

SQL Server定時執行SQL語句

企業管理器     --管理     --SQL   Server代理     --右鍵作業     --新建作業     --"常規"項中輸入作業名稱     --"步驟"項     --新建     --"步驟名"中輸入步驟名     --"型別"中選擇"Transact-SQL   指令碼(TSQL)"

Oracle 的 sqlplus下如何檢視sql語句執行時間

Oracle下如何檢視sql語句的執行時間 有兩種方法 1:在精確度要求非常高的情況下使用 SQL> set timing on; SQL> select * from dual; DUMMY ----- X Executed in 0.296 seconds

Oracle sql語句執行順序

Oracle sql語句執行順序 (2010-10-14 16:05:24) sql語法的分析是從右到左 一、sql語句的執行步驟: 1)語法分析,分析語句的語法是否符合規範,衡量語句中各表示式的意義。 2)語義分析,檢查語句中涉及的所有資料庫物件是否存在,且使用者

應用Druid監控SQL語句執行情況

itl log .net pan href 轉載 執行 net sql 轉載:1、應用Druid監控SQL語句的執行情況 2、http://blog.csdn.net/wind520/article/details/9202555 應用Druid監控SQ

MyBatis插件及示例----打印每條SQL語句及其執行時間

應該 log bject 兩個 ack ctrl+ 給定 打破 insert Plugins 摘一段來自MyBatis官方文檔的文字。 MyBatis允許你在某一點攔截已映射語句執行的調用。默認情況下,MyBatis允許使用插件來攔截方法調用 Execut

SQL語句執行順序和效率

繼續 col 最好的 rom where 需要 完整 nbsp 解析 今天上午在開發的過程中,突然遇到一個問題,需要了解SQL語句的執行順序才能繼續,上網上查了一下相關的資料,現整理如下:一、sql語句的執行步驟: 1)語法分析,分析語句的語法是否符合規範,衡量語句中各表達

SQL語句執行過程

sql語句執行過程1.語法校驗 如果在SQL計劃緩存中沒有對應的執行計劃,服務器首先會對用戶請求的SQL語句進行語法效驗,如果有語法錯誤,服務器會結束查詢操作,並用返回相應的錯誤信息給調用它的應用程序。註意:此時返回的錯誤信息中,只會包含基本的語法錯誤信息,例如select 寫成selec等,錯誤信

關於oracle sql語句查詢時 表名和字段名要加雙引號的問題具體解釋

ont tin rac 作者 什麽 因此 tro 們的 reg 作為oracle的剛開始學習的人相信大家一定會遇到這個問題。如圖: 明明就是navicat可視化創建了表,但是就是不能查到!這個

oracle job有定時執行功能

資源 查看 -m 最大值 _id call blog 開始時間 基本語法 oracle job有定時執行的功能,可以在指定的時間點或每天的某個時間點自行執行任務。 一、查詢系統中的job,可以查詢視圖 --相關視圖 select * from dba_job

數據庫曾刪改通用方法封裝(根據曾 刪 改 的sql語句執行相應的業務操作,)

on() sql nbsp 增加 str cep con template auto public class JDBCTemplate { /** * 增刪改封裝 * @param sql:要執行的sql語句 * @param pa

【筆記】Oracle SQL語句 | 基礎篇

when 自然 本地數據庫 指向 ise abort ted names pda 整理了一下Oracle SQL的基本語句,主要針對Oracle的使用者(Oracle數據庫維護和管理員的常用語句之後整理),可作為一個大綱參考,對某些語句或函數並未深入的詳解,只是簡單列出,留

SQL SERVER 一個SQL語句執行順序

去重復 order by 程序 一個 html class 條件篩選 開窗函數 etc 原文:SQL SERVER 一個SQL語句的執行順序一個SQL 語句的執行順序 1、From (告訴程序 來自哪張表 如果是表表達式 依舊是如此順序) 2、Where(條件篩選

SQL 查看SQL語句執行時間 直接有效的方法

from sqlserve idt ont question mssql pan 腳本 png 原文:SQL 查看SQL語句的執行時間 直接有效的方法在MSSQL Server中通過查看SQL語句執行所用的時間,來衡量SQL語句的性能。 通過設置STATISTICS我們可

簡單的oracle sql語句練習

簡單的oracle sql語句練習 求每個部門的平均薪水 select deptno,avg(sal) from emp group by deptno 每個部門同一個職位的最大工資 select deptno,job,max(sal) from emp group by deptno,job 按照

mysql之sql語句邏輯執行順序

1.   (1)from先執行,from執行後就會將所有表(多個表時和單表所有的表)資料載入到記憶體中了   (2)ON執行,得到連線表用的連線條件。   (3)JOIN執行,根據ON的連線條件,將from載入的所有表進行連線。   (4)Where執行,篩選條件   (5)GROUP BY執行

oracle sql語句建立表空間、使用者、並給使用者賦予許可權

--建立表空間、大小100m,自增長50m ,最大為 2G;位置: 'h:\app\a.dbf' create tablespace 表空間名 datafile 'h:\app\a.dbf' size 100m autoextend on next 50m maxsize 20480m ext

詳解一條sql語句執行過程

inno double other into 數據過濾 計算 var idt 底層實現 SQL是一套標準,全稱結構化查詢語言,是用來完成和數據庫之間的通信的編程語言,SQL語言是腳本語言,直接運行在數據庫上。同時,SQL語句與數據在數據庫上的存儲方式無關,只是不同的數據庫對