文档介绍:Oracle数据库性能优化实务第五讲:共享池分析
Oracle的共享池
第2页
library cache包含 SQL语句,分析的代码,执行计划等
data dictionary cache包含 table, column等对象的定义以及权限的信息
共享池的大小由 SHARED_POOL_SIZE 确定.
Shared pool
Librarycache
Datadictionarycache
SGA
共享池分解
第3页
56400000
56800000
56C00000
57000000
57400000
57800000
57C00000
58000000
Shared Pool 包含下面组成部分
Permanent Area
Segmented Arrays
Library Cache
Row Cache
Reserved Area
Permanent Area
第4页
数据库启动时固定分配
包含以下组件:
进程
会话
Segmented Arrays(锁、事务、资源等)
保留池
保留给大对象使用的区域
只有当共享池无法分配时才分配
V$SHARED_POOL_RESERVED
SHARED_POOL_RESERVED_SIZE
定义保留池的大小
缺省是SHARED_POOL_SIZE的5%
_SHARED_POOL_RESERVED_PCT
缺省 5%
_SHARED_POOL_RESERVED_MIN_ALLOC
缺省 4400
超过这个大小才被认为是大对象
自动共享内存管理
到底如何分配?
Java pool
Database
buffer cache
Redo log
buffer
Shared pool
Large pool
Fixed SGA
Streams pool
SGA
自动共享内存管理的原理
定期捕获系统状态
将内存分配给需要的对象
启动时恢复上次关闭时的分配情况
SPFILE
自动共享内存管理与共享池抖动
自动内存管理适用于SGA资源充足的情况
如果系统负载较高,并且SGA资源不足的情况,使用ASMM可能出现SGA抖动
除了设置SGA_TARGET外,设置某些缓冲池的最小值,可以缓解SGA抖动
SGA抖动严重的系统,建议关闭自动共享内存管理
注意监控V$SGA_RESIZE_OPS视图
共享池故障的危害
影响系统性能
消耗过多CPU资源
导致系统宕机
共享池主要性能问题
共享池不足
共享池碎片
SQL分析/执行过于频繁
业务高峰期大量编译存储过程和视图
过高的LOGON/LOGOFF频率