步驟如下:
(1) 編寫BAK.Java,代碼如下:(一周內周六完備、其他日期增量備份)
1 import Java.util.Date;
2 public class BAK {
3 public static void main(String[] args) throws Exception{
4 Runtime runtime = Runtime.getRuntime();
5 //斷開數據庫(數據庫培訓 數據庫認證 )連接
6 Process proc = runtime.exec("DB2(DB2認證 DB2培訓 )cmd /c db2 force application all");
7 //只保留一天的備份
8 //runtime.exec("del d:\\backup\\db2bak\\autobak\\DATACTR.0\\ /S /F /Q");
9 //runtime.exec("del d:\\backup\\db2bak\\autobak\\RONE.0\\ /S /F /Q");
10 //—————————————————————
11 //暫停n秒
12 Thread.currentThread().sleep(5000);
13 //關閉上述進程
14 //proc.destroy();
15 //————————————–
16 //暫停n秒,等待數據庫連接斷開
17 //Thread.currentThread().sleep(5000);
18 //備份
19 //proc = runtime.exec("db2cmd db2 backup db DATACTR");
20 //Thread.currentThread().sleep(5000);
21 //proc.destroy();
22 //————————————–
23 Date date = new Date();
24 int dayOfTheWeek = date.getDay();
25 if (dayOfTheWeek != 6){
26 //不是周六,進行增量備份
27 // proc = runtime.exec("db2cmd db2 backup db yndc incremental");
28 proc = runtime.exec("db2cmd /c db2 backup db yndc incremental");
29 }
30 else{
31 //是周六,進行完全備份
32 proc = runtime.exec("db2cmd /c db2 backup db yndc");
33 }
34 //proc = runtime.exec("db2cmd db2 backup db gather");
35 proc = runtime.exec("db2cmd /c db2 backup db codebase");
36 proc = runtime.exec("db2cmd /c db2 backup db rone");
37 //proc = runtime.exec("db2cmd db2 backup db datactr");
38 //暫停5秒
39 //Thread.currentThread().sleep(5000);
40 //proc.destroy();
41 //————————————–
42 //restart db2
43 //proc = runtime.exec("db2start");
44 //暫停5秒
45 //Thread.currentThread().sleep(5000);
46 //proc.destroy();
47 //————————————–
48 runtime.exit(0);
49 }
50 }
(2)編寫run.bat,編譯BAK.java並執行(注意需設置Windows環境變量指向jdk的bin目錄,在cmd下敲入命令"java"能找到這個命令,以支持編譯和執行BAK.Java
javac -deprecation BAK.Java
Java BAK
(3)通過Windows的任務計劃每天晚上定時調用run.bat進行數據庫備份,譬如每晚22:00
(4)配合winzip軟件可實現數據庫的異機備份,定時將備份目錄壓縮至另一台機器的硬盤上(可映射成本地機器的網絡硬盤。)
注意:db2 backup命令不支持將備份文件直接備份到網絡硬盤上,將提示無法識別盤符。可根據需求選擇離線備份或者在線備份。