集成開發(fā)環(huán)境PL/SQL Developer教程:如何在Oracle中創(chuàng)建定時(shí)任務(wù)
PL/SQL Developer是一個(gè)集成開發(fā)環(huán)境,它專門針對(duì)Oracle數(shù)據(jù)庫(kù)的存儲(chǔ)程序單元的開發(fā)所用。現(xiàn)在越來(lái)越多的商業(yè)邏輯和應(yīng)用程式邏輯都在使用Oracle服務(wù)器,所以PL/SQL編程在整個(gè)開發(fā)過(guò)程中也變得越來(lái)越重要。PL/SQL開發(fā)者在開發(fā)Oracle應(yīng)用程序的時(shí)候都注重于開發(fā)工具簡(jiǎn)單易用,代碼簡(jiǎn)潔和開發(fā)效率高等特點(diǎn)。
PL/SQL Developer具有強(qiáng)大的PL/SQL編輯器、集成調(diào)試器、PL/SQL美化、SQL窗口、命令窗口等窗口,讓你的數(shù)據(jù)庫(kù)開發(fā)簡(jiǎn)單、高效!
相信很多人在使用PL/SQL Developer會(huì)遇到一些困難,這時(shí)候就需要上網(wǎng)查找資料來(lái)解決了,就好比如何在Oracle中創(chuàng)建定時(shí)任務(wù),應(yīng)該不少人都有這樣的問(wèn)題吧,現(xiàn)在就來(lái)看看應(yīng)該怎么解決吧~
最近由于需要對(duì)數(shù)據(jù)庫(kù)的一個(gè)表進(jìn)行定時(shí)更新,之前并沒(méi)有接觸過(guò)PL/SQL和Oracle的定時(shí)任務(wù)Job,只是在Java Web項(xiàng)目中寫過(guò)一些dao層的一些增刪改查SQL語(yǔ)句。為了實(shí)現(xiàn)這一需求,于是在網(wǎng)上找了各種資料,最后發(fā)現(xiàn)PL/SQL developer 在DBMS_JOB的創(chuàng)建定時(shí)任務(wù)job時(shí)提供了許多方便,本人使用的是PL/SQL Developer Version 8.0.4.1514 。
Oracle數(shù)據(jù)庫(kù)在Oracle 10G新增了DBMS_SCHEDULER的功能,比較之前使用的DBMS_JOB,其功能更強(qiáng)也更安全,但是細(xì)節(jié)問(wèn)題太多,對(duì)于我這個(gè)新手來(lái)說(shuō)看著有點(diǎn)頭大。于是選擇了DBMS_JOB。
創(chuàng)建定時(shí)任務(wù)job之前首先需要有我們要操作的數(shù)據(jù)庫(kù)表,然后我們應(yīng)該先建立存儲(chǔ)過(guò)程,在PL/SQL Developer中,我們新打開一個(gè)Program Window,如圖1所示。
圖1 新打開一個(gè) Program Window
存儲(chǔ)過(guò)程的代碼編寫這里就略過(guò),有什么不懂的就谷歌吧,一定能解決你的問(wèn)題的!編寫完成后,選擇執(zhí)行按鈕,存儲(chǔ)過(guò)程一般編譯通過(guò)的話是會(huì)提示compiled successfully的,如果有問(wèn)題的話PL/SQL是會(huì)直接提示錯(cuò)誤信息的,你按照提示進(jìn)行修改就行。這里需要說(shuō)明的是,存儲(chǔ)過(guò)程成功編譯通過(guò),創(chuàng)建好job后,執(zhí)行job卻始終執(zhí)行錯(cuò)誤,提示執(zhí)行失敗,這是你也得回頭看看很可能是你的存儲(chǔ)過(guò)程有運(yùn)行錯(cuò)誤(這里我也不知道怎么稱呼,較java里面的說(shuō)法,暫時(shí)這樣稱呼吧)。像我這次就碰到這種情況,弄得我好生郁悶。這里推薦你自己先test一下自己編寫的存儲(chǔ)過(guò)程,是不是存在運(yùn)行問(wèn)題。執(zhí)行test操作可以這樣:在procedures目錄下,找到那個(gè)你剛剛創(chuàng)建好的存儲(chǔ)過(guò)程,單擊右鍵選擇”test“,這時(shí)會(huì)彈出”test window“,選擇執(zhí)行按鈕
,這樣就可以避免因?yàn)榇鎯?chǔ)過(guò)程造成的job不能運(yùn)行的錯(cuò)誤了。
創(chuàng)建好正確的存儲(chǔ)過(guò)程后,我們要建立一個(gè)job。選擇DBMS_Jobs目錄,并單擊右鍵,選擇 New,這是便會(huì)彈出一個(gè)job創(chuàng)建對(duì)話框,如圖2所示。
圖2 dbms_job創(chuàng)建對(duì)話框
由上圖可以知道,其中what,Next date,Interval是需要我們填寫的,Borken一般不要勾選,下面詳細(xì)說(shuō)下這三項(xiàng)的寫法:
1、what
what項(xiàng)是填寫執(zhí)行的任務(wù)的名稱及其輸入?yún)?shù)。這里由于沒(méi)有涉及到輸入?yún)?shù),所以我只寫了存儲(chǔ)過(guò)程名,需要注意的是格式必須是:存儲(chǔ)過(guò)程名;。例如我新建的存儲(chǔ)過(guò)程叫proc_test,那么what項(xiàng)就應(yīng)該寫成這樣 “proc_test;”,雙引號(hào)只是格式需要,請(qǐng)無(wú)視。(注意分號(hào)千萬(wàn)不能忘了寫了,當(dāng)然你忘了系統(tǒng)會(huì)提示你job創(chuàng)建錯(cuò)誤的,嘿嘿)
2、Next date
Next date項(xiàng)是填寫job下次的執(zhí)行時(shí)間,一般我們不立即執(zhí)行的話,那么這個(gè)就是job第一次執(zhí)行的時(shí)間了。具體格式的話可以參考網(wǎng)上的,很詳細(xì)。這里我說(shuō)下我常用的格式吧。(貌似也可以不填,那么Apply之后會(huì)變成當(dāng)前系統(tǒng)時(shí)間,然后可以選中job號(hào)單擊右鍵run立即執(zhí)行。)
為了說(shuō)明清楚,首先需要知道sysdate是oracle數(shù)據(jù)庫(kù)的系統(tǒng)時(shí)間,可以使用 select sysdate from dual來(lái)查看當(dāng)前系統(tǒng)時(shí)間。在oracle中sysdate+1表示當(dāng)前的時(shí)間加一天,也就是明天這個(gè)時(shí)候,其中的1表示1天,那么一個(gè)小時(shí)就可以表示為1/24,一分鐘1/1440。如果我想要在當(dāng)前的時(shí)間的兩小時(shí)后執(zhí)行那么就可以填為sysdate+1/12。如果想要獲得整點(diǎn)時(shí)間建議使用trunc()函數(shù),trunc(sysdate)是表示當(dāng)前日期的零點(diǎn),比如說(shuō)我要讓它在今天晚上的9點(diǎn)開始執(zhí)行的話,可以這樣寫trunc(sysdate)+21/24。具體的時(shí)間可以根據(jù)自己的需求來(lái)寫。當(dāng)然還可以使用to_date()的寫法,這里不說(shuō)了,個(gè)人覺(jué)得沒(méi)必要拼字符串,麻煩。
3、Interval
Interval項(xiàng)表示job任務(wù)執(zhí)行的時(shí)間間隔,可以不填。如果每填的話默認(rèn)值為null,這樣job就執(zhí)行一次就停止了。如果我們需要定時(shí)執(zhí)行任務(wù),那這項(xiàng)就必填不可了。格式其實(shí)和Next date一樣,這里舉個(gè)例子,如果我需要該任務(wù)每天凌晨?jī)牲c(diǎn)執(zhí)行的話,可以這樣寫:trunc(sysdate)+1+1/12。其他的可以以此類推,就不再說(shuō)明了。
確認(rèn)填寫完成后,單擊”Apply",如果填寫無(wú)誤的話,就生成了一個(gè)job,在dbms_job目錄下可以看到,剛創(chuàng)建好的job編號(hào)是有雙引號(hào)的。填寫有錯(cuò)的話就好好檢查下哪里出了問(wèn)題。另外需要說(shuō)明的是,如果你需要立即執(zhí)行的話,可以選中job,單擊右鍵,選擇"run“,任務(wù)便會(huì)立即執(zhí)行。
以上是我在最近用PL/SQL Developer 創(chuàng)建定時(shí)任務(wù)時(shí)學(xué)習(xí)到的一些小知識(shí),有什么理解的不對(duì)的地方,還請(qǐng)多多指教。
附錄一些常用的job查看sql語(yǔ)句:
select * from dba_jobs; //查看所有用戶的job
select * from dba_jobs_running; //查看當(dāng)前正在運(yùn)行的job
select * from user_jobs; //查看當(dāng)前用戶的job
本文內(nèi)容就是這樣了,希望對(duì)您有所幫助哦~想要了解更多產(chǎn)品的資訊可以繼續(xù)關(guān)注我們哦~您也可以下載PL/SQL Developer免費(fèi)版評(píng)估一下~
相關(guān)內(nèi)容推薦:
想要購(gòu)買PL/SQL Developer正版授權(quán),或了解更多產(chǎn)品信息請(qǐng)點(diǎn)擊