1.引言
創(chuàng)新互聯(lián)公司專注于企業(yè)全網(wǎng)營銷推廣、網(wǎng)站重做改版、漢陽網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5建站、購物商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為漢陽等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
定制定時(shí)執(zhí)行的任務(wù)有兩種形式,系統(tǒng)級(jí)別和數(shù)據(jù)庫級(jí)別,
從操作系統(tǒng)級(jí)別來講,
windows系統(tǒng)我們可以使用任務(wù)計(jì)劃來實(shí)現(xiàn),
對(duì)于winXP系統(tǒng),設(shè)置步驟如下,開始---設(shè)置---控制面板---任務(wù)計(jì)劃,然后添加任務(wù)計(jì)劃,按向?qū)瓿膳渲眉纯?
對(duì)于win7系統(tǒng),設(shè)置步驟如下,點(diǎn)擊開始,然后在 搜索程序和文件 框中輸入 [任務(wù)計(jì)劃],然后點(diǎn)擊出來的任務(wù)計(jì)劃程序,創(chuàng)建一個(gè)基本任務(wù)即可;
linux系統(tǒng)我們可以使用crontab命令來是實(shí)現(xiàn),
關(guān)于crontab命令的使用可以見之前的博客
從數(shù)據(jù)庫級(jí)別來講,我們可以采用數(shù)據(jù)庫的job來實(shí)現(xiàn);
本節(jié)主要介紹通過oracle數(shù)據(jù)庫的job來定制一個(gè)簡單的定時(shí)執(zhí)行任務(wù)。本節(jié)會(huì)采用oracle定制一個(gè)定時(shí)向一個(gè)表中插入語句。
這里聊一下我做這個(gè)oracle定時(shí)任務(wù)的緣由:
項(xiàng)目中要在固定的時(shí)間,把一個(gè)數(shù)據(jù)庫中某些表的數(shù)據(jù)同步到另外一個(gè)數(shù)據(jù)庫,顯然這些工作我不能每次都自己去做,
那么,我要怎么來做呢?這個(gè)時(shí)候oracle的定時(shí)執(zhí)行任務(wù)JOB無疑是我的最佳選擇。我把同步的腳本放在一個(gè)存儲(chǔ)過程中,
然后在固定的時(shí)間去執(zhí)行這個(gè)存儲(chǔ)過程就OK了。
注意:以下所有的操作都是在sytem用戶下執(zhí)行。采用PL/SQL做的客戶端登陸。
oracle數(shù)據(jù)庫如何啟動(dòng)時(shí)自動(dòng)執(zhí)行定時(shí)任務(wù)job
job定時(shí)任務(wù)需要依托存儲(chǔ)過程。
1、創(chuàng)建存儲(chǔ)過程:create or replace procedure MYPROC as
begin
insert into TEST values(sysdate);
end;
2、創(chuàng)建job
variable job1 number;
begin
dbms_job.submit(:job1,'MYPROC;',trunc(sysdate+1),'sysdate+1');--從今晚12開始運(yùn)行,以后每天運(yùn)行一次
end;
你先把你查詢出來的內(nèi)容保存為一個(gè)文件,然后做一個(gè)批處理文件執(zhí)行這個(gè)保存好的文件,請(qǐng)參考一下文檔.
樓主:供參考
利用任務(wù)計(jì)劃、批處理文件和ORACLE的EXP導(dǎo)出功能,可以根據(jù)日期自動(dòng)生成ORACLE備份文件,大大方便了ORACLE數(shù)據(jù)備份。
建議一(做周備份并壓縮為RAR)以下為ORACLE 自動(dòng)備份批處理文件內(nèi)容,請(qǐng)配合任務(wù)計(jì)劃實(shí)現(xiàn) :
例:
@ECHO OFF
SET BACKPATH=d:\
ECHO 準(zhǔn)備備份數(shù)據(jù)庫
REM 7天一個(gè)循環(huán)
IF EXIST %BACKPATH%\ONE GOTO ONE
IF EXIST %BACKPATH%\TWO GOTO TWO
IF EXIST %BACKPATH%\THREE GOTO THREE
IF EXIST %BACKPATH%\FOUR GOTO FOUR
IF EXIST %BACKPATH%\FIVE GOTO FIVE
IF EXIST %BACKPATH%\SIX GOTO SIX
IF EXIST %BACKPATH%\SEVEN GOTO SEVEN
ECHO E %BACKPATH%\ONE
:ONE
SET BACKPATH_FULL=%BACKPATH%\ONE
REN %BACKPATH%\ONE TWO
GOTO BACK
:TWO
SET BACKPATH_FULL=%BACKPATH%\TWO
REN %BACKPATH%\TWO THREE
GOTO BACK
:THREE
SET BACKPATH_FULL=%BACKPATH%\THREE
REN %BACKPATH%\THREE FOUR
GOTO BACK
:FOUR
SET BACKPATH_FULL=%BACKPATH%\FOUR
REN %BACKPATH%\FOUR FIVE
GOTO BACK
:FIVE
SET BACKPATH_FULL=%BACKPATH%\FIVE
REN %BACKPATH%\FIVE SIX
GOTO BACK
:SIX
SET BACKPATH_FULL=%BACKPATH%\SIX
REN %BACKPATH%\SIX SEVEN
GOTO BACK
:SEVEN
SET BACKPATH_FULL=%BACKPATH%\SEVEN
REN %BACKPATH%\SEVEN ONE
GOTO BACK
:BACK
EXP ccense/ccense FILE=%BACKPATH_FULL%.DMP
RAR a %BACKPATH_FULL%.rar %BACKPATH_FULL%.DMP
DEL %BACKPATH_FULL%.DMP
SET BACKPATH=
SET BACKPATH_FULL=
EXIT
說明:
文件名以星期來命名
備份后調(diào)用rar進(jìn)行壓縮
這樣可以保存一個(gè)星期的歷史數(shù)據(jù)
注意:需要把program files/winrar目錄下的rar.exe拷貝到系統(tǒng)system32目錄下
建議二:
1,批處理文件backup.bat\.
exp system/manager file=d:\backup\oracle\oracle%date:~0,10%.dmp owner=system log=d:\backup\oracle\oracle%date:~0,10%.log
將生成oracle2006-01-09.dmp文件
exp system/manager file=d:\backup\oracle\oracle%date:~11,3%.dmp owner=system log=d:\backup\oracle\oracle%date:~11,3%.log
將生成oracle星期一.dmp文件,則每周循環(huán)保留一個(gè)備份文件,共7個(gè)備份文件循環(huán) $date$日期參數(shù)可靈活運(yùn)用。
1,創(chuàng)建一個(gè)存儲(chǔ)過程 bb 作用是往pig表中插入數(shù)據(jù)
SQL create or replace procedure JOB_PRO_TEST as
2 begin
3 insert into JOB_TEST values(sysdate);
4 end;
5 /
Procedure created
2,創(chuàng)建一個(gè)job,名稱為job2010 ;作用是每分鐘(60×24=1440)執(zhí)行一次存儲(chǔ)過程JOB_PRO_TEST。
SQL variable job2010 number;
SQL begin
2 dbms_job.submit(:job2010,'JOB_PRO_TEST;',sysdate,'sysdate+1/1440');
3 end;
4 /
注意:這里系統(tǒng)自動(dòng)生成job id 為41
PL/SQL procedure successfully completed
job2010
---------
41
3,運(yùn)行job2010
SQL begin
2 dbms_job.run(:job2010);
3 end;
4 /
PL/SQL procedure successfully completed
job2010
---------
41
4,刪除job2010
SQL begin
2 dbms_job.remove(:job2010);
3 end;
4 /