如何在 DB2 中找出当前事务日志的大小?

Posted

技术标签:

【中文标题】如何在 DB2 中找出当前事务日志的大小?【英文标题】:How to find out current transaction log size in DB2? 【发布时间】:2011-04-12 14:20:12 【问题描述】:

如何找出当前事务日志的大小?是否有可能做例如通过用 SQL 查询一些系统表?找出事务日志的最大大小也很有趣。

是从文件系统中查找的唯一选项吗?

【问题讨论】:

【参考方案1】:

GET DATABASE CONFIGURATION 命令将为您提供有关数据库的所有配置信息。

它包括有关日志文件大小、主要和次要日志文件的数量等信息。示例输出如下。

Log file size (4KB)                         (LOGFILSIZ) = 1024
Number of primary log files                (LOGPRIMARY) = 13
Number of secondary log files               (LOGSECOND) = 4
Changed path to log files                  (NEWLOGPATH) =
Path to log files                                       = D:\DB2\NODE0000\SQL00003\SQLOGDIR\
Overflow log path                     (OVERFLOWLOGPATH) =
Mirror log path                         (MIRRORLOGPATH) =
First active log file                                   =
Block log on disk full                (BLK_LOG_DSK_FUL) = NO
Block non logged operations            (BLOCKNONLOGGED) = NO
Percent max primary log space by transaction  (MAX_LOG) = 0
Num. of active log files for 1 active UOW(NUM_LOG_SPAN) = 0

【讨论】:

是否可以通过对系统表进行一些 SELECT 来获取这些信息? 恕我直言,这个答案更好,因为它不需要数据库连接,可以通过命令行完成。【参考方案2】:

是的,您可以从表 SYSIBMADM.DBCFG 中获取此数据

例如 - 我必须检查数据库日志参数,所以我使用查询:

SELECT * FROM SYSIBMADM.DBCFG
WHERE
    NAME IN ('logfilsiz','logprimary','logsecond')

【讨论】:

【参考方案3】:

也许这是最好的选择 - 以防有人还在寻找:

$ db2 "select * from sysibmadm.MON_TRANSACTION_LOG_UTILIZATION"

LOG_UTILIZATION_PERCENT TOTAL_LOG_USED_KB    TOTAL_LOG_AVAILABLE_KB TOTAL_LOG_USED_TOP_KB MEMBER
----------------------- -------------------- ---------------------- --------------------- ------
                   0.20                18102                8745297                146156      0

  1 record(s) selected.

【讨论】:

以上是关于如何在 DB2 中找出当前事务日志的大小?的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server:如何增加事务日志的大小?

DB2中的正确更新语句,以避免事务日志已满

db2怎么删除数据库的事务日志

DB2日志满解决办法

db2数据库的事务日志已满怎么解决

关于SQL Server事务日志的问题汇总