IBM DB2 9.7,不能增加LOGFILSIZ或LOGPRIMARY值

我正在使用IBM DB2 9.7 LUW数据库。 我当前的循环日志logging数据库configuration值如下所示:

LOGFILSIZ: 1024 LOGPRIMARY: 13 LOGSECONDARY: 15 

我得到错误,事务日志已满,因此我需要增加日志大小。 我尝试了以下几点:

 LOGFILSIZ: 4000 LOGPRIMARY: 10 LOGSECONDARY: 20 

我也重启了数据库。 LOGSECONDARY改为20,但LOGFILSIZ保持在1024, LOGPRIMARY保持在13。

我是否正在为我的问题更改正确的值,为什么即使重新启动数据库,值也不会改变?

您正在更改正确的参数,但听起来好像您没有真正重新启动数据库,这可以解释为什么LOGSECOND立即生效,但LOGPRIMARYLOGFILSIZ尚未更改。 您可以使用命令GET DATABASE CONFIGURATION FOR <yourdb> SHOW DETAIL查看这些configuration参数的当前值和延迟(待定)值。 我怀疑你会看到LOGPRIMARYLOGFILSIZ的延迟值分别是10和4000。

确保完全回收DB2数据库的最简单方法是停止并重新启动整个实例(使用db2stop forcedb2start命令)。 之后,您可以select使用ACTIVATE DATABASE语句ACTIVATE DATABASE

不过,您不必closures整个DB2实例。 要正确地重新启动DB2数据库,必须将其停用(即,使数据库释放分配给它的所有内存)。 您可以通过杀死与数据库的所有连接(使用FORCE APPLICATION语句),然后(如有必要)发出DEACTIVATE DATABASE语句来完成此操作。 您可以通过发出LIST ACTIVE DATABASES命令来validation数据库是否完全停止 – 如果您的数据库不在返回的列表中,则停止。

在此(或ACTIVATE DATABASE )之后,任何到数据库的新连接都将导致DB2启动有问题的数据库,此时它将使用新参数分配日志文件。

您必须确保更改在磁盘和内存中均有效。 您可以使用db2pd命令(与版本8.2一起发布)或使用上面Ian提到的GET DATABASE CONFIGURATION命令来检查。

主要区别在于db2pd命令不需要连接数据库,因为GET DATABASE CONFIGURATION FOR dbname SHOW DETAIL确实需要连接(注意SHOW DETAIL子句,这需要连接 – 而不是标准的GET DATABASE CONFIGURATION FOR dbname命令)

db2pd -d dbname dbcfg | egrep'LOGFILSIZ | LOGPRIMARY | LOGSECOND'

这将列出以下3个值 –

 Description Memory Value Disk Value Log file size (4KB) (LOGFILSIZ) = 1024 4000 Number of primary log files (LOGPRIMARY) = 13 10 Number of secondary log files (LOGSECOND) = 20 20 

您可能会注意到,LOGSECOND更改在磁盘和内存中立即生效,而另外2个则需要重新启动数据库才能使更改在内存中有效,因此DB实际上正在使用它。

对于重新启动,您可以按照标准顺序 – 停用数据库,closures实例,清理资源,启动实例,然后激活数据库,并validation磁盘和内存上的值是否相同。

  • db2停用db dbname
  • DB2STOP
  • ipclean -a
  • DB2START
  • db2激活db dbname