-
使用SQL*Loader: 当使用Oracle SQL*Loader工具进行大批量数据装载时,默认会启用直接路径读以提高数据导入速度。
-
ALTER TABLE ... ENABLE/DISABLE ROW MOVEMENT: 在修改表的行移动特性时,如果需要对整个表进行扫描,可能会触发直接路径读操作。
-
CREATE TABLE AS SELECT (CTAS): 当执行
CREATE TABLE AS SELECT语句且指定了UNRECOVERABLE或NOLOGGING选项时,Oracle会使用直接路径读取源表的数据并直接写入新创建的表。 -
DBMS_STATS.GATHER_TABLE_STATS: 使用DBMS_STATS包收集统计信息时,若指定了
ESTIMATE_PERCENT => 0参数(全表扫描),并且启用了直接路径读取,则统计信息收集过程可能采用直接路径读取数据。 -
INSERT /*+ APPEND */: 当插入大量数据到表中,并且使用了
APPEND提示来绕过Buffer Cache时,Oracle会使用直接路径读将数据直接从数据文件读入并写入新的数据块。 -
ALTER TABLE MOVE/TABLESPACE/COMPRESS/DECOMPRESS: 执行
ALTER TABLE命令中的某些操作,如移动表至新的表空间、压缩或解压缩表时,也可能导致直接路径读取和写入。 -
外部表操作: 处理外部表时,Oracle有时会用到直接路径读取外部数据文件内容。
-
Data Pump Expdp/Impdp: 数据泵工具(Data Pump Export/Import)在导出或导入大容量数据时,利用直接路径读取磁盘上的数据文件,从而避免Buffer Cache带来的潜在瓶颈。
-
Oracle Recovery Manager (RMAN) 恢复操作: RMAN在执行特定类型的恢复操作时,比如部分或完全恢复,为了提高性能,可能也会选择直接路径读取备份集中的数据。
-
并行查询优化: 在运行大规模并行查询时,Oracle优化器可能会决定使用直接路径读取以减少锁争用和提高并发性,特别是在多用户环境下处理大型表。
