Oracle 性能调优学习笔记(五)-- buffer Cache调优C

Oracle Wait Interface检查瓶颈原因
         v$session_wait
      v$session_event
      v$system_event
      需要增加cache size的情况
         1.任何事件等待.
      2.SQL语句的优化
      3.操作系统换页严重
      4.比较低的命中率
     
    开启DB_CACHE_ADVICE设为on.
    根据v$DB_CACHE_ADVICE决定是否需要调整.
    调整DB_CACHE_SIZE.
    
    如果命中率很高,检查v$db_cache_advice查看
    是否可以减少db_cache_size大小.
    
    如果在不同的表空间的块大小不等,可以设置多个块大小.
    需要设置以下动态参数,可以动态调整:
    DB_CACHE_SIZE:
    DB_KEEP_CACHE_SIZE:
    DB_RECYCLE_CACHE_SIZE:
    尽量减少随机访问大表的large segs;
        
            第一种方法:
   select o.object_name,count(*) number_of_blocks
      from dba_objects o,v$bh bh
      where o.data_object_id=bh.objd
      and o.owner!='SYS'
      group by o.object_name
      order by count(*);
            方法二:
     1. select data_object_id,object_type
        from dba_objects
      where object_name =upper('segment_name');
     2. select count(*) buffers
         from v$bh
      where objd=data_object_id_value;
     3. select name ,block_size ,sum(buffers)
    from v$buffer_pool
     group by name,block_size
     having sum(buffers)>0;
     4.
     % cache userd by segment_name =[buffers(step2)/total buffers(step3)]
    
    keeP buffer pool 指导基线
     execute dbms_stats.gather_table_stats('HR','DEPTMENTS');
     select table_name ,blocks
        from dba_tables
       where owner='HR'
       and table_name='DEPTMENTS';
   
   RECYCLE BUFFER POOL:用于批处理情况下.
     select owner#,name ,count(*) blocks
        from v$cache
     group by owner#, name;
    查看会话的io命令中情况
     select s.username ,io.block_gets,io.consistent_gets,
        io.physical_reads
       from v$sess_io io,v$session s
       where io.sid=s.sid;
   所有buffer pool中的命中率
    select name, 1-(physical_reads/(db_block_gets+consistent_gets)) "HIT_RATIO"
        from v$buffer_pool_statistics
      where db_block_gets+consistent_gets>0;
    
    keep pool:重复访问的大小为小于default的10%,
    recycle pool:只能在事物中使用.segment大小为默认buffer pool的两倍.
    查看每一个buffer pool中block的多少
    select id,name ,block_size,buffers from v$buffer_pool;
    
   缓存常用表
      常见的全表扫描的block将放在LRU的尾部,那么这些block将很块
    被出局.CBO经常使用使用这个表但是很小,解决这种情况就需要使用
             缓存表,这是block将放在LRU头部.小表全部扫描其实是最快的.
             缓存表:
         创建表WITH Cache,
             create table phone
       (
         emp_id number,
      phoneNum number
       )tablespace tbs_data
       storage(
        initial 50k
        next 50k
        pctincrease 0
       )cache;
       默认表创建使用nocache,除非指定使用cache.
        
           SQL查询WITH Cache,
      select /*+CACHE */ last_name,first_name from employee;
     ALter修改表WITH Cache.
      alter table employee cache;
             缓存表建议不要放在buffer cache中,一般放在keep pool中. 
       ASSM
            管理空闲空间通过数据库segment的自动管理.
            跟踪segment空间使用bitmaps而不是free lists.
   提供空间利用率.
   创建表空间时候指定.
   OEM支持.
   
   create tablespace bit_seg_ts
     datafile ''
      size 1M
       extent management local
    segment space management auto;
   
   create table bit_seg_table
    (id number)
     tablespace bit_seg_ts;
               

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值