日期:2014-05-16  浏览次数:20438 次

Oracle调优笔记

1.内存调优
注:SGA中的shared pool中,系统自动优先缓存datadictionary cache,对系统性能影响较大的是library cache。
1.1 library cache 调优(v$librarycache/v$sql/v$sqlarea/v$sqltext/v$db_object_cache)
判断:要不要调整library cache?判断条件:v$librarycache.pinhitratio|gethitratio尽量接近100%
?? ?1.1.1 存储对象所消耗的内存预估:
?? ?select sum(SHARABLE_MEM) from? v$db_object_cache;
?? ?1.1.2 经常执行的sql消耗的内存预估:
?? ?select sum(SHARABLE_MEM) from v$sqlarea where EXECUTIONS>100;
?? ?1.1.3 每个用户打开游标,需要250个字节:
?? ?select sum(250*USERS_OPENING) from v$sqlarea;
?? ?1.1.4 keep在shared pool中:
?? ?先创建dbms_shared_pool:
?? ?@?/rdbms/admin/dbmspool.sql
?? ?创建后:
?? ?execute dbms_shared_pool.keep('package_name');----------------------将package keep
?? ?execute dbms_shared_pool.keep('address,hash_value');----------------将匿名的块 keep
?
1.2 data dictionary cache 调优(v$rowcache)
判断:要不要调整data dictionary cache?
判断标准:v$rowcache.(gets-getmisses)/gets尽量接近100%
?? ?1.2.1 由于没有单独调整数据字典高速缓冲的参数,但是系统又优先缓存data dictionary cache,只能调整shared pool的总体大小。
?? ?
1.3 UGA
?? ?1.3.1 使用共享服务器模式的时候,如没有配置large pool,用户会话数据(排序等等)和游标状态(共享sql)会在SGA。
?? ? ? ? ?因此如果发现一个报表系统shared pool特别大,有没有配置large pool,请检查是否使用了共享服务器模式。
?? ?1.3.2 UGA预估:
?? ? ? ? ?SELECT 'current session uga memory',SUM(VALUE)/1024 size_kb FROM v$mystat a,v$statname b? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?? ? ? ? ?WHERE a.STATISTIC#=b.STATISTIC#? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?? ? ? ? ?AND b.NAME IN ('session uga memory')? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?? ? ? ? ?GROUP BY NAME? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?? ? ? ? ?UNION ALL? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?? ? ? ? ?SELECT decode(name,'session uga memory','all session uga memory',name),SUM(VALUE)/1024 size_kb FROM v$sesstat a,v$statname b
?? ? ? ? ?WHERE a.STATISTIC#=b.STATISTIC#? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?? ? ? ? ?AND b.NAME IN ('session uga memory','session uga memory max')? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?? ? ? ? ?GROUP BY NAME;
?
1.4 db buffer cache(V$sysstat/v$buffer_pool_statistics/v$buffer_pool/v$sysstat/v$sess_io/v$wait_stat)?
?? ?1.4.1 db buffer caceh和datafile之间的交互:
?? ?
?? ? ? ? ? ? ? ? ? ?------DBWn-------->? ? ?
?? ? ? ?buffer cache? ? ? ? ? ? ? ? ? ?datafile
?? ? ? ? ? ? ? ? ? ?
<---服务器进程-----
?? ? ? ? ? ? ? ?
?? ?
1.4.2dbbuffercacheLRU列表:? ? ? ? ? ? ? ? ?
?? ?传入的块从
LRU的冷端复制到缓冲区中,然后该缓冲区的数据会放到LRU列表的中部,在根据情况上下浮动。
?? ?
?? ?
1.4.3DB_CACHE_ADVICEoff-ready-on
?? ?
?? ?
1