direct path read这个等待事件表示Oracle读取数据块直接进入PGA,而非SGA中的Buffer Cache中。
SQL> select name,parameter1,parameter2,parameter3,wait_class from v$event_name where name='direct path read';
NAME PARAMETER1 PARAMETER2 PARAMETER3 WAIT_CLASS
-------------------- --------------- ---------- ---------- ------------------------------------------------------
direct path read file number first dba block cnt User I/O
p1:绝对文件号 p2:第一个数据块号 p3:总共读了多少块。
产生这个等待事件的原因大概有以下几种:
1、磁盘排序IO(Sort Area不足时,排序用到的临时数据会被写到临时表空间上去,当读取这些数据时就使用直接读);
2、并行查询;
3、预读取(当一个进程认为某个数据块将很快被用到而发出IO请求时)
4、Hash Join(Hash Area不足)
5、IO负载系统中,服务进程处理缓存的速度比系统IO返回数据到缓存的速度更快时
在OLTP系统中如果该等待事件过于明显,通常的可能是磁盘排序造成的,应该找出在磁盘排序的SQL,对其优化。
direct path write这个等待事件表示Oracle直接从PGA写入到数据文件/临时文件。
p1:绝对文件号 p2:第一个数据块号 p3:总共读了多少块。
SQL> select name,parameter1,parameter2,parameter3,wait_class from v$event_name where name='direct path write';
NAME PARAMETER1 PARAMETER2 PARAMETER3 WAIT_CLASS
-------------------- --------------- ---------- ---------- ----------------------------------------------------------------
direct path write file number first dba block cnt User I/O
产生这个等待事件的原因大概有以下几种:
1、直接数据载入操作(如CTAS、SQL*Loader设置Direct选项等);
2、并行DML操作;
3、磁盘排序(排序内存空间不足,数据写入磁盘);
4、载入NOCACHE数据段;