首页 > 其他分享 >library cache lock/pin等待事件

library cache lock/pin等待事件

时间:2023-11-13 12:08:10浏览次数:26  
标签:pin lock cache namespace library 模式 LCO

概念描述

Library cache lock控制对于Library Cache Object的并发访问,通过获取Object Handle上的锁定持有。通常在定位Library Cache对象时,就需要持有library cache lock。

对包,存储过程,函数,视图进行编译的时候,Oracle就会在这些对象的handle上面首先获得一个Library Cache Lock;然后在这些对象的Heap上获得Pin,这样就能保证在编译的时候其它进程不会来更改这些对象的定义,或者将对象删除。

Lock管理并发,Pin管理一致性。lock flag位于handle,是LCO对象的metadata之一。而pin针对LCO heap,确保在读取、修改LCO的过程中,不会被flush出library cache。故而,有先library cache lock,后有library cache pin.但是有lock未必有Pin。

library cache lock/pin等待事件_数据库


此外,除了用户进程对lco的读取、删除需要lbl外,由于空间需求等原因,要将lco handle老化出lc,也需要持有Lock.

硬解析过程中,若找到了适当的chunk,对SQL相应的HANDLE以EXCLUSIVE模式获得library cache lock,并创建LCO信息。创建LCO后,library cache lock变为null模式,将library cache pin以exclusive模式获得后,创建执行计划。

参数解析

library cache lock/pin等待事件_等待事件_02


p3可以用于获取锁的模式以及所在的namespace,便于定位问题所在lco。

LOCK的持有模式:1-NULL 2-共享 3-独占

案例介绍

1.某天客户反馈某数据库非常慢,top1等待事件为library cache lock。通过p3 raw 转换得到了该等待的锁模式以及namespace。

library cache lock/pin等待事件_pin_03


得到namespace id 为127,锁模式为2.

library cache lock/pin等待事件_重启_04


使用x$kglob获得了namespace名。 last successful logon time是12c新特性,用于在用户登陆时打印上次成功登陆的时间,可禁用。但是此次故障本人并没有选择禁用该特性。因为lock模式全部为2,也就是说阻塞者另有他人。经过分析,是由于2个节点CPU个数不一致导致的lck进程被enq:IV contention阻塞,lck进程又导致了其他enqueue事件的等待。后将CPU个数多的节点减少到与少的节点个数一致并重启实例后数据库正常。

2.11g的密码延迟验证也是lbl的重灾区,namespace为 ACCOUNT_STATUS

3.某次巡检发现某个时间段lbl非常高,由于ash无p3raw,不能通过拆解该参数来分析。通过对blocking session的分析,为创建表的同时,对表进行了查询导致的等待。

总结

lbl的等待情况比较复杂,需要具体情况具体分析。

标签:pin,lock,cache,namespace,library,模式,LCO
From: https://blog.51cto.com/u_13482808/8340139

相关文章

  • 第2章 Cache和内存
    第2章则系统地介绍内存和cache的相关基本知识,分析了各种IA平台上的cache技术的特点和优势,并介绍了一个DPDK的重要技术“大页”的使用。2.1存储系统简介一般而言,存储系统不仅仅指用于存储数据的磁盘、磁带和光盘存储器等,还包括内存和CPU内部的Cache。当处理完毕之后,系统还要提......
  • 黑马pink css5
    css有三大特性:层叠性,继承性,优先级。层叠(覆盖)性:解决冲突就近原则恰当地使用继承可以简化代码,降低css的复杂性行高的继承:font:12px/1.51.5表示当前文字大小的1.5倍body行高1.5,这样写法的最大优势就是里面子元素可以根据自己文字大小自动调整行高优先级继承的权重是0,只要该元......
  • mysql 表级锁之一lock table
    1.locktablet1read:1.1.当前线程:读/写当前表/其他表:unlocktables;locktablet1read;select*fromt1;INSERTINTO`t1`(`c2`,`c3`,`c4`)VALUES('1','1','1');select*fromt2;INSERTINTO`t2`(`c2`,`c3`,`c4`)VALUES('......
  • springboot使用requestmapping创建xml响应体接口
    entity下创建类文件,类名分别为:ResponseXml,ResponseItemcontroller下创建xml响应体实现方法getResponseWithXml---------ResponseXmlStart-------importjavax.xml.bind.annotation.*;//根标签@XmlRootElement(name="test1")publicclassResponseXml{privateStringum......
  • 黑马pink css3
    行内元素/内联元素:是最典型的行内元素特点:相邻行内元素在一行上,一行可以显示多个高,宽度设置是无效的默认宽度是他本身内容的宽度行内元素只能容纳文本或其他行内元素注意:内部不能嵌套‘’可以嵌套块级元素行内块元素:‘’特点:一行可以有多个,之间有空隙默认宽度是他本......
  • Helping China Fight Air Pollution
    Overthelast40years,Chinahasexperiencedthefastesteconomicgrowthanywherebutalsopaidaheavyenvironmentalprice.Chinahasmanyoftheworld’smostpollutedcitiesandistheworld’slargestemitterofgreenhousegases.TheBeijing-Tianjin-He......
  • 前端如何实现ping的工具呢?
    react中很想做一个类似cmd上的ping的功能:nono@MacBook-AirDownloads%ping8.8.8.8PING8.8.8.8(8.8.8.8):56databytes64bytesfrom8.8.8.8:icmp_seq=0ttl=54time=78.295ms64bytesfrom8.8.8.8:icmp_seq=1ttl=54time=76.225ms64bytesfrom8.8.8.8:icmp_se......
  • KubeBlocks v0.7.0 发布!支持引用外部组件,解耦备份 API,还支持了 Pika!
    我们很高兴地宣布KubeBlocksv0.7.0正式发布!在此版本中,KubeBlocks已支持31个开源数据库引擎,包括MariaDB、Elasticsearch、Pulsar和Pika等新的add-ons,为K8s用户提供了更广泛选择的同时,也延续了相同的用户体验。Highlights支持引用外部组件一些数据库集群依赖元数据存储进......
  • skywaling 数据刷新过快导致es写入block
    我们可以做些调优,skywalking写入ES的操作是使用了ES的批量写入接口。我们可以调整这些批量的维度。尽量降低ES索引的写入频率,如:bulkActions:${SW_STORAGE_ES_BULK_ACTIONS:4000}#Executethebulkevery2000requestsbulkSize:${SW_STORAGE_ES_BULK_SIZE:40}#flushthebu......
  • Vite4+Typescript+Vue3+Pinia 从零搭建(2) - tsconfig配置
    tsconfig配置项目代码同步至码云weiz-vue3-template关于tsconfig的配置字段可查看其他文档,如typeScripttsconfig配置详解tsconfig.json文件修改如下:{"compilerOptions":{"target":"ESNext",//将代码编译为最新版本的JS"useDefineForClassFields":tr......