windows計劃任務+批次檔實現oracle資料庫的定時備份與恢複

來源:互聯網
上載者:User
1.  備份:1.1.  建立database_exp.bat批次檔

首先首先建立七天的dmp和log空檔案,然後建立一個用於匯出資料庫的批次檔,這個指令碼能夠備份最近七天的資料庫,database_ext.bat內如如下所示:

del f:\mydata_mytest\oradata7.dmp 
del f:\mydata_mytest\oradata7.log
ren f:\mydata_mytest\oradata6.dmp oradata7.dmp
ren f:\mydata_mytest\oradata5.dmp oradata6.dmp
ren f:\mydata_mytest\oradata4.dmp oradata5.dmp
ren f:\mydata_mytest\oradata3.dmp oradata4.dmp
ren f:\mydata_mytest\oradata2.dmp oradata3.dmp
ren f:\mydata_mytest\oradata.dmp oradata2.dmp
ren f:\mydata_mytest\oradata6.log oradata7.log
ren f:\mydata_mytest\oradata5.log oradata6.log
ren f:\mydata_mytest\oradata4.log oradata5.log
ren f:\mydata_mytest\oradata3.log oradata4.log
ren f:\mydata_mytest\oradata2.log oradata3.log
ren f:\mydata_mytest\oradata.log oradata2.log
exp xuwei/xuwei@orcl file=f:\mydata_mytest\oradata.dmp log=f:\mydata_mytest\oradata.log

(ps:2011-12-29)

database_exp.bat解析:上面的批處理語句其實非常簡單,就是讓七個dmp檔案組成一個長度為7的隊列,然後每次備份資料庫的時候刪除隊列頭部,也就是備份最後的那個oracle7.dmp檔案,這個時候oralce6.dmp成為隊列頭部元素,將oralce6.dmp命名為oracle7.dmp,後面的一次類推。知道最後將oracle.dmp重新命名為oracle2.dmp,然後使用exp命令匯出資料庫檔案,匯出的檔案存放在oracle.dmp檔案中。

今天碰到一個問題,就是有一個text.dmp檔案,我只想匯入這個.dmp檔案中的一個表或者是兩個表,那麼應該如何?。其實imp命令有一系列的參數,我們可以通過tables這個參數來控制需要匯入的資料庫表。匯入一張表的情況,匯入命令如下:

imp username/password@SID file=f:\test.dmp tables=WORKFLOW ignore=y

如果是匯入兩張或者兩張表以上,那麼就需要通過括弧括起來,匯入命令如下:

imp username/password@SID file=f:\test.dmp tables=(EMP,WORKFLOW) ignore=y
1.2.  執行database_ext.bat批次檔

可以雙擊這個批次檔,也可以將這個批次檔拖到cmd中執行。

2.  恢複2.1.  建立droptables.sql指令碼

這個sql指令碼是用來執行資料庫預存程序的。droptable.sql的內容如下所示:

execute droptables();
exit
2.2.  建立預存程序       

之所以要執行這個指令碼,是為了在恢複資料庫之前,首先刪除資料庫中的所有已存在的表。

droptables預存程序用來刪除當前資料庫中的所有表,預存程序內容如下所示:

CREATE OR REPLACE 
procedure droptables is
v_sql varchar2(2000) ;
CURSOR cur is select table_name from user_tables order by table_name;
begin for rows in cur loop v_sql := 'drop TABLE ' || rows.table_name||' cascade constraints';
dbms_output.put_line(v_sql);
execute immediate v_sql;
end loop;
execute immediate 'purge recyclebin';
end droptables;

可以在Sql Developer中建立預存程序,如所示:

2.3.  建立imp.bat批次檔

imp.bat這個批次檔用於恢複資料,其原理就是將前面備份的dmp資料庫檔案匯入到資料庫中。imp.bat內容如下所示:

sqlplus xuwei/xuwei@orcl @f:\mydata_mytest\droptables.sql
imp xuwei/xuwei@orcl file=f:\mydata_mytest\oradata.dmp full=y ignore=y
2.4.  bat檔案命名的注意點

上述的兩個批次檔分別命名為database_imp.bat和database_exp.bat,如果命名為imp.bat和exp.bat,雙擊這兩個檔案都會出錯,而將他們拖拽到cmd命令中則能夠正常執行。這是因為批次檔的檔案名稱不能是命令的單詞相同,上述imp和exp都是命令的名字,所以不能用來做bat檔案的檔案名稱。

3.  使用Windows工作排程器

在控制台中開啟計劃任務程式,然後按如進行計劃任務配置。

注意點:如果要是windows系統執行計畫任務,那麼必須開啟計劃任務程式的服務,

計劃任務程式所對應的服務叫做TaskSchedule,如所示:

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.