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,如所示: