技术开发 频道

使用Java让DB2数据库自动备份的方法

【IT168 技术】  步骤如下:

  (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("db2cmd /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命令不支持将备份文件直接备份到网络硬盘上,将提示无法识别盘符。可根据需求选择离线备份或者在线备份。
 

0
相关文章