DB file scattered read:
经常是全表扫描引起的,检查全表扫描的必要性,试着把小的表cache住避免重复读进,因为全表扫描放在LRU的最近最少使用端。
1、 DB File Sequential Read:
一般是单个块读,如索引读等。在事务多的系统中正常会偏高。确认索引读的必要性, 调整DB_CACHE_SIZE。一般是较差的表连接顺序、低效率的索引。
2、 Free Buffer:
系统内存在等待空闲的buffer。如果已SQL调优,需增大DB_BUFFER_CACHE。可能特定的SQL引起数据占用大量BUFFER,一般是大量的DML操作产t生,而DBWR写得不够快。可以增加DBWR进程或增加磁盘数量。
3、 Buffer Busy:
一般不能大于1%。查看Buffer Wait Satics部份或V$WAITSTAT,如果是segment header的等待,增大freelist groups或pctused。如果是undo header,增大rollback segments,如果是undo block,需要降低相应表格的数据密度或增大DB_CACHE_SIZE。如果是data block,可以移动数据到另一个块来避免热块,增大表的freelists或使用自动管理表空间。或者使用更小的block size来避免热块.如果是index block,可重建索引、分区索引或使用反向键索引。
4、 Latch Free
一般不超过0.5%,Most latch problems are related to the failure to use bind variables (library cache latch), redo generation issues (redo allocation latch), buffer cache contention issues (cache buffers LRU chain), and hot blocks in the buffer cache (cache buffers chain).
5、 Enqueue:
Enqueue是保护共享资源的一种锁,FIFO。如防止两个人同时更新一条数据等。有ST enqueue,HW enqueue,TX4 enqueue,TM enqueue,ST enqueue是字典管理表空间的管理和分配锁,HW is used with high-Water mark of a segment,分配extents会引起锁。TX4 有三种,第一种是复写唯一索引,要回滚或提交来释放锁,第二种是rowids,当有多用户update the same fragment时要回滚或提交来释放锁。第三种是多用户同时update the same block。如果没有空余的ITL slots,会产生lock.增加initrans或maxtrans 来允许 multiple ITl slots,或加大pctfree。TM enqueues 在进行DML操作时为了防止DDL操作影响到对象而加的lock.
6、 Log Buffer Space
写log buffer的速度比LGWR写进redo logs的速度快时,或者日志切换太慢导致的。可以加大log files或log buffer,或者将日志放在I/O更好的磁盘。
7、 Log File Switch
提交请求在等待logfiles switch (archive或chkpt)。确保归档磁盘没有满或太慢,DBWR是不是因为I/O而太慢。增加或增大redo logs,增加DBWR进程。
8、 Log File Sync.
Log file sync 进程等待LGWR从Log buffer写到redo logs完成。将redo log 放在更快的磁盘上,或分在不同盘上,不用RAID 5(写性能不好),用直接I/O的系统或RAW。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/668365/viewspace-1000260/ ,如需转载,请注明出处,否则将追究法律责任。