一般在OLAP环境中,大表在进行全表扫描的时候一般会出现direct path read等待事件,如果在OLTP环境中,出现大量的direct path read直接路径读取,这样就有问题了。一般在OLTP中,都是事物型的sql,如果想sql执行效率,那么最好从内存当中读取数据,直接从数据文件中读取,会产生大量的IO读取,那后果可想而知了。这里就可能需要我们禁用direct path read。
而禁用的方法则采用使用10949事件禁止全表扫描的时候,使用direct path read
SQL> alter system set event='10949 TRACE NAME CONTEXT FOREVER, level 1' scope=spfile;(需要重启后生效)
SQL>alter system set events '10949 TRACE NAME CONTEXT FOREVER, level 1'; (立即生效,不需要重启数据库)