循环日志和归档日志的选择;
循环日志是默认日志模式,支持rollback,崩溃恢复和back/restore,但无法保留日志,因此不支持前滚恢复,一般用于olap,数据仓库等查询类多的系统。
对于交易型系统,建议采用归档日志,尽管运维相对复杂,但能确保当出现问题需要恢复的时候,可以利用日志进行数据前滚,减少数据丢失。
在循环日志模式下,大对象(LOB)和长字段(long varchar)不记入日志。
37、修改日志空间大小
~>db2 update db cfg for sample using logsecond 20
~>db2 update db cfg for sample using logprimary 20
~>db2 update db cfg for sample using logfilsiz 10000
对某些操作不记录日志,可以使用
db2 +c "alter table Mytable activate not logged initially "
db2 +c "delete from Mytable"
db2 +c "commit" # +c 代表关闭自动提交
38、经常遇到的日志问题
A.事务日志满的问题
1.事务太大,可修改日志空间大小
2.操作数据量很小,早期的事务未提交
通过数据库中的快照(database snapshot)中的“Appl id holding the oldest transaction”找到最早未提交的事务所属的应用,假如这里是228
~>db2 get snapshot for application agentid 228
~>db2 "force application (228)" # 杀掉此应用
3.删除大数据量,可以分次删除,或者使用不记录日志的方法删除
如:load from/dev/null of dev replace into
快速插入1000条数据,验证日志一旦写满就会归档,并不是事务已经提交,并且数据写到磁盘才会归档
db2 +c "begin atomic declare i int default 0;while (i<1000) do insert into t1 values('aaa'||char(i),'bbb'||char(i)); set i = i+1;end while;end"
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/12961536/viewspace-1061368/
,如需转载,请注明出处,否则将追究法律责任。