- 浏览: 239316 次
最新评论
1)10053介绍:
10053 事件是oracle 提供的用于跟踪sql 语句成本计算的内部事件,它能记载CBO 模式下oracle 优化器如何计算sql 成本,生成相应的执行计划。
用来描述oracle如何选择执行计划的过程,然后输出到trace文件里,因为我们经常看执行计划怎么执行的消耗了哪些资源,而不是常看执行计划怎么选择出来了的。
2)10053特点:
(1) 只可以了解oracle执行计划的选择过程
(2) 无法获知代价的计算公式,因为这是oracle内部的商业机密,而且每个oracle版本的优化器计算公式都不相同差距还是蛮大的,不同版本的同一个语句的代价也不一样,优化器现在还不是很成熟,还有待完善。
(3) 在这个里面我们重点要了解的是“代价”是如何计算出来的,然后我们才能了解执行计划是如何选择的。
(4) 在10053中可以了解哪些因素影响sql的执行代价
(5) 包含cost等价IO+CPU+网络+等待事件+其他代价
说明:
1、跟其他跟踪事件不同,10053提供了两个跟踪级别,但是级别2的跟踪信息比级别1少(其他跟踪事件如10046跟踪级别越高信息越多),跟踪信息将被记录到user_dump_dest目录底下
2、10053只对CBO有效,而且如果一个sql语句已经解析过,就不会产生新的trace信息。
3、如果你使用RULE优化器,那么10053也不会生成跟踪信息。
4、10053事件产生的trace文件不能用tkprof格式化。
3)使用10053事件的方法
SQL> create table t4 as select object_id id ,object_Name from dba_objects;
Table created.
SQL> create index t4_idx on t4(id);
Index created.
SQL> exec dbms_stats.gather_table_stats('TINA','T4',cascade=>true); --收集统计信息
PL/SQL procedure successfully completed.
SQL> alter session set tracefile_identifier='tina04';
Session altered.
SQL> alter session set events '10053 trace name context forever,level 1';
Session altered.
SQL> explain plan for select id,count(*) from t4 where id<2000 group by id;
Explained.
SQL> alter session set events '10053 trace name context off';
Session altered.
查看:
[oracle@oratest trace]$ cd /u01/diag/rdbms/tinadb/tinadb/trace
[oracle@oratest trace]$ ll -t |head -10
total 17552
-rw-r-----. 1 oracle oinstall 150199 Dec 25 17:30 tinadb_mmon_21083.trc
-rw-r-----. 1 oracle oinstall 16262 Dec 25 17:30 tinadb_mmon_21083.trm
-rw-r-----. 1 oracle oinstall 81658 Dec 25 17:30 tinadb_ora_5860_tina04.trc --刚刚标记tina04的trace文件
-rw-r-----. 1 oracle oinstall 31379 Dec 25 17:30 tinadb_ora_5860_tina04.trm
-rw-r-----. 1 oracle oinstall 528149 Dec 25 17:19 alert_tinadb.log
-rw-r-----. 1 oracle oinstall 8878 Dec 25 17:19 tinadb_arc1_21174.trc
-rw-r-----. 1 oracle oinstall 1884 Dec 25 17:19 tinadb_arc1_21174.trm
-rw-r-----. 1 oracle oinstall 126591 Dec 25 17:12 tinadb_ckpt_21077.trc
-rw-r-----. 1 oracle oinstall 3288 Dec 25 17:12 tinadb_ckpt_21077.trm
[oracle@oratest trace]$ more tinadb_ora_5860_tina04.trc ---只抽取部分内容显示
***************************************
SINGLE TABLE ACCESS PATH
Single Table Cardinality Estimation for T4[T4]
Table: T4 Alias: T4
Card: Original: 74797.000000 Rounded: 1956 Computed: 1955.98 Non Adjusted: 1955.98
Access Path: TableScan
Cost: 102.84 Resp: 102.84 Degree: 0
Cost_io: 102.00 Cost_cpu: 17594333
Resp_io: 102.00 Resp_cpu: 17594333
Access Path: index (IndexOnly)
Index: T4_IDX
resc_io: 6.00 resc_cpu: 433929
ix_sel: 0.026151 ix_sel_with_filters: 0.026151
Cost: 6.02 Resp: 6.02 Degree: 1
Best:: AccessPath: IndexRange
Index: T4_IDX
Cost: 6.02 Degree: 1 Resp: 6.02 Card: 1955.98 Bytes: 5
Join order[1]: T4[T4]#0
***********************
Best so far: Table#: 0 cost: 6.0206 card: 1955.9757 bytes: 9780
***********************
(newjo-stop-1) k:0, spcnt:0, perm:1, maxperm:2000
*********************************
Number of join permutations tried: 1
*********************************
Enumerating distribution method (advanced)
GROUP BY adjustment factor: 1.000000
GROUP BY cardinality: 1956.000000, TABLE cardinality: 1956.000000
SORT ressource Sort statistics
Sort width: 228 Area size: 200704 Max Area size: 40264704
Degree: 1
Blocks to Sort: 4 Row size: 16 Total Rows: 1956
Initial runs: 1 Merge passes: 0 IO Cost / pass: 0
Total IO sort cost: 0 Total CPU sort cost: 21984656
Total Temp space used: 0
Trying or-Expansion on query block SEL$1 (#1)
Transfer Optimizer annotations for query block SEL$1 (#1)
id=0 frofkke[i] (index stop key) predicate="T4"."ID"<2000
GROUP BY adjustment factor: 1.000000
Final cost for query block SEL$1 (#1) - All Rows Plan:
Best join order: 1
Cost: 6.0206 Degree: 1 Card: 1956.0000 Bytes: 9780
Resc: 6.0206 Resc_io: 6.0000 Resc_cpu: 433929
Resp: 6.0206 Resp_io: 6.0000 Resc_cpu: 433929
kkoqbc-subheap (delete addr=0x7f86edf8faa0, in-use=13728, alloc=16408)
kkoqbc-end:
:
call(in-use=13416, alloc=49184), compile(in-use=134352, alloc=149736), execution(in-use=175072, alloc=175312)
kkoqbc: finish optimizing query block SEL$1 (#1)
apadrv-end
:
call(in-use=13416, alloc=49184), compile(in-use=135264, alloc=149736), execution(in-use=175072, alloc=175312)
Starting SQL statement dump
user_id=84 user_name=TINA module=SQL*Plus action=
sql_id=cz79brb4k269b plan_hash_value=1839880947 problem_type=3
----- Current SQL Statement for this session (sql_id=cz79brb4k269b) -----
explain plan for select id,count(*) from t4 where id<2000 group by id
sql_text_length=70
4)设置其他session的10053
开启:
sys.dbms_system.set_ev(<sid>,<serial#>,10053,{1|2},")
关闭:
sys.dbms_system.set_ev(<sid>,<serial#>,10053,0,")
10053 事件是oracle 提供的用于跟踪sql 语句成本计算的内部事件,它能记载CBO 模式下oracle 优化器如何计算sql 成本,生成相应的执行计划。
用来描述oracle如何选择执行计划的过程,然后输出到trace文件里,因为我们经常看执行计划怎么执行的消耗了哪些资源,而不是常看执行计划怎么选择出来了的。
2)10053特点:
(1) 只可以了解oracle执行计划的选择过程
(2) 无法获知代价的计算公式,因为这是oracle内部的商业机密,而且每个oracle版本的优化器计算公式都不相同差距还是蛮大的,不同版本的同一个语句的代价也不一样,优化器现在还不是很成熟,还有待完善。
(3) 在这个里面我们重点要了解的是“代价”是如何计算出来的,然后我们才能了解执行计划是如何选择的。
(4) 在10053中可以了解哪些因素影响sql的执行代价
(5) 包含cost等价IO+CPU+网络+等待事件+其他代价
说明:
1、跟其他跟踪事件不同,10053提供了两个跟踪级别,但是级别2的跟踪信息比级别1少(其他跟踪事件如10046跟踪级别越高信息越多),跟踪信息将被记录到user_dump_dest目录底下
2、10053只对CBO有效,而且如果一个sql语句已经解析过,就不会产生新的trace信息。
3、如果你使用RULE优化器,那么10053也不会生成跟踪信息。
4、10053事件产生的trace文件不能用tkprof格式化。
3)使用10053事件的方法
SQL> create table t4 as select object_id id ,object_Name from dba_objects;
Table created.
SQL> create index t4_idx on t4(id);
Index created.
SQL> exec dbms_stats.gather_table_stats('TINA','T4',cascade=>true); --收集统计信息
PL/SQL procedure successfully completed.
SQL> alter session set tracefile_identifier='tina04';
Session altered.
SQL> alter session set events '10053 trace name context forever,level 1';
Session altered.
SQL> explain plan for select id,count(*) from t4 where id<2000 group by id;
Explained.
SQL> alter session set events '10053 trace name context off';
Session altered.
查看:
[oracle@oratest trace]$ cd /u01/diag/rdbms/tinadb/tinadb/trace
[oracle@oratest trace]$ ll -t |head -10
total 17552
-rw-r-----. 1 oracle oinstall 150199 Dec 25 17:30 tinadb_mmon_21083.trc
-rw-r-----. 1 oracle oinstall 16262 Dec 25 17:30 tinadb_mmon_21083.trm
-rw-r-----. 1 oracle oinstall 81658 Dec 25 17:30 tinadb_ora_5860_tina04.trc --刚刚标记tina04的trace文件
-rw-r-----. 1 oracle oinstall 31379 Dec 25 17:30 tinadb_ora_5860_tina04.trm
-rw-r-----. 1 oracle oinstall 528149 Dec 25 17:19 alert_tinadb.log
-rw-r-----. 1 oracle oinstall 8878 Dec 25 17:19 tinadb_arc1_21174.trc
-rw-r-----. 1 oracle oinstall 1884 Dec 25 17:19 tinadb_arc1_21174.trm
-rw-r-----. 1 oracle oinstall 126591 Dec 25 17:12 tinadb_ckpt_21077.trc
-rw-r-----. 1 oracle oinstall 3288 Dec 25 17:12 tinadb_ckpt_21077.trm
[oracle@oratest trace]$ more tinadb_ora_5860_tina04.trc ---只抽取部分内容显示
***************************************
SINGLE TABLE ACCESS PATH
Single Table Cardinality Estimation for T4[T4]
Table: T4 Alias: T4
Card: Original: 74797.000000 Rounded: 1956 Computed: 1955.98 Non Adjusted: 1955.98
Access Path: TableScan
Cost: 102.84 Resp: 102.84 Degree: 0
Cost_io: 102.00 Cost_cpu: 17594333
Resp_io: 102.00 Resp_cpu: 17594333
Access Path: index (IndexOnly)
Index: T4_IDX
resc_io: 6.00 resc_cpu: 433929
ix_sel: 0.026151 ix_sel_with_filters: 0.026151
Cost: 6.02 Resp: 6.02 Degree: 1
Best:: AccessPath: IndexRange
Index: T4_IDX
Cost: 6.02 Degree: 1 Resp: 6.02 Card: 1955.98 Bytes: 5
Join order[1]: T4[T4]#0
***********************
Best so far: Table#: 0 cost: 6.0206 card: 1955.9757 bytes: 9780
***********************
(newjo-stop-1) k:0, spcnt:0, perm:1, maxperm:2000
*********************************
Number of join permutations tried: 1
*********************************
Enumerating distribution method (advanced)
GROUP BY adjustment factor: 1.000000
GROUP BY cardinality: 1956.000000, TABLE cardinality: 1956.000000
SORT ressource Sort statistics
Sort width: 228 Area size: 200704 Max Area size: 40264704
Degree: 1
Blocks to Sort: 4 Row size: 16 Total Rows: 1956
Initial runs: 1 Merge passes: 0 IO Cost / pass: 0
Total IO sort cost: 0 Total CPU sort cost: 21984656
Total Temp space used: 0
Trying or-Expansion on query block SEL$1 (#1)
Transfer Optimizer annotations for query block SEL$1 (#1)
id=0 frofkke[i] (index stop key) predicate="T4"."ID"<2000
GROUP BY adjustment factor: 1.000000
Final cost for query block SEL$1 (#1) - All Rows Plan:
Best join order: 1
Cost: 6.0206 Degree: 1 Card: 1956.0000 Bytes: 9780
Resc: 6.0206 Resc_io: 6.0000 Resc_cpu: 433929
Resp: 6.0206 Resp_io: 6.0000 Resc_cpu: 433929
kkoqbc-subheap (delete addr=0x7f86edf8faa0, in-use=13728, alloc=16408)
kkoqbc-end:
:
call(in-use=13416, alloc=49184), compile(in-use=134352, alloc=149736), execution(in-use=175072, alloc=175312)
kkoqbc: finish optimizing query block SEL$1 (#1)
apadrv-end
:
call(in-use=13416, alloc=49184), compile(in-use=135264, alloc=149736), execution(in-use=175072, alloc=175312)
Starting SQL statement dump
user_id=84 user_name=TINA module=SQL*Plus action=
sql_id=cz79brb4k269b plan_hash_value=1839880947 problem_type=3
----- Current SQL Statement for this session (sql_id=cz79brb4k269b) -----
explain plan for select id,count(*) from t4 where id<2000 group by id
sql_text_length=70
4)设置其他session的10053
开启:
sys.dbms_system.set_ev(<sid>,<serial#>,10053,{1|2},")
关闭:
sys.dbms_system.set_ev(<sid>,<serial#>,10053,0,")
发表评论
-
ETL工具--kettle简介
2016-02-24 11:21 0oracle ETL工具---数据迁移 常用的有:OWB(o ... -
oracle 游标实例
2015-12-31 17:23 1205oracle游标 游标-----内存 ... -
oracle绑定变量学习
2015-12-25 17:01 1590绑定变量(binding variable) ... -
oracle 绑定变量
2015-12-24 17:26 0关键词: 绑定变量(binding variable),共享池 ... -
oracle插入大量数据
2015-12-23 17:35 1417oracle插入大量数据 1.生 ... -
ORA-03113:end-of-file on communication channel
2015-12-23 14:32 1148测试上面的一个库 plsql报错:shared memory ... -
oracle分区表【转】
2015-12-23 14:20 438oracle分区表 1.表空间及 ... -
迁移数据文件到ASM【转】
2015-12-23 11:53 7711.迁移数据文件到ASM 1) ... -
adrci命令
2015-12-23 11:46 3056一、adrci说明 在oracle11g中,dump ... -
用户+角色+权限
2015-12-21 17:58 901角色与用户权限的学习 ... -
oracle database link
2015-12-21 17:08 876目前我的数据库里只有tinadb一个实例,要创建db link ... -
oracle回收站
2015-12-21 14:22 432oracle回收站 1.drop table books; ... -
使用nid修改sid和dbname
2015-12-21 15:29 770如非必要,不建议在生产库上对dbid进行修改 1、修改dbi ... -
rman模拟故障恢复实验
2015-12-18 16:08 1154补充1:restore database和recover da ... -
rman命令学习-tina(下)
2015-12-18 16:07 1162五、rman删除 delete命令 删除相关的 ... -
rman命令学习-tina(上)
2015-12-18 16:06 884RMAN学习-tina rman的功能非常强大,下面我们来一 ... -
oracle profile介绍
2015-12-16 17:34 625profile文件的介绍: Oracle系统中的profi ... -
oracle缩小表空间
2015-12-18 16:59 1762oracle缩小表空间: oracle常用的此类命令Alte ... -
oracle数据库的启动和关闭【转】
2015-12-16 15:02 1141数据库的启动和关闭 Or ... -
oracle的主要进程
2015-12-16 14:21 1189[size=small]oracle的主要进程 Oracle实 ...
相关推荐
论文研究-核电厂激发事故初因的人因事件分析.pdf, 描述了B类人因事件的定义和分类,建立了B类人因事件分析基本程序和方法,该方法已在国内某核电厂最近的HRA分析中得到...
在新的结构下,阐述了很多种生存分析的方法,并结合生物化学家教授升迁、累犯再次被捕两个例子的数据,循序渐进地介绍了离散时间方法、Cox回归模型等事件史和生存分析必不可少的研究手段,以及如何去研究包含多重...
CSFB事件分析
基于热水器采集的数据,根据水流量和停顿时间间佃划分为不同大小的 时间区间,每个区间是—个可理解的—次完整用水事件,并以热水器— 次完整用水事件作为—个基本事件。 从独立的用水事件中识别出其中属于洗浴的...
学术不端案例分析-“汉芯事件”案例分析 问题: 1.“汉芯事件”中评审专家和相关部门要负什么责任? 2.是什么趋势陈进从务实变为务虚? 3.每⼀个额学家从事科学活动的⽬的与利益是什么关系? 4.个⼈利益是否...
采用事件分析法预测股票,是一种有效的方法
android事件分析 分析代码。。。。。。。20字啊20字
危机公关事件分析农夫山泉事件分析XXXX0617.pptx
计算机网络安全大事件分析及防范.pdf
介绍如何通过抓包分析网络入侵事件。同时介绍常有的上传webshell的检测方式,方法。
360安全响应中心安全事件分析报告-2020下半年.pdf
《Python数据与分析》张良均版 实战家用热水器用户行为分析与事件识别源码分享,建议使用 jupyter notebook打开,Pycharm也可以打开
FDA输注泵一级召回事件分析,高雪梅,文强,背景随着医疗器械不良事件报告的数量不断增加,需要一个有效的工具来分析不良事件监测数据并识别风险信号。目的建立医疗器械的危
危机公关事件分析-农夫山泉事件分析XXXX0617.pptx
事件分析报告 事件单号 001 事件性质 影响生产 未影响生产 事件标题 软件出现新的补丁 部位地点 ***项目 起始时间 2021年 7 月 22 日 9 时 21分 终止时间 2021年 7 月 22 日 12时 01分 事件处理人 编写时间 2021年 7...
用stata实现事件研究法的实证分析,基于某公司借壳上市的实例,分析超额收益
事件树分析案例(1).ppt
01 监管场所异常事件视频监智能分析系统技术要求 - 设备符合项(1).pdf
一种用于网络安全态势分析系统事件关联分析的设计方案,苗科,徐国胜,介绍了网络安全事件关联分析产生原因以及研究方法,分析这些方法优缺点,在此基础上提出了一种用于网络安全态势分析系统事件关联
国内外网络安全事件分析.pptx