10046:SQL到底是如何执行的
10053:SQL为什么要这样执行
一、数据库代价的计算方法
Oracle数据库代价的计算:
8i版本 COST=I/O,9i以上版本 COST=I/O + CPU (I/O占大约98%的比例,CPU大约占2%的比例)
Cost = (
#SRds + --单块读时间
#MRds * mreaditm / sreadtim + --多块读时间
#CPUCycles / (cpuspeed * sreadtim) --CPU时间
)
二、生成10053事件
2.1 10053事件有两个级别:
Level 2:2级是1级的一个子集,它包含以下内容:
Column statistics
Single Access Paths
Join Costs
Table Joins Considered
Join Methods Considered (NL/MS/HA)
Level 1: 1级比2级更详细,它包含2级的所有内容,在加如下内容:
Parameters used by the optimizer
Index statistics
2.2 启用10053事件:
ALTER session set tracefile_identifier='masicong';
ALTER SESSION SET EVENTS='10053 trace name context forever, level 1';
ALTER SESSION SET EVENTS='10053 trace name context forever, level 2';
关闭10053事件:
ALTER SESSION SET EVENTS '10053 trace name context off';
2.3 SQL_trace路径
在Oracle 10g中,SQL_TRACE生成的trace文件默认路劲是$ORACLE_BASE/admin/SID/udump.
在Oracle 11g,trace 默认路径在:$ORACLE_BASE/diag/rdbms/orcl/orcl/trace目录下