row cache lock 事後分析處理

現場同事告知oracle 19C 下生產大量trc文件,把oracle目錄撐爆

查看trc文件如下

kqrpre: key mismatch po=0x132745948 hash=27d744ca
----------------------------------------
SO: 0x12a9d2098, type: row cache enqueues (111), map: 0x17537fa88
    state: LIVE (0x4532), flags: 0x0
    owner: 0x128885560, proc: 0xf7f07950
    link: 0x12a9d20b8[0x12e5e9c30, 0x1288855d0]
    conid: 3, conuid: 565920805, SGA version=(1,0), pg: 0
SOC: 0x17537fa88, type: row cache enqueues (111), map: 0x12a9d2098
     state: LIVE (0x99fc), flags: INIT (0x1)
row cache enqueue: count=1 session=0x104cbbe48 object=0x132745948, mode=S
flag=09 WAI/-/-/LOD/-/-/-/- savepoint=0x11b
row cache parent object: addr=0x132745948 cid=8(dc_objects) conid=3 conuid=565920805
hash=27d744ca typ=21 transaction=(nil) flags=00008000 inc=0, pdbinc=1
objectno=254513 ownerid=105 nsp=1
name=YTS_TRANS_20240331
own=0x132745a18[0x17537fb08,0x17537fb08] wat=0x132745a28[0x139e16960,0x16eb4b120] mode=S req=S
status=-/-/-/-/-/-/-/-/LOADING  KGH pinned
set=0, complete=FALSE

 通過trc文件來看,對錶YTS_TRANS_20240331中緩存做dump生成大量trc文件

收集處理問題時間段awr報告,發現大量row cache lock等待事件

查看數據字典緩存

主要申請miss在dc_segments 段對象上,通過addm 可以定位到具體sql語句

 查看錶YTS_TRANS_20240331 ddl語句,發現創建表時缺少存儲相關參數

解決:

1、調整open_cursors
alter system set open_cursors=2000 scope=spfile;
alter system set session_cached_cursor=500 scope=spfile;
2、調整shared pool
alter system set shared_pool_size=5g scope=spfile;
3、調整initial next值
alter table yts_trans_20240331 move storage( initial 10m next 10M);

參考mos

Resolving Issues Where 'Row Cache Lock' Waits are Occurring (Doc ID 1476670.1)
Troubleshooting: "WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK! " (Doc ID 278316.1)
select p1text,p1,p2text,p2,p3text,p3 from v$session where event='row cache lock';
select parameter,count,gets,getmisses,modifications from v$rowcache where cache#=8;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章