Chinaunix

标题: 问几个关于日志的基础问题 [打印本页]

作者: god的爹    时间: 2007-11-23 10:08
标题: 问几个关于日志的基础问题
1、在一个事务运行的过程中,我怎么样才能看到联机事务日志的使用情况。
2、联机事务的个数是不是/home/db2data/db2inst1/NODE0000/SQL00001/SQLOGDIR/目录下有几个文件就有几个联机日志,但是为什么有时候少几个,有时候多几个(我使用的归档模式)
3、如果联机日志有多个的话,当一个事务占满一个联机日志后,这个事务会继续占用其他的联机日志吗?我有时候会遇到日志满的情况,这种情况是因为一个事务占满所有的联机日志了吗?因为我觉得,归档模式下,前面的事务日志应该可以被归档到文件里面去。

以上几个问题麻烦高手解释一下,我刚学db2,手上没什么资料,以前搞的sybase,和这个有很大的区别。日志模式不太一样,谢谢。
作者: god的爹    时间: 2007-11-23 10:36
怎么没什么人气啊?高手都在忙啊
作者: god的爹    时间: 2007-11-23 17:21
自己顶!!
作者: huyuhui001    时间: 2007-11-23 21:26
1、在一个事务运行的过程中,我怎么样才能看到联机事务日志的使用情况。
A:在事务运行的时候,可以通过db cfg里面的First active log file来看到当前第一个active的log file,然后可以对照db cfg里面的Path to log files 来找到当前数据库的log files的路径,二者编号的差值反映了当前数据库的log占用情况,可以根据LOGFILSIZ来进行计算。

2、联机事务的个数是不是/home/db2data/db2inst1/NODE0000/SQL00001/SQLOGDIR/目录下有几个文件就有几个联机日志,但是为什么有时候少几个,有时候多几个(我使用的归档模式)
A:日志有多有少,是取决你看到那个时刻的数据量,这个是没有规定的。

3、如果联机日志有多个的话,当一个事务占满一个联机日志后,这个事务会继续占用其他的联机日志吗?我有时候会遇到日志满的情况,这种情况是因为一个事务占满所有的联机日志了吗?因为我觉得,归档模式下,前面的事务日志应该可以被归档到文件里面去。
A:在归档模式下出现日志满的情况,个人怀疑是你的file system full,如果你能把db2diag.log里面的内容帖上来,有助于找出问题。

以上几个问题麻烦高手解释一下,我刚学db2,手上没什么资料,以前搞的sybase,和这个有很大的区别。日志模式不太一样,谢谢。
A:关于DB2的资料,最全的还是infocenter,下面是V8和V9的连接,供参考。
http://publib.boulder.ibm.com/infocenter/db2luw/v8//index.jsp
http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp
作者: god的爹    时间: 2007-11-24 10:06
太感谢huyuhui001版主了。基本了解了。
不过感觉db2对联机日志的使用情况的监控好像不是很直观哦,还要自己去计算。
再问个问题,在数据库配置里面有个参数是Log file size,我配置的是250000,每个4k,log file size大小也就是1000M,这个大小是否表示每个日志文件的最大容量。
作者: huyuhui001    时间: 2007-11-25 10:08
对的,单个日志文件的最大值
作者: god的爹    时间: 2007-11-25 13:19
谢谢版主。其实我现在在做一个试验。就是在把数据库装数据的文件cp出来保存,然后把这之后的日志文件也cp出来,看能不能恢复数据库,假设没有对数据库做backup,只有数据库的数据文件,以及之后的log文件。我现在可以通过cp出来的data文件和log文件启动数据库,但是不知道怎么通过日志文件恢复数据库。版主有没有什么办法。我对db2不熟哦。
作者: huyuhui001    时间: 2007-11-25 14:20
你的这种方法通常在production上面是不可行的,因为数据每时每刻都在变化。最常用的方法就是在归档模式下,使用备份文件进行恢复,并结合log files进行前滚。具体操作步骤,在论坛里面有很多帖子,很清晰的,你可以参考,自己做试验。
作者: god的爹    时间: 2007-11-26 08:56
也就是说不能在没有backup原库的情况下,直接使用保留的日志文件和数据文件恢复数据库了哦
作者: pjj0618    时间: 2007-11-26 10:11
原帖由 god的爹 于 2007-11-26 08:56 发表
也就是说不能在没有backup原库的情况下,直接使用保留的日志文件和数据文件恢复数据库了哦

你使用的归档日志模式,那么没有数据库备份的情况下恢复数据是不可能的,即使你有你cp的数据文件。
如何在归档日志模式下恢复数据库资料很多,你可以在论坛里搜索一下。
另外,关于你的问题2,日志已满是指在你单个事物执行中,所有的日志空间都不能满足所需的日志大小的时候就会报错。你可以增大日志文件大小,或者在事物中添加阶段提交的命令来释放日志。
作者: god的爹    时间: 2007-11-27 13:27
可以利用日志文件来恢复数据,我用是db2 recover db db_test to end of logs,测试了,可行。谢谢你的答复。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2