1.查询等待事件的几个动态视图
v$session,v$session_wait,$vsession_wait_histroy,v$event_name,
v$session_longops:记录了长时间(运行时间>6S)运行的事务,可能很多是全表扫描操作
v$segment_statistics:找出物理读取显著的索引或者是表段
2.常见的几个等待事件
1)。db file sequential read(数据文件连续读取):可能表示在多表连接中,表的连接顺序存在问题;
可能没有正确的使用驱动表;或者索引的使用存在问题;
说明: 在大多数情况下,通过索引可以更快的获取记录;
但是在很多情况下,使用索引并不是最佳的选择,
比如读取较大表的大量数据,全表扫描可能比索引扫描更明显。
2)。db file scattered read(数据文件离散读取):可能意味着应用问题 或者表索引缺失
3)。 direct path read/write(直接路径读取): 最常见的原因是磁盘排序导致
说明:如果系统存在过多的磁盘排序,会导致临时表空间操作频繁;这种情况,可以为不同用户分配不同的
临时表空间,使用多个临时文件,写入不同磁盘或者裸设备,以降低竞争。
或者可以适当增大pga_aggregate_target 以缩减磁盘排序对硬盘的写入。
4)。日志文件相关等待
log file switch,log file sync 等
5)。Enqueue (队列等待)
是一种保护共享资源的锁定机制;该机制保护共享资源,以避免并发操作而损坏数据。
6)。Latch free(等待闩锁释放)
说明有进程正在等待某个latch 被释放