1、用“library cache lock”代表名为library cache lock的enqueue;
2、用“library cache pin”代表名为library cache pin的enqueue;
3、用“Child library cache”代表名为library cache的子latch;
4、用“Child shared pool”代表名为shared pool的子latch;
5、用“Child library cache lock”代表名为library cache lock的子latch;
6、用“Child library cache pin”代表名为library cache pin的子latch;
10.2.0.2 mutex 取代了cursor的library cache pin 软解析不再需要持有child library cache pin
11gR1 mutex 替换了library cache 相关的latch
1、SQL在硬解析的时候,会先去持有Child library cache以扫描library cache object handle链表,接着会释放Child library cache(因为找不到相关的library cache object handle),接下来会再次持有Child library cache(因为要修改library cache object handle链表),然后在不释放Child library cache的情况下进而去持有Child shared pool以分配内存,接着释放Child shared pool(因为已经分配完了),接着再释放Child library cache;然后因为要以null模式获得library cache lock,所以要先持有Child library cache lock;接着要把相关sql的执行计划load到对应的子cursor的library cache object handle中,即要以exclusive模式获得library cache pin,所以要先持有Child library cache pin;
2、SQL在软解析的时候和硬解析类似,只不过不需要持有Child shared pool并且持有Child library cache的时间会更短。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27131216/viewspace-734884/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/27131216/viewspace-734884/