调整shared pool
v$sgastat 描述sga的祥细信息
shared_pool_size(初始化参数) 调整share pool的大小
v$librarycache 视图包括librarycache的统计性能。
查看librarycache sql执行小于一个数目的sql语句。
select sql_text from v$sqlarea where executions < 5 order by upper(sql_text);
查看硬解析语句:
select sql_text,parse_calls,executions from v$sqlarea order by parse_calls;
librarycache视图
v$sysstat, v$librarycache ,v$sql, v$sqlarea, v$sqltext, v$db_object_cache
一:shared pool contents
共享池的主要组件:
library cache
data dictionary cache
user global area for shared server sessions
共享池包括如下结构:
(1)library cache存储共享sql和pl/sql代码
(2)data dictionary cache保存数据字典对象信息
调整shared pool:
错误的data dictionary cache 或者 library cache的缓存大小将要比SGA内存要花费的多。所以调整shared pool是很重要的。
当调整shared pool时,应该把更精力更集中于library cache,因为分配内存空间的法则更喜欢控制dictionary data内存多于library cache。因此,调整library cache为一个可接受的缓存命中率以确保data dictionary cache也有一个可接受的命中率。
如果shared pool太小,服务器必须用更多的资源管理有限的可用空间。这样消耗cpu资源和引起竞争。
如果shared pool 太大能降低性能:有较少的内存为其他内存结构,一些接入能找到内容要慢于一个小一点的池。
Shared的大小
在初始化参数文件中用SHARED_POOL_SIZE设置大小。实际大小依赖其他因素,例如
SGA内存范围,默认大小8388608bytes(8MB)。
Library cache
Library cache 包括shared sql和pl/sql areas:完全解析和编译pl/sql块和sql
pl/sql块包括:过程、函数、包、触发器、匿名pl/sql块
Data Dictionary Cache
Data Dictionary Cache保存字典对象
二the library cache
用于保存sql语句和pl/sql块,共享给所有用户。
用LRU(least recently used)算法管理
用于预防语句重新解析
报告错误ora-04031当共享池没有空闲内存。