DB2归档日志的开启已经自动备份后清理归档的脚本

2015/05/25 13:44
阅读数 2.6K

前几天一直在纠结DB2归档满了的问题,昨天晚上基本解决。根本原因应该是有数据库进程锁死导致的归档日志产生频繁,最终耗尽磁盘空间。昨天晚上将数据库重启两次,并将日志文件的大小修改为40M之后,现在的归档日志产生速度已经恢复正常。同时重建了归档,并且在牛坑原来的备份脚本中加入了清理归档日志的内容,每次数据库备份完成后会自动清理已经备份过的归档日志,防止长期不清理导致文件系统被撑满。经测试有效。

 

=============================================================

DB2归档日志的开启以及备份脚本(自动清理归档) 
所有操作均在db2inst用户下执行,应用关闭为前提条件。SAMPLE为数据库名。 
1.
查看LOG设置情况 
[db2inst1@localhost backup]$ db2 get db cfg for SAMPLE |grep -i log 
主要查看参数: 
Log file size (4KB) (LOGFILSIZ) = 10000 
*LOG
文件的大小=4KB*10000,即40M 
First active log file = 
*
当前使用的活动日志文件名称,为空表示未启用归档 
First log archive method (LOGARCHMETH1) = OFF 
*LOGARCHMETH1
表示归档类型,OFF为关闭 
2.
为保证归档顺利开启,建议先停止应用连接 
[db2inst1@localhost backup]$ db2 force applications all 
3.
开启归档 
[db2inst1@localhost backup]$ db2 update db cfg for SAMPLE using logretain on 
[db2inst1@localhost backup]$ db2 update db cfg for SAMPLE using LOGARCHMETH1 "DISK:/db2archlog/archivelog" 
*DISK:
表示使用本地磁盘存放归档日志,后面跟路径 
4.
要使归档生效,最好的办法是重启数据库实例 
[db2inst1@localhost backup]$ db2stop force 
[db2inst1@localhost backup]$ db2start 
[db2inst1@localhost backup]$ db2 connect to SAMPLE 
*
重新连接数据库,不出意外的话会报错,报错如下 
SQL1116N A connection to or activation of database "SAMPLE" cannot be made 
because of BACKUP PENDING. SQLSTATE=57019 
*
原因是数据库处于PENDING状态,需要先做一次全备份 
5.
进行一次数据库全备份 
[db2inst1@localhost backup]$ db2 backup db SAMPLE to /db2backup 
*
提示Backup successful. The timestamp for this backup image is : 20131125221418表示成功 
6.
再次连接就可以成功连接了 
[db2inst1@localhost backup]$ db2 connect to SAMPLE 

Database Connection Information 

Database server = DB2/LINUX 9.7.5 
SQL authorization ID = DB2INST1 
Local database alias = SAMPLE 

7.
验证日志归档是否成功 
[db2inst1@localhost backup]$ db2 terminate 
DB20000I The TERMINATE command completed successfully. 
[db2inst1@localhost backup]$ db2 archive log for db sample 
DB20000I The ARCHIVE LOG command completed successfully. 
提示归档成功即可,可以在归档日志目录下看到有.LOG的日志文件生成。 
8.
接着确认数据库实例运行正常之后,就可以开启应用了。 

在线备份脚本,备份完成后自动清理备份过的归档日志。 
=============================== 
cd /db2data/backup_online 
#
进入备份目录 
rm -rf export* 
rm *.001 
#
清理前一次备份内容 
mkdir export`date +%Y-%m-%d` 
cd export`date +%Y-%m-%d` 
db2move SAMPLE export -aw 
#
导出数据,aw参数的意义? 
cd .. 
rm structure_SAMPLE*.sql 
db2look -d SAMPLE -e -c -o structure_SAMPLE_`date +%Y-%m-%d`.sql 
#
导出DDL 
db2 backup db SAMPLE online to /db2data/backup_online/ include logs 
#
在线备份数据库 

FNAME=`find . -type f -name *.001` 
FNAME=${FNAME##*CATN0000.} 
FNAME=${FNAME%%.001*} 
#
获取最新备份的时间标签 
db2 connect to SAMPLE 
db2 prune history $FNAME and delete 
#
清理截止到最新备份的归档日志,从磁盘删除

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部