oracle p1 address,P1RAW – 搜索结果 – 提供7*24专业数据库(Oracle,SQL Server,MySQL等)恢复和Oracle技术服务@Tel:+86 1342964...

library cache pin说明

library cache pin 事件是用来管理library cache的并发访问的, pin一个object会引起相应的heap被载入内存中,如果客户端需要修改或检测这个object它就必须在锁住后取得一个pin.library cache pin的等待时间为3秒钟,其中有1秒钟用于PMON后台进程,即在取得pin之前最多等待3秒钟,否则就超时.library cache pin通常是发生在编译或重新编译PL/SQL,VIEW,TYPES等object时.编译通常都是显性的,如安装应用程序,升级,安装补丁程序等,但object的重新编译也可能发生在object变得无效时.library cache pin的参数如下,有用的主要是P1和P2:

P1 – KGL Handle address.

P2 – Pin address

P3 – 10*Mode + Namespace

其中,P1,P2可与x$kglpn和x$kglob表相关.x$kglpn和x$kglob是ORACLE数据库的内部数据字典.

x$kglpn library cache pin信息

x$kglob library cache object信息

查询方法一

--通过查询V$SESSION_WAIT找出正在等待”library cache pin”的session

SELECT sid,

SUBSTR (event, 1, 30),

TO_CHAR(p1, 'xxxxxxxx') p1_16,

--P1RAW P1_16,

p2,

p3

FROM v$session_wait

WHERE wait_time = 0 AND event LIKE 'library cache pin%';

--P1 列是Library Cache Handle Address

--P2 列是Library Cache Pin Address.

--找到相关session pin状态

SELECT ADDR,

INDX,

KGLPNADR,-- Library Cache Pin Address

KGLPNUSE,

KGLPNSES,--识别锁住此pin 的session

KGLPNHDL,--Library Cache Handle Address

kGLPNLCK,

KGLPNMOD,-- Pin 锁

KGLPNREQ-- Pin 请求

FROM x$kglpn

WHERE KGLPNHDL LIKE '%EB3EB8%';--p1_16

--询X$KGLOB (Library Cache Object),可找到相关的object

SELECT KGLNAOBJ-- 相关object的名字(取前面80个字符)

FROM X$KGLOB

WHERE KGLHDADR LIKE '%EB3EB8%';--p1_16

--查出占着pin锁的session目前正在做什么

SELECT a.sid, a.username, a.program

FROM v$session a, x$kglpn b

WHERE a.saddr = b.kglpnuse AND b.kglpnhdl LIKE '%EB3EB8%'--p1_16

AND b.kgnmod <> 0;

--查出阻塞者正执行的SQL语句

SELECT sid, sql_text

FROM v$session, v$sqlarea

WHERE v$session.sql_address = v$sqlarea.address AND sid =&sid;

查询方法二

--通过查询DBA_LOCK_INTERNAL和V$SESSION_WAIT,可得到与”library cache pin” 等待相关的object的名字

SELECT TO_CHAR (SESSION_ID, '999') sid,

SUBSTR (LOCK_TYPE, 1, 30) TYPE,

SUBSTR (lock_id1, 1, 23) Object_Name,

SUBSTR (mode_held, 1, 4) HELD,

SUBSTR (mode_requested, 1, 4) REQ,

lock_id2 Lock_addr

FROM dba_lock_internal

WHERE mode_requested <> 'None' AND mode_requested <> mode_held

AND session_id IN

(SELECT sid

FROM v$session_wait

WHERE wait_time = 0 AND event LIKE 'library cache pin%');

--查出”library cache pin”占有者(即阻塞者)的session id

SELECT sid Holder,

KGLPNUSE Sesion,

KGLPNMOD Held,

KGLPNREQ Req

FROM sys.x$kglpn, v$session

WHERE KGLPNHDL IN (SELECT p1raw

FROM v$session_wait

WHERE wait_time = 0 AND event LIKE 'library cache pin%')

AND KGLPNMOD <> 0

AND v$session.saddr = x$kglpn.kglpnuse;

--查出”library cache pin”占有者(阻塞者)正在等什么

SELECT sid, SUBSTR (event, 1, 30), wait_time

FROM v$session_wait

WHERE sid IN

(SELECT sid

FROM x$kglpn, v$session

WHERE KGLPNHDL IN

(SELECT p1raw

FROM v$session_wait

WHERE wait_time = 0

AND event LIKE 'library cache pin%')

AND KGLPNMOD <> 0

AND v$session.saddr = x$kglpn.kglpnuse);

--查出阻塞者正执行的SQL语句

SELECT sid, sql_text

FROM v$session, v$sqlarea

WHERE v$session.sql_address = v$sqlarea.address AND sid =&sid;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值