v$event_name :event的定义
查询等待事件:v$session_wait,v$system_wait,v$session_wait_history
SELECT SID,EVENT FROM V$SESSION_WAIT;
查看各种事件的归类:
Select name,wait_class from v$event_name ;
db file sequential read :出现原因可能在多表连接中,表的连接顺序存在问题,没有正确使用驱动表;或者可能索引使用存在问题。
db file scattered read :可能和全表扫描或快速全索引扫描有关,大量此事件可能意味着应用问题或索引缺失。
查询全表扫描的对象:
SELECT DISTINCT object_name, object_owner
FROM v$sql_plan p
WHERE p.operation = 'TABLE ACCESS'
AND p.options = 'FULL'
AND object_owner = 'ANTICELLDA';
查询全索引扫描对象:
SELECT DISTINCT object_name, object_owner
FROM v$sql_plan p
WHERE p.operation = 'INDEX'
AND p.options = 'FULL SCAN'
AND object_owner = 'ANTICELLDA';
查询全表扫描的sql语句:
SELECT sql_text
FROM v$sqlteXt t, v$sql_plan p
WHERE t.hash_value = p.hash_value
AND p.operation = 'TABLE ACCESS'
AND p.options = 'FULL'
ORDER BY p.hash_value, t.piece;
Direct path read/write:直接路径读/写,通常发生在Oracle直接读数据到PGA/从PGA写数据到数据文件或临时文件,这个操作不经过SGA。DSS(决策支持系统Decision Support System)系统中存在大量是正常的。OLTP(联机事务处理on-line transaction processing)则意味着系统应用存在问题,导致大量的磁盘排序读取操作,临时表空间使用频繁。V$tempseg_usage, v$tempfile
Enqueue :队列等待,一种保护共享资源的锁定机制,如果此事件比较显著,需要进一步追踪哪个类别的锁定。常见的有ST,HW,TX,TM等。ST Enqueue用于空间管理和字典管理的表空间(DMT)的区间分配,在DMT中,典型的是uet$和fet$数据字典的争用。
Latch free:闩锁释放等待,说明有进程正在等待某个latch 被释放。Latch 用于保护SGA 中共享内存结构,防止被多个用户同时访问。Latch通常是操作系统利用内存中的某个位置,通过设置变量为0或非0来表示latch 是否已经被取得。v$latch,latch分为 willing-to-wait,immediate。前者表示请求的latch不能立即得到,请求进程等待一段时间后再次发出请求,进程重复执行此过程直到得到latch。后者表示请求进程不会等待,而是继续执行下去。
对于willing-to-wait的latch,过程如下:
https://files.cnblogs.com/yifan268/latch.pdf
查询长时间运行的事务,可能很多是全表扫描,注意opname
Select * from v$session_longops;