麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 數(shù)據(jù)庫(kù) > DB2 > 正文

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

2020-01-31 14:51:50
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

日志使用

下圖顯示了并發(fā)事務(wù)條件下,日志使用的示意

有3個(gè)并發(fā)的程序Process 1、Process 2、Process 3。每一個(gè)程序都有兩個(gè)事務(wù)。藍(lán)塊代表SQL語(yǔ)句,紅塊代表commit操作,綠塊代表rollback操作。每一個(gè)向下的箭頭都代表日志緩沖區(qū)的數(shù)據(jù)被刷新到日志磁盤(pán)上(默認(rèn)是每一次提交操作都會(huì)導(dǎo)致日志緩沖被刷新到磁盤(pán)上)。

在T1時(shí)刻,事務(wù)A commit,日志緩沖區(qū)被刷新到磁盤(pán)上。
在T2時(shí)刻,事務(wù)B commit,日志緩沖區(qū)被刷新到磁盤(pán)上,此時(shí)日志X使用完,但由于X中的事務(wù)C還沒(méi)有提交,所以X此時(shí)還是活動(dòng)日志。

在上圖中,如果事務(wù)C一直沒(méi)有提交操作,那么日志X將永遠(yuǎn)是首個(gè)活動(dòng)日志(oldest transaction log),后續(xù)的日志也是活動(dòng)日志,其他應(yīng)用最終會(huì)導(dǎo)致日志滿。

活動(dòng)日志

如果一個(gè)日志中包含有未提交的事務(wù),那么這個(gè)日志就是活動(dòng)日志(也有其他情況,比如雖然所有事務(wù)已經(jīng)提交,但對(duì)應(yīng)的更改還沒(méi)有持久化到磁盤(pán)上)。

首個(gè)活動(dòng)日志(First Active Log)

第一個(gè)活動(dòng)日志,首個(gè)活動(dòng)日志之后的日志(也就是編號(hào)比首個(gè)活動(dòng)日志大的日志)都是活動(dòng)日志,可以通過(guò)數(shù)據(jù)庫(kù)的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總的可用活動(dòng)日志的最大空間是有限制的,當(dāng)達(dá)到限制之后,就會(huì)發(fā)生日志滿的問(wèn)題,限制為(LOGPRIMARY + LOGSECOND) * LOGFILSIZ * 4KB

日志滿的原因無(wú)非兩種:

1.) 一個(gè)小事務(wù)hold住了首個(gè)活動(dòng)日志,一直沒(méi)有提交,導(dǎo)致首個(gè)活動(dòng)日志一直是活動(dòng)狀態(tài),不被釋放。這個(gè)跟堵車(chē)類(lèi)似,一輛車(chē)因發(fā)動(dòng)機(jī)故障(事務(wù)沒(méi)有提交)堵住路口(占用首個(gè)活動(dòng)日志),即使后面的車(chē)都沒(méi)有問(wèn)題(后續(xù)事務(wù)正常提交),也無(wú)法通過(guò)路口,且會(huì)越積越多,最終導(dǎo)致整個(gè)路都堵滿車(chē)(日志滿)。

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

日志滿的表現(xiàn):

首先應(yīng)用會(huì)報(bào)出SQL0964C錯(cuò)誤:

$ 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中會(huì)有以下報(bào)錯(cuò)

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.

日志滿的臨時(shí)處理:

1. 可以通過(guò)增加LOGSECOND來(lái)臨時(shí)增加可用的日志大小(修改時(shí)需要加上immediate選項(xiàng)使之立即生效);增加LOGPRIMARY并沒(méi)有用,因?yàn)樾枰貑?shù)據(jù)庫(kù)才能生效。

2. force掉hold住首個(gè)活動(dòng)日志的的應(yīng)用,在force之前,可以抓取snapshot,看一下這個(gè)應(yīng)用的狀態(tài):

$ 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         <<--應(yīng)用狀態(tài)為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 <<--應(yīng)用連庫(kù)時(shí)間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 <<--當(dāng)前事務(wù)開(kāi)始時(shí)間UOW stop timestamp             =              <<--當(dāng)前事務(wù)結(jié)束時(shí)間為空,說(shuō)明還沒(méi)有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

<<--一個(gè)事務(wù)中可能有多條SQL,這個(gè)只表示當(dāng)前正在執(zhí)行或者最后執(zhí)行過(guò)的SQL,并不能表示就是這條SQL導(dǎo)致了日志滿,這里抓取到的是一條SELECT語(yǔ)句,SELECT語(yǔ)句不占用日志。

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

日志滿的避免:

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

補(bǔ)充說(shuō)明:

查看每個(gè)應(yīng)用使用的日志大小:

$ 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" 

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

重點(diǎn)關(guān)注的參數(shù)有:

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.

通過(guò)對(duì)DB2活動(dòng)日志滿原因的分析我們就可以找到解決此問(wèn)題的方法同時(shí)避免此問(wèn)題的再次出現(xiàn)

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 国产自在线 | 少妇的肉体的满足毛片 | 国产精品剧情一区二区三区 | 国产乱一区二区三区视频 | 国产精品视频六区 | 国产精品视频2021 | 超碰97最新 | 欧美成人黄色小视频 | 中文在线观看视频 | 鲁人人人鲁人人鲁精品 | 欧洲黄色一级视频 | 久草在线新时代视觉 | 成人在线视频精品 | 国产精品一区二区免费在线观看 | 久久最新免费视频 | 国产剧情v888av| 亚州欧美视频 | 久色成人网 | 中国国语毛片免费观看视频 | 黄色特级一级片 | 日日摸夜夜添夜夜添牛牛 | 免费国产视频在线观看 | 娇妻被各种姿势c到高潮小说 | 国产精品亚洲精品日韩已方 | 99爱视频在线 | 成人羞羞在线观看网站 | 国产精品自在线拍 | 麻豆视频在线免费观看 | 毛片一级免费看 | 免费一级a毛片免费观看 | 天天操天天骑 | 叶子楣成人爽a毛片免费啪啪 | 免费a级片在线观看 | 国产精选电影免费在线观看网站 | 久久精品久久精品国产大片 | 久久av一区二区 | 久久久入口 | 国产一级在线看 | 在线视频观看一区二区 | 国产免费一区二区三区 | 久久久三级免费电影 |