回复 26# qichang 我这里真无法出现你说的那个问题。我改为50了。那你看看是不是你的活动日志文件夹同时被作为了归档文件夹。。只有你一个用户连接时,你先提交一次,把现在活动日志文件夹中的文件名全记录下来;然后多执行几次UPDATE或insert不提交,直到你看到这个文件夹中的...
显示全部回复 26# qichang 我这里真无法出现你说的那个问题。我改为50了。那你看看是不是你的活动日志文件夹同时被作为了归档文件夹。。
只有你一个用户连接时,你先提交一次,把现在活动日志文件夹中的文件名全记录下来;
然后多执行几次UPDATE或insert不提交,直到你看到这个文件夹中的个数增加了;
然后再对比下现在活动日志文件夹里是否还存在刚才记录下来到文件名。
不存在才是正常的,因为数据库会顺序重命名并重用,然后才会新建文件。
如果存在,那说明同时被作为归档目录了,这个时候你就要看看其他设置了。。
下面是我的执行步骤:
E:\work\test>db2 +c insert into test select * from test1
DB21034E 该命令被当作 SQL 语句来处理,因为它是无效的“命令行处理器”命令。在
SQL 处理期间,它返回:
SQL0964C 数据库的事务日志已满。 SQLSTATE=57011
E:\work\test>db2 get db cfg |find "LOG"
目录高速缓存大小 (4KB) (CATALOGCACHE_SZ) = (MAXAPPLS*5)
日志缓冲区大小 (4KB) (LOGBUFSZ) = 256
日志文件大小 (4KB) (LOGFILSIZ) = 50
主日志文件的数目 (LOGPRIMARY) = 2
辅助日志文件的数目 (LOGSECOND) = 8
已更改的至日志文件的路径 (NEWLOGPATH) =
日志文件路径 = E:\DB2\NODE0000\SQL00
001\LOGSTREAM0000\
溢出日志路径 (OVERFLOWLOGPATH) =
镜像日志路径 (MIRRORLOGPATH) =
首个活动日志文件 = S0000047.LOG
磁盘上已满的块日志 (BLK_LOG_DSK_FUL) = NO
非记录块操作 (BLOCKNONLOGGED) = NO
事务使用的最大主日志空间的百分比 (MAX_LOG)= 0
1 个活动 UOW 的活动日志文件的数目 (NUM_LOG_SPAN) = 0
第一个日志归档方法 (LOGARCHMETH1) = DISK:e:\db\testbak\
logarchmeth1 的归档压缩 (LOGARCHCOMPR1) = ON
logarchmeth1 的选项 (LOGARCHOPT1) =
第二个日志归档方法 (LOGARCHMETH2) = OFF
logarchmeth2 的归档压缩 (LOGARCHCOMPR2) = OFF
logarchmeth2 的选项 (LOGARCHOPT2) =
在索引构建期间记录页 (LOGINDEXBUILD) = OFF
日志 DDL 语句 (LOG_DDL_STMTS) = NO
日志应用程序信息 (LOG_APPL_INFO) = NO
左边为归档日志文件夹,右边为活动日志文件夹。
活动日志里的文件个数最多为10个。修改参数后db2 terminate ,然后再connect,活动日志文件夹只会有2个,因为我设置LOGPRIMARY
=2;
是活动日志满,因为前面的9个文件都顺序写完了,所以复制到归档里了,只有最后一个日志S0000056.LOG没有写完,只在活动日志里,没有在归档文件夹里;前面9个就算是回滚了,依旧在归档里。
这就是前面说的归档和提交、未提交、回滚都没有关系,只要这个文件写满了就被归档。
收起