同事求助,说重建procedure卡住不动了。于是我查看等待事件
SQL > select * from v$session_wait;
发现有library cache pin事件。然后他说他发现自己写的这个procedure里面有个死循环,真相便一目了然。此等待事件是oracle内存发生的,在需要使用内存中某个数据块时,需要先lock住该块的handle,然后pin住对象,防止其他会话访问该对象,保持了一致性。很明显这个死循环一直pin住了某对象导致replace procedure时出现了library cache pin,只要超过3秒就会记录该事件。
抄一段对于此事件的官方文档:
This event manages library cache concurrency. Pinning an object causes the heaps to be loaded into memory. If a client wants to modify or examine the object, the client must acquire a pin after the lock.
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25915379/viewspace-714785/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/25915379/viewspace-714785/