當前位置:首頁 » 編程語言 » oracle定時執行sql

oracle定時執行sql

發布時間: 2022-05-19 21:05:24

『壹』 我想定時讓 oracle 執行一段sql語句 怎麼做

如:定時刪除三分鍾前的數據

###1.創建存儲過程
SQL>createorreplaceprocerepro_delete_aas
2begin
3deletefromatwheret.a<(sysdate-3/1440);###一天1440分鍾。即一分鍾是1/1440
4end;
5/

Procerecreated
###2創建job
SQL>variablejob_pro_delete_anumber;
SQL>begin
2dbms_job.submit(:job_pro_delete_a,'pro_delete_a;',sysdate,'sysdate+3/1440');
3end;
4/

PL/
job_pro_delete_a
---------
127

###3.調用job
SQL>begin
2dbms_job.run(:job_pro_delete_a);
3end;
4/

PL/
job_pro_delete_a
---------
127

###4.刪除job
SQL>begin
2dbms_job.remove(:job_pro_delete_a);
3end;
4/
Ps:select*fromuser_jobs;
dbms_job.remove(ID);

『貳』 ORACLE資料庫怎麼做定時執行操作

1.create table test(id int,starttime date,state int);
2.create or replace procere sp_update is
cursor cur is select * from test where state=0;
v_id int;
v_starttime date;
v_state int;
begin
open cur;
loop
fetch cur into v_id,v_starttime,v_state;
exit when cur%notfound;
update test set state=1 where starttime=sysdate;
commit;
end loop;
close cur;
end;
/
3.創建JOB
SQL> variable job1 number;
SQL>
SQL> begin
2 dbms_job.submit(:job1,sp_update;',sysdate,'sysdate+1/1440'); --每天1440分鍾,即一分鍾運行sp_update過程一次
3 end;
4 /

PL/SQL 過程已成功完成。

運行JOB
SQL> begin
2 dbms_job.run(:job1);
3 end;
4 /

『叄』 Oracle資料庫中把SQL存在CLOB欄位中 ,現需對其定時執行,通過存儲過程對其執行報錯

CLOB這個類型就是使用CHAR來保存數據的,把nvarchar類型數據插入到oracle對應的CLOB類型中只要加個to_char()轉換下就可以了

『肆』 oracle定時執行SQL語句的存儲過程幫我看下有什麼問題

create or replace procere proc_auto_exec_job is
job number;

begin

『伍』 oracle寫一個定時執行的sql語句,JOB也行

關於定期執行的計劃任務,oracle中可以通過dbms_scheler包中的自帶的存儲過程進行實現;如果需要將查詢結果存入指定的目錄,需要考慮數據轉換,相對復雜,一般通過前端軟體實現;

『陸』 Oracle中存儲過程如何設置等待特定時長之後再執行sql

oraclejob有定時執行的功能,可以在指定的時間點或每天的某個時間點自行執行任務。。
每秒鍾執行次Interval=>sysdate+1/(24*60*60),如果改成sysdate+10/(24*60*60)就是10秒鍾執行,每分鍾執行Interval=>TRUNC(sysdate,'mi')+1/(24*60)如果改成TRUNC(sysdate,'mi')+10/(24*60)就是每10分執行次每天定時執行例如:每天的凌晨1點執行Interval=>TRUNC(sysdate)+1+1/(24)。

『柒』 oracle 定時每天將查詢的結果當作sql來執行

建立一個procere,procere中使用動態sql。
然後創建個job,就可以了。

『捌』 Oracle中如何定時執行一條SQL語句

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

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

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

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

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

[sql] view plain

  • BEGIN

  • INSERTINTOMY_JOB_TEST(NUM)VALUES(1);

  • END;


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

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

    [sql] view plain

  • GrantCreateJobTo指定用戶名



  • [sql] view plain

  • SQL>CREATEORREPLACEPROCEDURE

  • JOB_TEST

  • BEGIN

  • INSERTINTOMY_JOB_TEST(NUM)VALUES(1);

  • END;


  • (此處要執行存儲過程不能用exec JB_TEST,這種執行方式只能在命令行中使用)
  • 使用DBMS_SCHEDULER進行定時,這里為每分鍾執行一次

    [sql] view plain

  • 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;


  • 但是這樣子定時任務並不會執行。
  • 我們可以用下面的命令查看一下scheler的狀態

    [plain] view plain

  • SQL>SELECT*FROMUSER_SCHEDULER_JOBS;

  • 此時我們可以看到enable的狀態是false的,因此我們需要去啟動定時任務
  • [plain] view plain

  • SQL>BEGIN

  • DBMS_SCHEDULER.ENABLE('SCHEDULER_TEST');


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


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

    然後查看MY_JOB_TEST表,發現每分鍾會往裡面添加記錄。

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

  • dbms_scheler.set_attribute('調度名','調度屬性','調度值');



  • 至此,定時任務完成。

『玖』 如何使用oracle存儲過程執行外部的sql腳本文件

你把腳本內容直接在存儲過程中實現,然後利用job去定時調度就好了。

熱點內容
深入編譯器 發布:2025-05-15 07:41:35 瀏覽:877
電信手機號服務密碼怎麼查 發布:2025-05-15 07:40:10 瀏覽:613
python全局變數文件 發布:2025-05-15 07:35:06 瀏覽:954
位元組和存儲位元組 發布:2025-05-15 07:32:10 瀏覽:521
linux應用開發工程師 發布:2025-05-15 07:32:07 瀏覽:261
sqldcl 發布:2025-05-15 07:29:18 瀏覽:199
canvas的圖像上傳 發布:2025-05-15 07:29:17 瀏覽:102
離線緩存為什麼點不動 發布:2025-05-15 07:27:17 瀏覽:829
釘鼎伺服器出口ip 發布:2025-05-15 07:13:08 瀏覽:279
移動硬碟和光碟哪個存儲時間長 發布:2025-05-15 07:04:25 瀏覽:489