- 论坛徽章:
- 0
|
数据库报了这个错3个多小时
2012-03-01-05.09.32.679655+480 E54054E598 LEVEL: Error
PID : 6012 TID : 47665446381888PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000 DB : LMSTMP
APPHDL : 0-37812 APPID: 192.168.100.100.4531.1202291728
AUTHID : DB2ADMIN
EDUID : 2961 EDUNAME: db2agent (LMSTMP) 0
FUNCTION: DB2 UDB, data protection services, sqlpgResSpace, probe:2860
MESSAGE : ADM1823E The active log is full and is held by application handle
"21756..". Terminate this application by COMMIT, ROLLBACK or FORCE
APPLICATION.
2012-03-01-05.09.32.691668+480 I54653E558 LEVEL: Error
PID : 6012 TID : 47665446381888PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000 DB : LMSTMP
APPHDL : 0-37812 APPID: 192.168.100.100.4531.1202291728
AUTHID : DB2ADMIN
EDUID : 2961 EDUNAME: db2agent (LMSTMP) 0
FUNCTION: DB2 UDB, data protection services, sqlpWriteLR, probe:6680
MESSAGE : ZRC=0x85100009=-2062548983=SQLP_NOSPACE
"Log File has reached its saturation point"
DIA8309C Log file was full.
个人觉得意思是21756这个应用提交的东西太多了,但是没有commit造成这种情况。而且报了sqlcode964这个错也3个多小时,但是数据库自己没有回滚,为什么呢?
2012-03-01-06.23.52.652018+480 I62343E834 LEVEL: Severe
PID : 6012 TID : 47665358301504PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000 DB : LMSTMP
APPHDL : 0-38469 APPID: 192.168.100.100.4762.1202292220
AUTHID : DB2ADMIN
EDUID : 2412 EDUNAME: db2agent (LMSTMP) 0
FUNCTION: DB2 UDB, relation data serv, sqlrr_array_input, probe:210
DATA #1 : SQLCA, PD_DB2_TYPE_SQLCA, 136 bytes
sqlcaid : SQLCA sqlcabc: 136 sqlcode: -964 sqlerrml: 0
sqlerrmc:
sqlerrp : SQLRI03B
sqlerrd : (1) 0x85100009 (2) 0x00000009 (3) 0x00000000
(4) 0x00000000 (5) 0xFFFFF88E (6) 0x00000000
sqlwarn : (1) (2) (3) (4) (5) (6)
(7) ( (9) (10) (11)
sqlstate:
查了一下:
C:\Documents and Settings\Administrator>db2 ? sql964
SQL0964C 数据库的事务日志已满。
说明:
已使用事务日志中的所有空间。
如果使用具有辅助日志文件的循环日志,那么尝试分配和使用这些日志。当文件
系统没有更多空间时,不能使用辅助日志。
如果使用归档日志,那么文件系统不提供空间来包含新日志文件。
当数据库几乎已用完所有可能的日志序号时,也会返回此消息。数据库管理器使
用称为日志序号(LSN)的唯一标识来标识数据库日志记录。日志序号是范围介于
0x0000 0000 0000 到 0xFFFF FFFF FFFF 之间的 6 字节十六进制数。当事务导
致写入数据库日志时,数据库将使用新的 LSN 值。
应用程序无法执行任何导致数据库写入日志记录的事务。
无法处理该语句。
用户响应:
在接收到此消息(SQLCODE)时,执行 COMMIT 或 ROLLBACK,或再次尝试执行该
操作。
如果并发应用程序正在更新数据库,那么再次尝试执行该操作。当另一个应用程
序完成事务时,可能释放日志空间。
发出更频繁的落实操作。如果事务还未落实,那么当落实事务时,可能会释放日
志空间。设计应用程序时,应考虑何时落实更新事务,以防止发生日志已满的情
况。
如果发生死锁,那么更频繁地对它们进行检查。这可以通过减小数据库配置参数
DLCHKTIME 来实现。这将检测到死锁,并且很快解决(通过 ROLLBACK),这将释
放日志空间。
如果经常发生这种情况,那么增大数据库配置参数以允许更大的日志文件。更大
的日志文件需要更多空间,但是减少了应用程序再次尝试执行该操作的需要。可
能需要调整的事务配置参数是 LOGFILSIZ、LOGPRIMARY 和 LOGSECOND。有关事务
日志的更多信息,请使用诸如"事务日志"之类的短语在 DB2 信息中心中进行搜索
。
如果正在安装样本数据库,那么删除它并再次安装样本数据库。
如果由于数据库几乎用完所有可能的 LSN 值而返回此消息,那么您可以通过执行
以下操作将 LSN 值复位为零:
1. 卸载数据库中的所有数据
2. 删除并重新创建数据库
3. 装入所有数据
sqlcode:-964
sqlstate:57011
一直困惑的就是,这个错应该是事物日志已满,但是事物日志满了后数据库不应该是自动回滚吗?为什么没有回滚呢?后来还是手动把21756这个应用给杀了的。另外数据库采用的是归档日志模式,查了下归档日志的确数量很大,但是离磁盘写满还是差太远了,这根数据库没有自动回滚有关系吗?
求教ing。。。。。有哪位知道的给个解答,越详细愈好,谢谢哇@!!!
附:
db2 get db cfg for lmstmp |grep -i log
Log file size (4KB) (LOGFILSIZ) = 10240
Number of primary log files (LOGPRIMARY) = 20
Number of secondary log files (LOGSECOND) = 4
帖子别的论坛也发过,希望尽快得到解答!!! |
|