RAC环境下library cache pin/lock的处理
作者 :OoNiceDream【转载时请务必以超链接形式标明文章原始出处和作者信息】
链接:http://www.dbaroad.me/archives/2010/05/rac_pin_lock.html
链接:http://www.dbaroad.me/archives/2010/05/rac_pin_lock.html
这个案例放着很久了,最近又有遇到,小结了一下。
RAC环境下,主要是不同实例上handle地址(kglpnhdl or kgllkhdl)不同,所以如果pin/lock被不同的节点持有时,处理起来就略有不同,看下面这个例子:
实例1上进行授权操作,发现会话挂起,等待事件为:library cache pin:
SQL> select inst_id, sid, event, p1raw 2 from gv$session_wait 3 where event = 'library cache pin'; INST_ID SID EVENT P1RAW ---------- ---------- -------------------- ---------------- 1 2325 library cache pin C00000087F12E1F8 |
实例1上,只有一个请求pin的会话,也就是当前在做授权的会话:
SQL> select inst_id, KGLPNUSE, KGLPNHDL, KGLPNMOD, KGLPNREQ 2 from x$kglpn 3 where kglpnhdl = 'C00000087F12E1F8' 4 order by KGLPNREQ; INST_ID KGLPNUSE KGLPNHDL KGLPNMOD KGLPNREQ ------- ---------------- ---------------- ---------- ---------- 1 C0000007C97625C0 C00000087F12E1F8 0 3 SQL> select sid,serial#,sql_hash_value,username,machine from v$session 2 where saddr='C0000007C97625C0'; SID SERIAL# SQL_HASH_VALUE USERNAME MACHINE ------ ---------- -------------- --------- ------- 2325 5103 3038871805 SYS host1 SQL> select kglnaown, kglnaobj 2 from X$KGLOB 3 where KGLHDADR = 'C00000087F12E1F8'; KGLNAOWN KGLNAOBJ ---------- --------------- U_NAME OBJ2CHANNEL |
那么这个对象很有可能在实例2上被pin住了。
每个实例都有自己的shared pool,handle地址不同也比较好理解,所以不能用handle地址去查找了。
但有一点是不会变的,那就是x$kglob中显示的被pin住的对象,因此,这个handle地址就可以从x$kglob中获取了。
几个视图关联下,就可以通过以下这个语句在另一个节点上来查找持有pin的会话:
SQL> select p.inst_id, 2 s.sid, 3 s.sql_hash_value, 4 s.username, 5 s.osuser, 6 s.machine, 7 p.KGLPNUSE, 8 p.KGLPNHDL, 9 p.KGLPNMOD, 10 p.KGLPNREQ, 11 o.kglnaobj 12 from v$session s, x$kglpn p, x$kglob o 13 where o.kglnaobj = 'OBJ2CHANNEL' 14 and p.kglpnhdl = o.kglhdadr 15 and s.SADDR = p.kglpnuse 16 and p.KGLPNMOD <> 0; INST_ID SID SQL_HASH_VALUE USERNAME OSUSER MACHINE KGLPNUSE KGLPNHDL KGLPNMOD KGLPNREQ KGLNAOBJ ------- --- -------------- -------- ------ ------- ---------------- ---------------- -------- -------- --------- 2 197 4062951240 U_NAME u_name host2 C00000081E3E5C60 C000000888817D68 2 0 OBJ2CHANN 2 197 4062951240 U_NAME u_name host2 C00000081E3E5C60 C00000088ED88980 2 0 OBJ2CHANN |
library cache lock处理类同,只是视图换一下(x$kgllk)。
— The End —
关键字: 故障案例


站内搜索