DB2离线备份最简单的命令可以是这样:db2 backup db sample to c:\db2bak  


 但实际做定时备份时哪这么简单,我整理了UNIX/Linux及Windows下做定时离线备份的脚本.


很好用的.


UNIX/Linux:


1. 新建目录并授权以便存放备份文件


[root@O11g64 tmp]# id db2inst1


uid=1051(db2inst1) gid=1010(db2iadm1) groups=1010(db2iadm1),1020(db2fadm1)



mkdir /db2bak


chown -R db2inst1:db2iadm1 /db2bak



2. 新建BAT文件db2bkoffline.sh


#author:xiongchuanliang
#停顿数据库
db2 connect to xcldb
db2 quiesce database immediate force connections
db2 connect reset
#断开所有应用
db2 force application all
#离线备份
db2 backup db xcldb to "/db2bak" with 2 buffers buffer 1024 parallelism 1 without prompting
#取消数据库停顿
db2 connect to xcldb
db2 unquiesce database
db2 connect reset
exit




3. 授权


 chmod a+x /tmp/db2bkoffline.sh


4. 运行备份


    su - db2inst1 -c "/tmp/db2bkoffline.sh" >> /db2bak/db2bkoffline.log




Windows下:


1. 新建BAT文件db2bkoffline.bat


;;author:xiongchuanliang
;;停顿数据库
db2 connect to xcldb
db2 quiesce database immediate force connections
db2 connect reset
;;断开所有应用
db2 force application all
;;离线备份
db2 backup db xcldb to "c:\\db2bak" with 2 buffers buffer 1024 parallelism 1 without prompting
;;取消数据库停顿
db2 connect to xcldb
db2 unquiesce database
db2 connect reset
exit;


2. 运行备份


db2cmd /c /w /i db2bkoffline.bat >> c:\\db2bkoffline.log



参数说明:


-- 2 buffers : 两个缓存


-- buffer 1024 : 缓存大小为1024


-- parallelism 1 : 并行度


上面这些参数在备份时,如果不指定DB2会自动调整成相关值.




离线备份的恢复也很简单


db2 list history backup all for xcldb


db2 resotre db xcldb from /db2bak taken at 时间戳 


-- 结束DB  pending状态


db2 rollforward db xcldb stop