2008年(239)
分类:
2008-06-17 23:01:37
在DB2系统中,有两种类型的日志文件:主日志文件(primary log file)和辅助日志文件(secondary log file)。通常情况下,事务的日志信息存放在主日志文件中。在系统中存在大数据量处理的事务时,系统才会用到辅助日志文件,有关辅助日志文件的使用以及长事务的实现,可以参见下面的长事务处理。下列数据库配置参数和数据库日志有关:
LOGRETAIN:设定数据库日志的归档模式。
USEREXIT:设定是否启用用户出口标志。
LOGPRIMARY:设定主日志文件的数目。
LOGSECOND:设定辅助日志文件的数目。
LOGFILSIZ:设定一个日志文件的磁盘空间大小。
LOGBUFSZ:设定内存中日志缓冲区的大小。
MINCOMMIT:设定系统提交的事务数。在达到此设定后,日志写进程被激活,将日志缓冲区中的日志信息写入磁盘。
1. 不生成数据库日志
在特殊情况下,要提高数据库系统的处理速度,可以使事务的更新处理不产生日志信息。在DB2系统中,不能对整个数据库进行设置,使针对该数据库中所有表的更新处理都不产生日志信息。可以在一个事务中,改变表的属性,使该事务对表的更新操作不生成日志。这种属性更改,仅仅局限于当前事务,只对当前事务起作用。其他事务对该表的更新处理仍旧要产生日志信息。
另外,向表中插入数据时,可以使用load工具代替import工具。import工具对数据的插入,就好像是用一条条的SQL插入语句,要产生日志信息。而load工具,不但避免了日志信息的生成,而且限制表间参照、触发器等的检查和执行,因而加快了处理速度。
2. 日志文件的归档
DB2数据库系统支持归档日志和非归档日志(DB2资料中称作循环日志)两种模式,确省情况下,数据库处于非归档日志模式。
要使数据库处于归档日志模式,设置LOGRETAIN和USEREXIT这两个参数中的任何一个,或者两个参数都设置。
在归档日志模式下,当前日志文件被写满后,系统就重新生成一个新的日志文件。对日志文件的归档,可以采用自动和手工两种方式。
(1)自动归档。设置USEREXIT数据库参数,数据库就自动归档日志。但在设置该参数前,还需要其他一些操作。
(2)手工归档。定期手工归档、删除日志目录下不再被系统需要的日志文件,从而保证日志目录下有足够的空间,以便系统能够在需要时,产生新的日志文件。
对日志文件自动或者手工归档方式的具体实现,可参看第9章。
3. 长事务的处理
要使DB2系统有足够的日志存放空间,以保证长事务的顺利完成,我们必须要明了主日志文件和辅助日志文件的使用方式。通常情况下,事务的日志信息存放在主日志文件中。配置参数LOGPRIMARY、LOGSECOND设定系统分别创建的主日志文件、辅助日志文件的个数。
在非归档日志模式下,日志文件被循环使用。在处理长事务时,如果所有主日志文件中均包含该长事务的日志信息,也就是所有的主日志文件都处于活动状态,系统就不能覆盖最前面的主日志文件。这时,系统开始循环使用辅助日志文件。在所有辅助日志文件也都写满长事务的日志信息、处于活动状态而长事务仍旧没有结束时,由于没有可用的日志信息存放空间,系统就被迫挂起。
在归档日志模式下,当前日志文件被写满后,系统就重新生成一个新的日志文件。配置参数LOGPRIMARY、LOGSECOND实际上设定可处于活动状态的主日志文件、辅助日志文件的个数。对长事务的处理,类似于上面的非归档日志模式。
要避免系统被挂起,需要有足够的日志存放空间,也就是保证有无限个可被循环使用、或者可被创建的辅助日志文件。将配置参数LOGSECOND设为-1,只要有足够磁盘空间,数据库系统就可以创建无限个辅助日志文件。