Oracle 性能调优学习札记(三)- 数据库配置和IO相关知识

Oracle 性能调优学习笔记(三)-- 数据库配置和IO相关知识

 Oracle IO架构
   Oracle 11g支持的文件系统:
    1.文件系统(NAS,SAN,普通文件系统)
    2.裸设备
    3.ASM
   Oracle进程和文件
   CKPT,LGWR,ARCn,SERVER均读写控制文件.
  
   性能指导
    1.保持磁盘io比较低
    2.均匀分配数据到不同磁盘
    3.使用临时表空间
  
   文件分布:
   分布数据文件和redo文件.
   条带化表数据信息.
   合理分布数据到不同表空间(数据和索引),减少磁盘的竞争.
   减少和数据库无关联的磁盘IO.
  
   表空间的使用原则
      system表空间保留为数据字典对象.
   创建本地表空间管理数据.(dbca默认本地表空间管理)
   将表和索引分开管理(不同表空间,不同磁盘)
      创建undo表空间.
   存储大对象在自己的表空间中.
   创建多个临时表空间.
  
  
   IO统计工具
       服务器IO
     v$filestat
     v$tempstat
     v$datafile
    
    
     文件的物理读写情况
     select phyrds,phywrts,d.name
          from v$datafile d,v$filestat f
       where d.file#=f.file#
       order by d.name;
    Statspack
    利用OEM查看信息
   
  文件条带化
    操作系统
   1.使用操作系统条带化或者RAID冗余
   2.条带的大小
    手动条带:
   create table or alter table ..... allocate;
 优化全表扫描的操作
       1.全部扫描并非全部是不好的.
          在表的数据比较少的情况下,全表扫描其实效率是最高的.
    2.DB_FILE_MULTIBLOCK_READ_COUNT初始化参数检查全表扫描的IO:
           取决于操作系统.数据库块是服务器块的两倍.
     CBO执行计划
    3.监控长期运行的全表扫描使用
       v$session_logops
    查看全表扫描信息
    select name ,value
       from v$sysstat
     where name like '%table scan%';
    查看long table是否时间比较长.
   
    监控全部扫描操作
    1.查看长操作的进度
    select sid,serial#,opname,to_char(start_time,'HH24:MI:SS') as "Start",
        (sofar/totalwork)*100 as PERCENT_COMPLETE
     from v$session_longops;
    2.dbms_application_info.set_session_longops(rindex,slno,"Operation X",obj,0,sofar,totalwork,"table","tables");
   
    检查点:
      增量检查点:
                   CKPT更新控制文件.
       在检查点切换时候,  CKPT更新控制文件和数据文件头.
      全检查点:(全部,表空间)
          CKPT更新控制文件和数据文件头.
       DBWn将检查点队列中缓存块写到数据文件.
   检查点的初始化参数化
    FAST_START_IO_TARGET
    LOG_CHECKPOINT_INTERVAL
    LOG_CHECKPOINT_TIMEOUT
    FAST_START_MTTR_TARET
   
   v$instance_recovery中获取实例恢复信息
   
  重做日志组和成员
      重做日志组至少有两组,一般设计为多路复用.
     重做日志配置:
      1.提供足够多的组减少等待.
   2.redo log文件放在磁盘比较块的磁盘中.
   3监控重做日志
    v$logfile
    v$log
    v$log_history
     最好将LGWR进程写磁盘和ARCn进程分布在不同磁盘.
     alter system archive log all to '';
    
     v$archive_dest;
     v$archived_log:
     v$archive_processes: