真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

oracle怎么添加任務(wù),oracle 自動(dòng)任務(wù)

oracle 添加一個(gè)計(jì)劃任務(wù) 每天凌晨?jī)牲c(diǎn) 定時(shí)執(zhí)行一個(gè)存儲(chǔ)過程 求詳細(xì)步驟?。〖保。?/h2>

在你的存儲(chǔ)過程里面定義一個(gè)變量:

目前創(chuàng)新互聯(lián)已為上千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、網(wǎng)站改版維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、平南網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

v_HH24 CHAR(2) := '00';

begin后面給變量賦值:

v_HH24 := to_char(sysdate, 'HH24');

然后在你執(zhí)行的代碼外面加上:

IF v_HH24 = '02' THEN

你的代碼;

end if;

然后使用下面的腳本創(chuàng)建job:

begin

sys.dbms_job.submit(job = :job,

what = '你的存儲(chǔ)過程名字;',

next_date = to_date('01-06-2013 00:00:00', 'dd-mm-yyyy hh24:mi:ss'),

interval = 'SYSDATE+60/1440');

commit;

end;

/

oracle如何創(chuàng)建表以及向表里面添加數(shù)據(jù)

1:首先打開oracle,在左側(cè)中右擊選擇新建表。

2:然后選擇添加數(shù)據(jù),添加完一組數(shù)據(jù)之后,緊接著還可以添加一組數(shù)據(jù),把自己要填寫的數(shù)據(jù)都上傳之后就可以了。

3:點(diǎn)擊另存為,這個(gè)時(shí)候會(huì)出現(xiàn)一個(gè)窗口,出入文件的名字,點(diǎn)擊確定即可。

4:在表的下方就會(huì)出現(xiàn)一個(gè)名為Class的表,這個(gè)時(shí)候就已經(jīng)創(chuàng)建好了,如果不行,可以按照上述步驟重新操作,看看是不是哪里出現(xiàn)了問題。

Oracle怎么建立一個(gè)計(jì)劃任務(wù)

特別提示:

oracle是執(zhí)行完任務(wù),才按照interval去計(jì)算下次執(zhí)行時(shí)間?。。?/p>

為精確每個(gè)5分鐘執(zhí)行一個(gè)任務(wù),必須自己計(jì)算時(shí)間。

如:trunc_minute(sysdate)+5/1440

create or replace function trunc_minute(v_date date) return date as

begin

return to_number(trunc(to_char(v_date, 'mi')/5))*5/(24*60) + trunc(v_date, 'hh24');

end;

oracle數(shù)據(jù)庫(kù)怎么創(chuàng)建定時(shí)任務(wù)

工作中,我們使用的數(shù)據(jù)庫(kù)大部分是oracle、mysql、db2、sql server等數(shù)據(jù)庫(kù),在使用oracle最匹配的工具plsql的時(shí)候,如果用plsql創(chuàng)建定時(shí)器呢看下面我簡(jiǎn)單介紹使用工具創(chuàng)建定時(shí)器的方法。

如何在Oracle中管理計(jì)劃任務(wù)

Oracle 定時(shí)執(zhí)行計(jì)劃任務(wù)

Oracle 在10g 版本以前,計(jì)劃任務(wù)用的是DBMS_JOB 包,10g 版本引入DBMS_SCHEDULER來替代先前的DBMS_JOB,在功能方面,它比DBMS_JOB 提供了更強(qiáng)大的功能和更靈活的機(jī)制管理,但DBMS_JOB 包的使用相對(duì)比較簡(jiǎn)單,也基本能夠滿足定時(shí)執(zhí)行計(jì)劃任務(wù)的需求,故接下來就先看看DBMS_JOB 包的使用方法。

1. DBMS_JOB

我們可以在命令窗口輸入show parameter job_queue_processes 查看數(shù)據(jù)庫(kù)中定時(shí)任務(wù)的最多并發(fā)數(shù),一般設(shè)置為10(設(shè)置方法:alter system set job_queue_processes=10),如果設(shè)為0,那么數(shù)據(jù)庫(kù)定時(shí)作業(yè)是不會(huì)運(yùn)行的。

oracle 定時(shí)執(zhí)行job queue 的后臺(tái)進(jìn)程是SNP,要啟動(dòng)snp,首先看系統(tǒng)模式是否支持sql alter system enable restricted session;或sql alter system disenable restricted session;利用上面的命令更改系統(tǒng)的會(huì)話方式為disenable restricted,為snp 的啟動(dòng)創(chuàng)建條件.

接下來我們嘗試實(shí)現(xiàn)以下功能:每隔一分鐘自動(dòng)向job_test 表中插入當(dāng)前的系統(tǒng)時(shí)間。

1、創(chuàng)測(cè)試表

create table job_test(updatetime date);

2、創(chuàng)建JOB

variable v_job_no number;

begin

dbms_job.submit(:v_job_no, 'insert into job_test values(sysdate);', sysdate,'sysdate+1/1440');

end;

/

其中最后一個(gè)參數(shù)'sysdate+1/1440'表示時(shí)間間隔為每分鐘。其它常用的時(shí)間間隔的設(shè)置如下:

(1)如果想每天凌晨1 點(diǎn)執(zhí)行,則此參數(shù)可設(shè)置為'trunc(sysdate)+25/24';(2)如果想每周一凌晨1 點(diǎn)執(zhí)行,則此參數(shù)可設(shè)置為'trunc(next_day(sysdate,1))+25/24';

(3)如果想每月1 號(hào)凌晨1 點(diǎn)執(zhí)行,則此參數(shù)可設(shè)置為'trunc(last_day(sysdate))+25/24';

(4)如果想每季度執(zhí)行一次,則此參數(shù)可設(shè)置為'trunc(add_months(sysdate,3),'Q')+1/24';(5)如果想每半年執(zhí)行一次,則此參數(shù)可設(shè)置為'add_months(trunc(sysdate,'yyyy'),6)+1/24';(6)如果想每年執(zhí)行一次,則此參數(shù)可設(shè)置為'add_months(trunc(sysdate,'yyyy'),12)+1/24'。

select * from user_jobs;--查看當(dāng)前用戶的調(diào)度任務(wù)select * from dba_jobs_running;--查看正在執(zhí)行的調(diào)度任務(wù)select * from dba_jobs;--查看執(zhí)行完的調(diào)度任務(wù)select * from all_jobs; -- 查看數(shù)據(jù)庫(kù)系統(tǒng)所有任務(wù)實(shí)例1:

1. 創(chuàng)建測(cè)試表

create table a(a date);

2. 創(chuàng)建一個(gè)存儲(chǔ)過程

create or replace procedure test as

begin

insert into a values(sysdate);

end;

/

3. 創(chuàng)建JOB(任務(wù)計(jì)劃)

variable job1 number;

begin

dbms_job.submit(:job1,'test;',sysdate,'sysdate+1/1440');end;

/

--每天1440分鐘,即一分鐘運(yùn)行test存儲(chǔ)過程一次4. 運(yùn)行JOB

begin

dbms_job.run(:job1);

end;

/

5. 查看執(zhí)行結(jié)果

select to_char(a,'yyyy/mm/dd hh24:mi:ss') 時(shí)間 from a;6.刪除JOB

begin

dbms_job.remove(:job1);

end;

/

job的使用說明:

DBMS_JOB.SUBMIT(:jobno,//job號(hào)

'your_procedure;',//要執(zhí)行的過程

trunc(sysdate)+1/24,//下次執(zhí)行時(shí)間

'trunc(sysdate)+1/24+1'//每次間隔時(shí)間

);

刪除job:dbms_job.remove(jobno);

修改要執(zhí)行的操作:job:dbms_job.what(jobno,what);修改下次執(zhí)行時(shí)間:dbms_job.next_date(job,next_date);修改間隔時(shí)間:dbms_job.interval(job,interval);停止job:dbms.broken(job,broken,nextdate);啟動(dòng)job:dbms_job.run(jobno);

例子:

VARIABLE jobno number;

begin

DBMS_JOB.SUBMIT(:jobno,

'Procdemo;',//Procdemo為過程名稱

SYSDATE, 'SYSDATE + 1/720');

commit;

end;

/

描述 Interval參數(shù)值

每天運(yùn)行一次

'SYSDATE + 1'

每小時(shí)運(yùn)行一次

'SYSDATE + 1/24'

每10分鐘運(yùn)行一次

'SYSDATE + 10/(60*24)'

每30秒運(yùn)行一次

'SYSDATE + 30/(60*24*60)'

每隔一星期運(yùn)行一次

'SYSDATE + 7'

不再運(yùn)行該任務(wù)并刪除它

NULL

每天午夜12點(diǎn)

'TRUNC(SYSDATE + 1)'

每天早上8點(diǎn)30分

'TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)'

每星期二中午12點(diǎn)

'NEXT_DAY(TRUNC(SYSDATE ), ''TUESDAY'' ) + 12/24'

每個(gè)月第一天的午夜12點(diǎn)

'TRUNC(LAST_DAY(SYSDATE ) + 1)'

每個(gè)季度最后一天的晚上11點(diǎn)

'TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), 'Q' ) -1/24'

每星期六和日早上6點(diǎn)10分

'TRUNC(LEAST(NEXT_DAY(SYSDATE, ''SATURDAY"), NEXT_DAY(SYSDATE, "SUNDAY"))) + (6×60+10)/(24×60)'

2. DBMS_SCHEDULER

DBMS_SCHEDULER的功能更強(qiáng)大,定義更靈活,增強(qiáng)了與系統(tǒng)的交互性。可以有兩種方式來定義"計(jì)劃":

1) 使用DBMS_SCHDULER.CREATE_SCHEDULE //定義一個(gè)計(jì)劃,計(jì)劃再調(diào)用job;2) 調(diào)用DBMS_SCHDULER.CREATE_JOB //過程直接定義job例子1:用DBMS_SCHDULER.CREATE_JOBE直接創(chuàng)建jobBEGIN

DBMS_SCHEDULER.CREATE_JOB (

job_name = 'update_bb', //job的名字

job_type = 'STORED_PROCEDURE', //job的類型為“執(zhí)行存儲(chǔ)過程”

job_action = 'OPS.SALES_PKG.UPDATE_SALES_SUMMARY', //存儲(chǔ)過程的名字start_date = '28-APR-10 07.00.00 PM Australia/Sydney', //這里把時(shí)區(qū)去掉也可以!

repeat_interval = 'FREQ=DAILY;INTERVAL=2', /* every other day */enabled =true, //啟動(dòng)該job

comments = 'My new job'); //注釋

END;

/

參數(shù)說明:

·job_name: 顧名思義,每個(gè)job都必須有一個(gè)的名稱·schedule_name: 如果定義了計(jì)劃,在這里指定計(jì)劃的名稱·job_type: 目前支持三種類型:

·PLSQL_BLOCK : PL/SQL塊: 需要輸入完整的PL/SQL代碼;·STORED_PROCEDURE : 存儲(chǔ)過程: 需要指定存儲(chǔ)過程的名字;·EXECUTABLE: 外部程序: (外部程序可以是一個(gè)shell腳本,也可以是操作系統(tǒng)級(jí)別的指令). 需要輸入script的名稱或者操作系統(tǒng)的指令名·enabled: 上面已經(jīng)說過了,指定job創(chuàng)建完畢是否自動(dòng)激活·comments: 對(duì)于job的簡(jiǎn)單說明

例子2:

BEGIN

DBMS_SCHEDULER.CREATE_JOB (

job_name = 'zbb_job3',

job_type = 'PLSQL_BLOCK', //job的類型是執(zhí)行sql語句job_action = 'insert into bb values(1,sysdate);',start_date = sysdate,

repeat_interval = 'freq = minutely; interval=1', //每分鐘執(zhí)行一次enabled = true,

comments = 'my love');

END;

/

注意: enabled 默認(rèn)為false,oracle不會(huì)運(yùn)行此job,所有我們需要enable它SQL exec dbms_scheduler.enable ('zbb_job3');例子3:使用DBMS_SCHDULER.CREATE_SCHEDULE

建立 scheduler(控制時(shí)間和頻率),然后給它添加幾個(gè)jobs(動(dòng)作)!

BEGIN

DBMS_SCHEDULER.CREATE_SCHEDULE ( //創(chuàng)建計(jì)劃任務(wù)schedule_name = 'zbb_schedule',

repeat_interval = 'FREQ=MINUTELY; INTERVAL=5', //執(zhí)行間隔:每5分鐘comments = 'Every 5 MINUTS');

END;

/

接下來往“zbb_schedule”里添加一個(gè)job “zbb_job2”:

BEGIN

DBMS_SCHEDULER.CREATE_JOB ( //創(chuàng)建job 并把它加入到scheduler里面job_name = 'zbb_job2',

job_type = 'PLSQL_BLOCK',

job_action = 'insert into bb values(1,sysdate);',schedule_name = 'ZBB_SCHEDULE');

END;

/

再往“zbb_schedule”里添加一個(gè)job “zbb_job3”:

BEGIN

DBMS_SCHEDULER.CREATE_JOB (

job_name = 'zbb_job3',

job_type = 'PLSQL_BLOCK',

job_action = 'insert into bb values(1,sysdate);',schedule_name = 'ZBB_SCHEDULE');

END;

/

運(yùn)行“select job_name,schedule_name from user_scheduler_jobs;”可以查看到所有的job。

也可以將“zbb_job1” 加入到 “zbb_schedule”

SQL begin

2 dbms_scheduler.SET_ATTRIBUTE( //注意這里執(zhí)行的是修改屬性的過程3 name = 'zbb_job1',

4 attribute = 'schedule_name',

5 value = 'ZBB_SCHEDULE');

6 end;

7 /

刪除 job 及 scheduler:

SQL BEGIN

DBMS_SCHEDULER.DROP_JOB ( //刪除job;多個(gè)job間用逗號(hào)隔開job_name = 'zbb_job2,zbb_job3',

force = TRUE);

END;

/

如何刪除scheduler:

BEGIN

DBMS_SCHEDULER.DROP_SCHEDULE (

schedule_name = 'zbb_schedule',

force = true ); // 設(shè)為true 強(qiáng)制;false。

END;

/

如何修改job的屬性(frequency:頻率):

BEGIN

DBMS_SCHEDULER.SET_ATTRIBUTE (

name = 'zbb_job1',

attribute = 'repeat_interval',

value = 'FREQ=DAILY'); //每天執(zhí)行一次

END;

/

jobs創(chuàng)建時(shí)為“disabled”狀態(tài)。我們必須手動(dòng)“enable”它:

BEGIN

DBMS_SCHEDULER.ENABLE ('job1, job2, job3, sys.jobclass1, sys.jobclass2, sys.jobclass3'); /* sys.jobclass1下的所有jobs都會(huì)被enable */END;/END;

/

查看job的狀態(tài):

SELECT JOB_NAME, STATE FROM DBA_SCHEDULER_JOBS WHERE JOB_NAME = 'MY_EMP_JOB1';查看Job Logs:

SELECT JOB_NAME, OPERATION, OWNER FROM DBA_SCHEDULER_JOB_LOG;查看Job 運(yùn)行的詳細(xì)情況:

select log_id, job_name, status, to_char(log_date, 'DD-MON-YYYY HH24:MI') log_date from dba_scheduler_job_run_detailswhere job_name = 'MY_JOB14';如何管理計(jì)劃任務(wù)的權(quán)限:

GRANT SCHEDULER_ADMIN TO username;GRANT CREATE JOB TO scott;GRANT ALTER myjob1 TO scott;GRANT MANAGE SCHEDULER TO adam;PLSQL舉例如下:

begin dbms_scheduler.create_job ( job_name = '測(cè)試', job_type = 'PLSQL_BLOCK', job_action = 'insert into job_test values(sysdate);', start_date = sysdate, end_date = add_months(sysdate,12000), repeat_interval = 'FREQ=MINUTELY; INTERVAL=1', enabled = true,comments = '定時(shí)執(zhí)行計(jì)劃任務(wù)' );

end;

以上代碼可以通過在PLSQL Developer中新建Jobs輕松設(shè)定:

參數(shù)含義如下:

?JOB_NAME :指定任務(wù)的名稱,必選值,注意要確保指定的名稱唯一。

?JOB_TYPE :任務(wù)執(zhí)行的操作類型,必選值,有下列幾個(gè)可選值:

?PLSQL_BLOCK :表示任務(wù)執(zhí)行的是一個(gè)PL/SQL匿名塊。

?STORED_PROCEDURE :表示任務(wù)執(zhí)行的是ORACLE過程(含PL/SQL PROCEDURE和JAVA PROCEDURE)。

?EXECUTABLE :表示任務(wù)執(zhí)行的是一個(gè)外部程序,比如說操作系統(tǒng)命令。

?CHAIN :表示任務(wù)執(zhí)行的是一個(gè)CHAIN。

?JOB_ACTION :任務(wù)執(zhí)行的操作,必選值,應(yīng)與JOB_TYPE類型中指定的參數(shù)相匹配。比如說對(duì)于PL/SQL匿名塊,此處就可以放置PL/SQL塊的具體代表,類似DECLARE .. BEGIN ..END這類;如果是ORACLE過程,那么此處應(yīng)該指定具體的過程名,注意由于任務(wù)執(zhí)行,即使過程中有OUT之類參數(shù),實(shí)際執(zhí)行時(shí)也不會(huì)有輸出的。

?START_DATE :指定任務(wù)初次執(zhí)行的時(shí)間,本參數(shù)可為空,當(dāng)為空時(shí),表示任務(wù)立刻執(zhí)行,效果等同于指定該參數(shù)值為SYSDATE。

?REPEAT_INTERVAL :指定任務(wù)執(zhí)行的頻率,比如多長(zhǎng)時(shí)間會(huì)被觸發(fā)再次執(zhí)行。本參數(shù)也可以為空,如果為空的話,就表示當(dāng)前設(shè)定的任務(wù)只執(zhí)行一次。 REPEAT_INTERVAL參數(shù)需要好好說說,REPEAT_INTERVAL


新聞標(biāo)題:oracle怎么添加任務(wù),oracle 自動(dòng)任務(wù)
分享鏈接:http://weahome.cn/article/hshhpi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部