WEB开发网
开发学院数据库DB2 DB2事务日志使用经验 阅读

DB2事务日志使用经验

 2008-11-24 16:34:15 来源:WEB开发网   
核心提示: C:Documents and Settingsadministrator>db2 "insert into test values(1112,1,’sdfsdfsdfsdf’,’sdfsdfsdfsdfsdf’,&rsquo

C:Documents and Settingsadministrator>db2 "insert into test values(1112,1,’sdfsdfsdfsdf’,’sdfsdfsdfsdfsdf’,’sdfsdfsdffsdfsd’)

DB21034E 该命令被当作 SQL 语句来处理,因为它是无效的“命令行处理器”命令。在

SQL 处理期间,它返回:

SQL0964C 数据库的事务日志已满。 SQLSTATE=57011

可以看到,当日志满的时候其他的任何记日志的操作都将不能进行,所以整个系统基本处于不可用的状态,除非等事务回滚结束。

OK,事务日志满的情况出现,现在我们就根据日志满的日志,来逆向分析是哪个操作导致的该问题,分析步骤如下:

首先,确定哪个应用的事务占用了大量的日志空间:

在回话2中执行: 

  C:Documents and Settingsadministrator>db2pd -db sample -transactions
  Database Partition 0 -- Database SAMPLE -- Active -- Up 0 days 00:02:27
  Transactions:
  Address AppHandl [nod-index] TranHdl Locks State Tflag Tflag2
  Firstlsn Lastlsn LogSpace SpaceReserved TID
  AxRegCnt GXID
  …..
  0x7FC21A80 7 [000-00007] 2 10 WRITE 0x00000000 0x00000
  000 0x00003D86000C 0x000048C4FCD0 14014572 201955470 0x000000004F91
  1 0
  …..

可以看到上面红色部分, AppHandl为7的应用的一个事务占用了大量的日志。如果有多个应用占用了大量的日志,我们可以按照下面的方法逐个分析,看每个应用是执行了什么sql导致的占用如此大的日志。

然后使用db2pd确定这个日志执行了什么语句导致占用了大量的日志: 

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:DB 事务 日志

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接