--内存池是否紧张
select
name, --内存池名称
is_shared, --是否是共享的
is_overflow, --是否用到了备份池
org_size/1024.0/1024.0, --内存池初始大小
TOTAL_size/1024.0/1024.0, --内存池总大小(包括扩展的)
RESERVED_SIZE/1024.0/1024.0, --当前已分配大小(包括扩展的)
DATA_SIZE/1024.0/1024.0, --实际有效字节
EXTEND_SIZE, --每次扩展多少
TARGET_SIZE, --目标大小
N_EXTEND_NORMAL , --TARGET范围内累计扩展次数
N_EXTEND_EXCLUSIVE --超过TARGET累计扩展次数
from v$mem_pool
order by TOTAL_size desc;
--注意:
--1、N_EXTEND_EXCLUSIVE如果长期大于0,说明长期从池外扩展,可能存在内存泄露。需要重点关注。
--2、用到备份池的话,需要保持高度关注,此时系统非常危险。
--3、内存池创建的线程号creator可以与session的thrd_id关联,查看对应的某个会话的内存使用情况。
--4、如果RESERVED_SIZE比org_size小,说明内存池非常空闲,需要把对于的初始内存放小,否则浪费。
--5、如果TOTAL_size比TARGET_SIZE大,说明内存池不够,经常向池外申请,需要把对于的参数调大。尽量保持每个池自持。
--命中率
select name,avg(rat_hit) from v$bufferpool group by name;
--bufferpool是否空闲
--注意重点:
--如果free很多说明该缓冲区很空闲,可以适当的调整降低buffer缓冲区参数值。
--如果free项为0,或者N_DISCARD64非零,表示该缓冲区经常淘汰。这种情况,就说明对应的缓冲区参数太小,导致频繁淘汰,需要调整对应的缓冲区的参数。
select
name, --缓冲区名称
avg(n_pages), --页数
avg(free), --空闲页数目
avg(N_DISCARD64) --淘汰的页数
from v$bufferpool group by name;
--内存使用总量
select
(select sum(n_pages * page_size)/1024/1024 from v$bufferpool)||'MB' as BUFFER_SIZE,
( select sum(total_size)/1024/1024 from v$mem_pool)||'MB' as mem_pool,
(select sum(n_pages * page_size)/1024/1024 from v$bufferpool)+(select sum(total_size)/1024/1024 from v$mem_pool)||'MB' as TOTAL_SIZE
From dual;
--内存的使用情况
--其中:
--memory pool size in bytes: 内存池总的大小
--memory used bytes: 内存池使用的内存大小
--memory used bytes from os: 内存池从操作系统分配的大小
select name ,stat_val/1024.0/1024.0 from v$sysstat where CLASSID=11;
文章
阅读量
获赞