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

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:
????