亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > DB2 > 正文

分析DB2活動日志滿的原因及解決DB2日志滿方法與避免方案

2020-01-31 14:51:50
字體:
來源:轉載
供稿:網友

日志使用

下圖顯示了并發事務條件下,日志使用的示意

有3個并發的程序Process 1、Process 2、Process 3。每一個程序都有兩個事務。藍塊代表SQL語句,紅塊代表commit操作,綠塊代表rollback操作。每一個向下的箭頭都代表日志緩沖區的數據被刷新到日志磁盤上(默認是每一次提交操作都會導致日志緩沖被刷新到磁盤上)。

在T1時刻,事務A commit,日志緩沖區被刷新到磁盤上。
在T2時刻,事務B commit,日志緩沖區被刷新到磁盤上,此時日志X使用完,但由于X中的事務C還沒有提交,所以X此時還是活動日志。

在上圖中,如果事務C一直沒有提交操作,那么日志X將永遠是首個活動日志(oldest transaction log),后續的日志也是活動日志,其他應用最終會導致日志滿。

活動日志

如果一個日志中包含有未提交的事務,那么這個日志就是活動日志(也有其他情況,比如雖然所有事務已經提交,但對應的更改還沒有持久化到磁盤上)。

首個活動日志(First Active Log)

第一個活動日志,首個活動日志之后的日志(也就是編號比首個活動日志大的日志)都是活動日志,可以通過數據庫的snapshot查看first active log, current active log, 以及 last active log.

$ db2 get snapshot for db on sample | grep -i "File number"File number of first active log      = 0File number of last active log       = 2File number of current active log     = 0File number of log being archived     = Not applicable

日志滿原因

DB2總的可用活動日志的最大空間是有限制的,當達到限制之后,就會發生日志滿的問題,限制為(LOGPRIMARY + LOGSECOND) * LOGFILSIZ * 4KB

日志滿的原因無非兩種:

1.) 一個小事務hold住了首個活動日志,一直沒有提交,導致首個活動日志一直是活動狀態,不被釋放。這個跟堵車類似,一輛車因發動機故障(事務沒有提交)堵住路口(占用首個活動日志),即使后面的車都沒有問題(后續事務正常提交),也無法通過路口,且會越積越多,最終導致整個路都堵滿車(日志滿)。

2.) 有個事務非常大,迅速用盡了所有的日志。

日志滿的表現:

首先應用會報出SQL0964C錯誤:

$ db2 "insert into test select * from test"DB21034E The command was processed as an SQL statement because it was not avalid Command Line Processor command. During SQL processing it returned:SQL0964C The transaction log for the database is full. SQLSTATE=57011

其次,db2diag.log中會有以下報錯

2017-03-09-17.24.50.315000+480 E3234873F644     LEVEL: ErrorPID   : 8532         TID : 13028     PROC : db2syscs.exeINSTANCE: DB2INST1       NODE : 000      DB  : SAMPLEAPPHDL : 0-453        APPID: *LOCAL.DB2INST1.170309092321AUTHID : MIAOQINGSONG     HOSTNAME: ADMINIB-PR7US3IEDUID  : 13028        EDUNAME: db2agent (SAMPLE)FUNCTION: DB2 UDB, data protection services, sqlpgResSpace, probe:2860MESSAGE : ADM1823E The active log is full and is held by application handle     "0-441". Terminate this application by COMMIT, ROLLBACK or FORCE     APPLICATION.

日志滿的臨時處理:

1. 可以通過增加LOGSECOND來臨時增加可用的日志大?。ㄐ薷臅r需要加上immediate選項使之立即生效);增加LOGPRIMARY并沒有用,因為需要重啟數據庫才能生效。

2. force掉hold住首個活動日志的的應用,在force之前,可以抓取snapshot,看一下這個應用的狀態:

$ db2 get snapshot for database on sample | grep -i oldestAppl id holding the oldest transaction   = 441$ db2 get snapshot for application agentid 441      Application SnapshotApplication handle             = 441Application status             = UOW Waiting         <<--應用狀態為UOW WaitingStatus change time             = 2017-03-09 17:23:15.068895Application code page           = 1386Application country/region code      = 86DUOW correlation token           = *LOCAL.DB2INST1.170309092244Application name              = db2bp.exeApplication ID               = *LOCAL.DB2INST1.170309092244..Connection request start timestamp     = 2017-03-09 17:22:44.963163 <<--應用連庫時間Connect request completion timestamp    = 2017-03-09 17:22:45.961157Application idle time           = 4 minutes 7 seconds..UOW log space used (Bytes)         = 664Previous UOW completion timestamp     = 2017-03-09 17:22:45.961157Elapsed time of last completed uow (sec.ms)= 0.000000UOW start timestamp            = 2017-03-09 17:23:02.770477 <<--當前事務開始時間UOW stop timestamp             =              <<--當前事務結束時間為空,說明還沒有commitUOW completion status           =..Statement type               = Dynamic SQL StatementStatement                 = CloseSection number               = 201Application creator            = NULLIDPackage name                = SQLC2K26Consistency Token             =Package Version ID             =Cursor name                = SQLCUR201Statement member number          = 0Statement start timestamp         = 2017-03-09 17:23:15.067789Statement stop timestamp          = 2017-03-09 17:23:15.068893 Elapsed time of last completed stmt(sec.ms)= 0.000024Total Statement user CPU time       = 0.000000Total Statement system CPU time      = 0.000000..Dynamic SQL statement text:   select * from t1

<<--一個事務中可能有多條SQL,這個只表示當前正在執行或者最后執行過的SQL,并不能表示就是這條SQL導致了日志滿,這里抓取到的是一條SELECT語句,SELECT語句不占用日志。

$ db2 "force application (441)"DB20000I The FORCE APPLICATION command completed successfully.DB21024I This command is asynchronous and may not be effective immediately.

日志滿的避免:

1.)根據抓取到的應用的snapshot,找應用開發人員查看為何不肯提交,這才是避免問題再次出現的根本辦法。
2.)從DB2管理層面,可以設置數據庫配置參數max_log和num_log_span
3.)可以寫腳本,以固定的間隔抓取database snapshot中的Appl id holding the oldest transaction, 如果長時間不發生變化(比如2天),就Force掉。

補充說明:

查看每個應用使用的日志大?。?/p>

$ db2 "select application_handle,UOW_LOG_SPACE_USED,UOW_START_TIME FROM TABLE(MON_GET_UNIT_OF_WORK(NULL,-1)) order by UOW_LOG_SPACE_USED" 

也可以通過db2pd -db <dbname> -transactions 查看每個正在使用的日志的情況

重點關注的參數有:

ApplHandl
The application handle of the transaction.
SpaceReserved
The amount of log space that is reserved for the transaction.
LogSpace
The total log space that is required for the transaction, including the used space and the reserved space for compensation log records.

通過對DB2活動日志滿原因的分析我們就可以找到解決此問題的方法同時避免此問題的再次出現

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产有码在线一区二区视频| 91色视频在线观看| 亚洲直播在线一区| 日韩av中文字幕在线| 亚洲视频专区在线| 国产精品视频最多的网站| 久久久国产成人精品| 欧美怡春院一区二区三区| 日韩欧美亚洲一二三区| 久久精品国产清自在天天线| 亚洲电影在线观看| 国产在线久久久| 91精品久久久久久久久久入口| 亚洲欧洲成视频免费观看| 久久韩剧网电视剧| 美女国内精品自产拍在线播放| 亚洲精品国产精品久久清纯直播| 在线一区二区日韩| 成人黄色av网| 久久视频在线观看免费| 亚洲网址你懂得| 8x拔播拔播x8国产精品| 久久影视免费观看| 成人免费在线网址| 成人黄色影片在线| 欧美性69xxxx肥| 18一19gay欧美视频网站| 国产日韩在线精品av| 亚洲欧美在线播放| 色99之美女主播在线视频| 成人国产精品色哟哟| 日韩av免费一区| 欧美激情第一页xxx| 国产精品一区二区电影| 人妖精品videosex性欧美| 国产亚洲一区精品| 亚洲欧美日韩图片| 成人写真视频福利网| 日韩欧美在线播放| 国产精品日韩电影| 国产精品av免费在线观看| 97在线视频国产| 久久亚洲私人国产精品va| 视频直播国产精品| 91av免费观看91av精品在线| 国产视频丨精品|在线观看| y97精品国产97久久久久久| 日韩av在线免费观看| 国产午夜精品麻豆| 久久国产精品久久久久久久久久| 亚洲tv在线观看| 欧美日韩精品在线| 国产精品福利无圣光在线一区| 国产综合在线看| 国产精品国产三级国产专播精品人| 日韩av在线网| 欧美在线亚洲在线| 中文亚洲视频在线| 亚洲精品一区二区久| 2020欧美日韩在线视频| 亚洲欧洲激情在线| 26uuu亚洲国产精品| 成人黄色影片在线| 国产精品视频999| 日本精品一区二区三区在线| 久久视频精品在线| 日韩电影在线观看中文字幕| 国产成人亚洲综合91精品| 欧美日韩国产激情| 国产精品影片在线观看| 久久99国产精品久久久久久久久| 亚洲成人精品久久久| 国产精品免费观看在线| 国产精品av在线播放| 国产69久久精品成人| 久久久999精品视频| 这里只有精品在线播放| 自拍偷拍亚洲精品| 欧美性猛交xxxx免费看漫画| 久久人91精品久久久久久不卡| 欧美日韩精品二区| 欧美性猛交xxxx富婆| 日韩有码在线电影| 欧美精品中文字幕一区| 国产精品嫩草影院久久久| 亚洲欧美在线一区二区| 日av在线播放中文不卡| 欧美资源在线观看| 在线激情影院一区| 午夜精品一区二区三区在线视| 欧美日韩精品中文字幕| 亚洲激情视频网站| 国产精品99久久久久久久久久久久| 久久久精品国产一区二区| 日韩中文字幕网址| 亚洲欧美国产高清va在线播| 中文字幕日韩有码| 亚洲精品免费网站| 成人激情春色网| 国产精品爽黄69天堂a| 91极品视频在线| 久久久久久久久国产精品| 久久久亚洲成人| 日韩精品极品视频免费观看| 成人自拍性视频| 亚洲免费伊人电影在线观看av| 成人动漫网站在线观看| 午夜精品一区二区三区在线播放| 成人做爰www免费看视频网站| 日韩三级成人av网| 成人激情视频免费在线| 91精品国产自产在线老师啪| 国产欧美日韩精品在线观看| 久久久久久久一| 91精品久久久久久久| 深夜福利国产精品| 2019av中文字幕| 国产一区二区三区三区在线观看| 一道本无吗dⅴd在线播放一区| 久久网福利资源网站| 国产日韩一区在线| 国产精品欧美风情| 国产精品久久久久av免费| 成人免费淫片视频软件| 97在线观看视频| 欧美激情视频一区| 亚洲精品电影久久久| 日韩av综合中文字幕| 欧美视频不卡中文| 久久久亚洲福利精品午夜| 国产日韩在线看| 国产精品天天狠天天看| 亚洲日本成人女熟在线观看| 狠狠色狠狠色综合日日五| 国产一区二区三区精品久久久| 日韩欧美成人网| 国产精品视频中文字幕91| 欧美精品久久久久| 国产69精品久久久久久| 欧美野外wwwxxx| 欧美福利视频在线观看| 亚洲成人av中文字幕| 欧美亚洲在线播放| 538国产精品视频一区二区| 国产综合在线看| 亚洲成人动漫在线播放| 久久免费视频网站| www.日韩免费| 色婷婷**av毛片一区| 欧美成年人视频| 久久6免费高清热精品| 日本免费一区二区三区视频观看| 国产精品91久久久久久| 亚洲欧美国产一区二区三区| 国产成人小视频在线观看| 在线观看日韩www视频免费| 亚洲 日韩 国产第一| 亚洲欧美国产精品久久久久久久| 欧美精品做受xxx性少妇| 国产伦精品免费视频| 欧美激情按摩在线| 国产精品一区久久| 成人精品久久一区二区三区| 久久伊人精品视频|