暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

db2 log相关

原创 落寞惊梦 2022-09-19
310
   db2 connect to mobile user mondb using 1q2w3e4r >/dev/null 2>&1

cur=$(db2 -x “select cast( round(TOTAL_LOG_USED*100/TOTAL_LOG_AVAILABLE,2) as numeric(10,2) ) from SYSIBMADM.SNAPDB”) >/dev/null 2>&1

db2 terminate >/dev/null 2>&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)600004/1024/1024大约50GB。
  如果日志是单独的文件系统分区,我们在操作系统上即可看到日志空间使用情况,对日志使用情况进行监控,可以看到如下信息:

$ df -g
  Filesystem GB blocks Free %Used Iused %Iused Mounted on
  /dev/db2inst1_log01 60.00 54.50 10% 1458 1% /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 Number 117123
  Pages Written 33697
  Cur Commit Disk Log Reads 0
  Cur Commit Total Log Reads 0
  Method 1 Archive Status Success
  Method 1 Next Log to Archive 117123
  Method 1 First Failure n/a
  Method 2 Archive Status n/a
  Method 2 Next Log to Archive n/a
  Method 2 First Failure n/a
  Log Chain ID 2
  Current LSN 0x00001A2DDE649E70

Address StartLSN State Size Pages Filename
  0x0700000177B795D0 00001A2CBFD88010 0x00000000 60000 60000 S0117104.LOG
  0x0700000177B806D0 00001A2CCE7E8010 0x00000000 60000 60000 S0117105.LOG
  0x0700000177B8B450 00001A2CDD248010 0x00000000 60000 60000 S0117106.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_NAME LOG_UTILIZATION_PERCENT TOTAL_LOG_USED_KB TOTAL_LOG_AVAILABLE_KB TOTAL_LOG_USED_TOP_KB DBPARTITIONNUM
  -------------------------------------------------------------------------------------------------------------------------------- ----------------------- -------------------- ---------------------- --------------------- --------------
  DSS 8.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 Used Max Log Used (Mb) Max Sec. Used (Mb) Secondaries
  ------------- ------------------ ----------- ----------------- ------------------ -----------
  4544 45833 9 16264 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_TOP SEC_LOGS_ALLOCATED
  -------------------------------------------------------------------------------------------------------------------------------- -------------------- -------------------- -------------------- --------------------
  SAMPLE 48045192251 4779767749 13141773417 5

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

管理视图:
日志文件的利用率:
SELECT * FROM SYSIBMADM.LOG_UTILIZATION

cur=$(db2 -x “select cast( round(TOTAL_LOG_USED*100/TOTAL_LOG_AVAILABLE,2) as numeric(10,2) ) from SYSIBMADM.SNAPDB”)

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论