如何查看db2的数据库的日志文件

如何查看db2的数据库的日志文件,第1张

在日常DB2的维护中,transaction log full是比较常见的问题,日志空间使用情况也是我们比较重视的问题,那么如何查看日志空间使用情况呢?

其实昨天在提到归档设置,我们知道DB2 在DATABASE级别有几个参数,如下决定了事物日志的使用空间大小

Log file size (4KB)(LOGFILSIZ) = 60000

Number of primary log files(LOGPRIMARY) = 16

Number of secondary log files (LOGSECOND) = 200

Changed path to log files (NEWLOGPATH) =

Path to log files = /db2inst1_log01/sample

如此我们可以计算分配给日志的空间大约是(200+16)*60000*4/1024/1024大约50GB。

如果日志是单独的文件系统分区,我们在 *** 作系统上即可看到日志空间使用情况,对日志使用情况进行监控,可以看到如下信息:

$ df -g

Filesystem GB blocks Free %UsedIused %Iused Mounted on

/dev/db2inst1_log0160.0054.50 10%14581% /db2inst1_log01

这个需要登录到系统,其实db2pd也是可以看到日志信息的

db2pd -d sample -logs

Database Partition 0 -- Database SAMPLE -- Active -- Up 34 days 17:30:12 -- Date 2013-11-26-10.42.49.558342

Logs:

Current Log Number117123

Pages Written33697

Cur Commit Disk Log Reads0

Cur Commit Total Log Reads0

Method 1 Archive Status Success

Method 1 Next Log to Archive 117123

Method 1 First Failuren/a

Method 2 Archive Status n/a

Method 2 Next Log to Archive n/a

Method 2 First Failuren/a

Log Chain ID 2

Current LSN 0x00001A2DDE649E70

AddressStartLSNState Size Pages Filename

0x0700000177B795D0 00001A2CBFD88010 0x00000000 60000 60000 S0117104.LOG

0x0700000177B806D0 00001A2CCE7E8010 0x00000000 60000 60000 S0117105.LOG

0x0700000177B8B450 00001A2CDD248010 0x00000000 60000 60000 S0117106.LOG

0x0700000177B82EF0 00001A2CEBCA8010 0x00000000 60000 60000 S0117107.LOG

0x0700000177B9ECD0 00001A2CFA708010 0x00000000 60000 60000 S0117108.LOG

0x0700000177BA27D0 00001A2D09168010 0x00000000 60000 60000 S0117109.LOG

0x0700000177B79E30 00001A2D17BC8010 0x00000000 60000 60000 S0117110.LOG

0x0700000177BAAD50 00001A2D26628010 0x00000000 60000 60000 S0117111.LOG

0x0700000177B9FFD0 00001A2D35088010 0x00000000 60000 60000 S0117112.LOG

0x0700000177BB44D0 00001A2D43AE8010 0x00000000 60000 60000 S0117113.LOG

0x0700000177BD45D0 00001A2D52548010 0x00000000 60000 60000 S0117114.LOG

0x0700000177B7F0D0 00001A2D60FA8010 0x00000000 60000 60000 S0117115.LOG

0x0700000177B9C850 00001A2D6FA08010 0x00000000 60000 60000 S0117116.LOG

0x0700000177B84750 00001A2D7E468010 0x00000000 60000 60000 S0117117.LOG

0x0700000177B877D0 00001A2D8CEC8010 0x00000000 60000 60000 S0117118.LOG

0x0700000177B857D0 00001A2D9B928010 0x00000000 60000 60000 S0117119.LOG

0x0700000177B7DC50 00001A2DAA388010 0x00000000 60000 60000 S0117120.LOG

0x0700000177B83750 00001A2DB8DE8010 0x00000000 60000 60000 S0117121.LOG

0x0700000177B907B0 00001A2DC7848010 0x00000000 60000 60000 S0117122.LOG

0x0700000177B91010 00001A2DD62A8010 0x00000000 60000 60000 S0117123.LOG

0x0700000177B9A150 00001A2DE4D08010 0x00000000 60000 60000 S0117124.LOG

不过之只能看到当前使用日志和日志文件对应的LSN信息和归档情况,对于使用率还真不能看到。

另外还可以在实例快照中看到,不过在此不示例了。

但是上面我们需要登录到 *** 作系统上,如何在远端通过SQL查询呢,其实DB2还是提供了蛮多的方法。

a.通过管理视图查询:

select DB_NAME, LOG_UTILIZATION_PERCENT, TOTAL_LOG_USED_KB,TOTAL_LOG_AVAILABLE_KB,TOTAL_LOG_USED_TOP_KB, DBPARTITIONNUM from SYSIBMADM.LOG_UTILIZATION

DB_NAMELOG_UTILIZATION_PERCENT TOTAL_LOG_USED_KBTOTAL_LOG_AVAILABLE_KB TOTAL_LOG_USED_TOP_KB DBPARTITIONNUM

-------------------------------------------------------------------------------------------------------------------------------- ----------------------- -------------------- ---------------------- --------------------- --------------

DSS8.97 4631824 46955050 16655013 0

非常清楚一目了然吧,对于监控事物日志使用情况,及早发现事务日志空间满问题很有帮助。

b.还有一种方法,就是查看快照视图:

select int(total_log_used/1024/1024) as "Log Used (Mb)",int(total_log_available/1024/1024) as "Log Space Free(Mb)",

int((float(total_log_used)/float(total_log_used+total_log_available))*100) as "Pct Used",int(tot_log_used_top/1024/1024) as "Max Log Used (Mb)",

int(sec_log_used_top/1024/1024) as "Max Sec. Used (Mb)",int(sec_logs_allocated) as "Secondaries" from sysibmadm.snapdb

Log Used (Mb) Log Space Free(Mb) Pct UsedMax Log Used (Mb) Max Sec. Used (Mb) Secondaries

------------- ------------------ ----------- ----------------- ------------------ -----------

4544 45833 916264 12532 5

1 record(s) selected.

其实还有一种通过表函数的方法,不过需要带入参数:

select DB_NAME,TOTAL_LOG_AVAILABLE,TOTAL_LOG_USED,SEC_LOG_USED_TOP,SEC_LOGS_ALLOCATED from table(SNAP_GET_DB('SAMPLE',0))

DB_NAME TOTAL_LOG_AVAILABLE TOTAL_LOG_USED SEC_LOG_USED_TOPSEC_LOGS_ALLOCATED

-------------------------------------------------------------------------------------------------------------------------------- -------------------- -------------------- -------------------- --------------------

SAMPLE 48045192251 4779767749 131417734175

1 record(s) selected

看吧,DB2查看日志空间的方法真的很多,不能不说提供了强大的用户接口,就看大家怎么用了。

转载仅供参考,版权属于原作者。祝你愉快,满意请采纳哦

在数据库中,日志的重要性那是大大的大,所以日志一定是要先了解的.

日志类型:

主日志(Primary logs)

预分配,可用数目由db cfg的LOGPRIMARY参数规定

辅助日志(Secondary logs)

依需要再动态分配,最大数目由db cfg的LOGSECOND参数来定.辅助日志同时会在数据库

所有连接全部关闭后被删除.

如果LOGSECOND为-1,则不限制记录日志的大小.

日志记录类型:

有两类循环日志和归档日志,可以通过"配置数据库日志记录"向导来修改数据库的日志记录类型。

(1)循环日志:

默认的日志记录策略,循环日志按顺序使用。当日志中所包含的工作已提交或回滚时,可以重用。

主日志预先分配。 而辅助日志则在需要时才分配。

循环日志有两类日志,主日志和辅助日志.

主日志预先就要配好了,辅助日志在需要时再分分配.

DB2管理程序按顺序请求 ->查找主日志 ->需要的主日志不可用 ->分配一个辅助日志.

-> 辅助日志也满了 ->再去检查下主日志能用不 ->还不可用就又分配一个新的辅助日志

-> 然后就一直重复上述检查 

->一直到有主日志文件变为可重用为止.然后就把辅助日志释放掉.

循环日志在备份恢复中的作用:

不能进行前滚恢复,但可进行崩溃恢复和版本恢复

仅支持脱机备份.

(2)归档日志

归档日志是一种日志文件的管理技术,将那些处理非活动状态的日志文件进行归档.

归档日志是非默认的.

归档日志有几个要类

1.活动日志

包含发那些尚未提交(或回滚)的事务相关信息.还包含已提交但改动还没与的的事务相关信息

restart database

rollforward

2.联机归档日志

当活动日志关闭时,将成为一个归档日志。称它们为"联机" 是因为它们和活动

日志存放在相同的子目录下。

3.脱机归档日志

这些日志文件已经从活动日志所在的目录中移开了。可以手动,也可以

通过 userexit这样的过程调用来自动进行。归档的日志文件可以

存储到磁带或其它介质上。如tsm上。

正在用的日志(活动日志) ->如果日志用完了(联机归档日志) ->再把这些不用的日志给备份或移开(脱机归档日志)

循环日志在备份恢复中的作用:

唯一支持前滚恢复和实现可恢复数据库的日志方法.

支持脱机备份和联机备份

在DB2数据库中查看与日志有关的主要参数:

userexit  是否启用用户出口

logretain 是否启用归档日志

trackmod 是否启用增量备份功能 

这些默认是off,即循环日志模式,如为"Yes"或"Recovery",则表明为归档日志模式.

Unix/Linux下的查看命令:

DB2 v9及以前版本:

db2 get db cfg for sample|grep "USEREXIT"

db2 get db cfg for sample|grep "LOGRETAIN"

db2 get db cfg for sample|grep "TRACKMOD"

DB2 v10:

db2 get db cfg for sample |grep "LOGARCHMETH1"

Windows下的查看命令:

DB2 v9及以前版本:

db2 get db cfg for sample |find /I "userexit"

db2 get db cfg for sample |find /I "logretain"

db2 get db cfg for sample |find /I "trackmod"

DB2 v10:

db2 get db cfg for sample |find /I "LOGARCHMETH1"

可更改这些参数使DB2数据库处于归档日志模式,以便支持联机备份.

更改命令:

DB2 v9及以前版本:

db2 update db cfg for sample using userexit on//启用用户出口

db2 update db cfg for sample using logretain on//启用归档日志

db2 update db cfg for sample using trackmod on//启用增量备份功能 

DB2 v10:

-- DISK : 本地磁盘

-- TSM : Tivoli Storage Manger

-- VENDOR : 第三方存储设备

db2 update db cfg for sample using LOGARCHMETH1 disk:/db2/db/log_archive

注意事项:

变更这些归档模式参数后,会提示SQL1116N错误,DB2数据库处于backup pending状态,是不能马上连接上数据库的,必须要做脱机备份一次才行.

脱机备份命令例子:

db2 backup db sample to c:\xclbkcold

可手工归档下,检查下生成的日志(前提是没数据库连接):

db2 archive log for db xcldb

db2 list history archive log all for xcldb

关于日志的管理:

查看首活动日志:

db2 connect to xcldb2

--中文环境使用这个

db2 get db cfg|find "首个活动日志文件"

--英文环境使用这个

db2 get db cfg|grep -i "First active log file"

db2 connect reset

db2 terminate

清理日志:

db2 connect to xcldb2

db2 prune logfile prior to S0000033.LOG

其中S0000011.LOG就是刚刚的首活动日志

手工归档命令:

db2 archive log for db xcldb2 //会手工产生日志

将原db2diag.log文件备份到其它文件系统下。

删除db2diag.log文件。删除后,DB2会自动创建一个新的文件。

注意:如果你觉得以上 *** 作不保险的话,Db2提供了自动归档db2diag.log的命令

db2diag -a 自动将该文件以日期时间命名


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10058560.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存