以下的文章主要描述的是实现DB2数据库自动备份的实际操作步骤的描述,首先我们是从编写BAK.java的实际操作代码开始的,以下就是文章的主要内容的详细描述,望大家在浏览之后会对其有更深的了解。
步骤如下:
(1) 编写BAK.java,代码如下:(一周内周六完备、其他日期增量备份)
import java.util.Date; public class BAK {
public static void main(String[] args)
throws Exception{ Runtime runtime
= Runtime.getRuntime();
|
断开数据库连接
Process proc = runtime.exec("db2cmd /c db2 force application all");
只保留一天的DB2数据库自动备份
runtime.exec("del d:\\backup\\db2bak\\autobak
\\DATACTR.0\\ /S /F /Q");
runtime.exec("del d:\\backup\\db2bak
\\autobak\\RONE.0\\ /S /F /Q");
暂停n秒
Thread.currentThread().sleep(5000);
关闭上述进程
proc.destroy();
暂停n秒,等待数据库连接断开
Thread.currentThread().sleep(5000);
|
备份
proc = runtime.exec("db2cmd db2 backup db DATACTR");
Thread.currentThread().sleep(5000); proc.destroy();
Date date = new Date(); int dayOfTheWeek = date.getDay();
if (dayOfTheWeek != 6){
不是周六,进行增量DB2数据库自动备份
proc = runtime.exec("db2cmd db2 backup db yndc incremental");
proc = runtime.exec("db2cmd /c db2 backup db yndc incremental"); }
else{ 是周六,进行完全备份
proc = runtime.exec("db2cmd /c db2 backup db yndc"); }
proc = runtime.exec("db2cmd db2 backup db gather");
proc = runtime.exec("db2cmd /c db2 backup db codebase");
proc = runtime.exec("db2cmd /c db2 backup db rone");
proc = runtime.exec("db2cmd db2 backup db datactr");
暂停5秒
Thread.currentThread().sleep(5000); proc.destroy();
restart db2 proc = runtime.exec("db2start"); 暂停5秒
Thread.currentThread().sleep(5000); proc.destroy(); runtime.exit(0); } }
|
(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数据库自动备份,定时将备份目录压缩至另一台机器的硬盘上(可映射成本地机器的网络硬盘。)
注意:db2 backup命令不支持将备份文件直接备份到网络硬盘上,将提示无法识别盘符。可根据需求选择离线备份或者在线备份。
(实习编辑:HJ)