十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問題一站解決
這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)如何解決library cache pin及l(fā)ibrary cache lock故障,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
創(chuàng)新互聯(lián)建站為企業(yè)級(jí)客戶提高一站式互聯(lián)網(wǎng)+設(shè)計(jì)服務(wù),主要包括做網(wǎng)站、網(wǎng)站制作、app軟件開發(fā)、微信小程序開發(fā)、宣傳片制作、LOGO設(shè)計(jì)等,幫助客戶快速提升營(yíng)銷能力和企業(yè)形象,創(chuàng)新互聯(lián)各部門都有經(jīng)驗(yàn)豐富的經(jīng)驗(yàn),可以確保每一個(gè)作品的質(zhì)量和創(chuàng)作周期,同時(shí)每年都有很多新員工加入,為我們帶來(lái)大量新的創(chuàng)意。
某個(gè)客戶, 突然發(fā)生前端零售業(yè)務(wù)卡頓的情況。因?yàn)楫?dāng)時(shí)在處理其他客戶的事宜, 所以當(dāng)時(shí)沒有進(jìn)行monitor。由另外一位同事進(jìn)行處理, 直接緊急重啟了應(yīng)用。
問題解決。但是業(yè)務(wù)不得已中斷。
事后調(diào)查原因, 從卡頓的時(shí)間段來(lái)看發(fā)現(xiàn)大量的library cache pin等待事件,并且伴有l(wèi)ibrary cache lock。
另外,同事也保存了阻塞相關(guān)的會(huì)話信息
create table block_sess1018 as
select * from v$session where blocking_session is not null
結(jié)合
select * from dba_hist_active_sess_history h where h.sample_time > to_date('20171018 15:25:00', 'yyyymmdd hh34:mi:ss')
and h.sample_time < to_date('20171018 16:00:00', 'yyyymmdd hh34:mi:ss') and event like 'library cache%'
library cache pin幾個(gè)參數(shù)的意思:
p1=handle address
p2=pin address
p3=namespace&&encoded mode
對(duì)于p1raw可以對(duì)應(yīng)于x$kglob中的KGLHDADR字段x$kglpn中的KGLPNHDL字段,x$kgllk中的KGLLKHDL字段,后邊有sql關(guān)聯(lián)。
dba_hist_active_sess_history中的P1可以轉(zhuǎn)換成16進(jìn)制之后,再去v$object_dependency通過(guò)to_address定位到pin的對(duì)象
SQL> select s.sid, s.saddr, sw.p1raw
from v$session_wait sw, v$session s
where sw.sid = s.sid and sw.event='library cache pin';
SID SADDR P1RAW
---------- ---------------- ----------------
53 0000000077204A80 000000006DBC5BE8
Now using the P1RAW and SADDR values find the the address of the user session that is holding the lock
SQL> select b.KGLLKUSE from dba_kgllock w , dba_kgllock b
where w.KGLLKHDL = b.KGLLKHDL
and w.KGLLKREQ > 0 and b.KGLLKMOD > 0
and w.KGLLKTYPE = b.KGLLKTYPE
and w.KGLLKUSE = '0000000077204A80' -- SADDR
and w.KGLLKHDL = '000000006DBC5BE8' -- P1RAW
select to_owner, to_name from v$object_dependency
where to_address = '000000016B500270';
select * from dba_ddl_locks where owner = 'HR';
找到了library cache pin的對(duì)象。
再進(jìn)一步發(fā)現(xiàn)(通過(guò)logminer挖掘日志),故障開始前,有開發(fā)的同事對(duì)一個(gè)基礎(chǔ)表進(jìn)行了DDL操作,引發(fā)了其后一連串的編譯的動(dòng)作(有很多對(duì)象依賴于此表)。
很多對(duì)象,比如觸發(fā)器(產(chǎn)品的邏輯很多是用觸發(fā)器完成), 過(guò)程,函數(shù),視圖等依賴于此表。
由于此時(shí)正值業(yè)務(wù)高峰,所以出現(xiàn)了大面積的卡頓。
以下是DDL時(shí)間順序
執(zhí)行的DDL語(yǔ)句:
上述就是小編為大家分享的如何解決library cache pin及l(fā)ibrary cache lock故障了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。