首先比较了两个环境的数据库,发现生产和测试的几个参数略有不同。生产环境因为应用的特殊性,优化模式是RULE,而测试环境为默认的ALL_ROWS。另外db_file_multiblock_read_count这个参数生产环境是16,而测试环境为64。
更改了这几个参数的设定,使测试环境跟生产一致。然后重新导出。跟踪了一下进程,做了个trace,过程如下:
查找当前正在运行的SID:select
sid,username,program,status from V$session where status='ACTIVE'
and
username<>'SYS';(sid=424)
查找该session对应的SPID:select *
from V$process where addr=(select paddr from V$session where
sid=424);(spid=26087)
设定需要跟踪的进程号:oradebug setospid 26087
设定事件的跟踪级别:oradebug event 10046 trace name context forever,level
12;
查看trace文件的名称:oradebug tracefile_name
查看trace文件中直接路径读的延时信息:cat c2_dw01_29428.trc|grep direc|more
结果是这样的:
WAIT #49: nam='direct path read' ela= 28 file number=6 first
dba=1488 block cnt=16 obj#=22742 tim=4758196513709
WAIT #49: nam='direct path read' ela= 13 file number=6 first
dba=1536 block cnt=9 obj#=22742 t