10046的使用和看法
目录:
10046的 定义
10046生成语句方法:
10046级别
tkprof常用参数
与10046相关的两个参数:
10046怎么看?
分析下面一段代码:
SQL trace 的使用方法:
10046的 定义
sql_trace/10046事件是oracle提供的用于进行sql跟踪的手段,其内容包括sql的解析过程、sql的执行计划、绑定变量的使用、会话发生的等待事件。
10046生成语句方法:
SQL> alter session set events '10046 trace name context forever,level 12';
现在随便查询一个什么,如:
select * from dba_users where rownum<20
查看trace文件
SQL> select * from v$diag_info;
里面有个Default Trace File
1 Default Trace File
/u01/app/oracle/diag/rdbms/prod1/PROD1/trace/PROD1_ora_28613.trc
10g的话,show parameter dump;找udump
10046级别
目的:获取sql、pl_sql等相关语句的执行情况解析
10046级别:共4个级别 分别为0、1、4、8、12
10046事件是SQL_TRACE的扩展,被戏称为"吃了兴奋剂的SQL_TRACE"
有效的追踪级别:
① 0级:SQL_TRACE=FASLE
② 1级:SQL_TRACE=TRUE,这是缺省级别
③ 4级:1级+绑定变量
④ 8级:4级+等待事件
⑤ 12级:4级+8级
tkprof:oracle内置的针对跟踪文件格式化的一种工具
alter session set events '10046 trace name context forever, level 12'; --当前会话启用跟踪
alter session set events '10046 trace name context off'; --关闭当前会话跟踪
select sid,serial#,username from v$session where username is not null; --查询sid和serial
execute dbms_system.set_ev(sid,serial#,10046,12,''); --在当前会话对其它会话进行跟踪
execute dbms_system.set_ev(sid,serial#,10046,0,''); --在当前会话关闭其它会话跟踪
tkprof常用参数
tkprof 回车查看一下帮助 就知道怎么用了 tkprof 解析源追踪文件 解析完成的文件
filename 由SQL trace产生的输入跟踪文件
explain SQL语句的explain plain
recoed 创建非递归SQL语句的SQL脚本
waits 记录等待事件的汇总
SORT 根据一个或多个项目提供分类数据,如PRSCPU(CPU时间分析)、PRSELA(已用时间分析)等
table 定义表的名称,TKPROF实用程序暂时将执行计划放入该表中
sys 启用或禁用由sys给出的一组SQL语句
PRINT 仅列出指定数量的SQL语句,而不是所有的SQL语句
insert 创建存储跟踪数据库信息的脚本
与10046相关的两个参数:
show parameter max_dump_file_size;
对trace文件的大小限制
show parameter timed_statistics;
对重要信息的收集是否开启
10046怎么看?
tkprof文件都包含以下内容:
- sql语句
- 分析 执行 获取调用的次数
- 被处理的行数
- 所使用CPU的秒数
- 所使用的IO
- 库高速缓存未命中
- 可选的执行计划
- 行源 操作列表
- 一个报告,总结分析了在跟踪文件中有多少相似和完全不同的语句,如果同样的语句,parse列总是一个大值,说明没有用上绑定变量
count = number of times OCI procedure was executed。OCI为oracle的调用接口,提供了一组可对ORACLE数据库进行存取的接口子例程(函数),通过在第三代程序设计语言(如C语言)中进行调用可达到存取ORACLE数据库的目的。
cpu = cpu time in seconds executing 以秒为单位的
elapsed = elapsed time in seconds executing 以秒为单位的消耗时间
disk = number of physical reads of buffers from disk 物理读
query = number of buffers gotten for consistent read 为了一致性读获得的空间。
在一致性读模式下,所有parse、execute、fetch所获得的buffer的数量。一致性模式的buffer是用于给一个长时间运行的事务提供一个一致性读的快照,缓存实际上在头部存储了状态。
current = number of buffers gotten in current mode (usually for update) 数据库块命中的次数,通常是为了update
在current模式下所获得的buffer的数量。一般在current模式下执行insert、update、delete操作都会获取buffer。
rows = number of rows processed by the fetch or execute call 每一种调用类型所处理的行的总数
还有这些:
Misses in library cache during parse:发生在解析的硬解析数量,如果是软解析则Misses in library cache during parse将为0
Misses in library cache during execute:发生在执行调用阶段的硬解析数量。如果在执行调用时没有硬解析发生,Misses in library cache during execute这一行将不存在。
重点参考:http://czmmiao.iteye.com/blog/1493765
分析下面一段代码:
SQL ID: 00fqk94bdzqnj Plan Hash: 644658511
select sid,serial#,username
from
v$session where username is not null
call count① cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.01 0.01 0 0 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 2 0.00 0.00 0 0 0 2
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 4 0.01 0.01 0② 0 0 2
Misses in library cache during parse: 1
Optimizer mode: ALL_ROWS
Parsing user id: SYS
Number of plan statistics captured: 1
①假设count这列,fetch部分执行了17324次,获得的rows行数是259806,两者相除,就可以得出一次获取,能够获取多少行记录,一次获得15行数据,怀疑是用了数组取操作。
②理论上,elapsed time=CPU time+disk time,即如果elapsed time为1.85,CPU为1.82,那么disk可能就是3。但是也可能是有等待事件,把大量时间花在了等待事件上。
③可以通过磁盘IO所占逻辑IO的比例,disk/query+current来判断磁盘IO的情况,太大的话有可能是db_buffer_size过小,当然这也跟SQL的具体特性有关
④query+current/rows 平均每行所需的block数,太大的话(超过20)SQL语句效率太低,数据过于分散,可以考虑重组对象
⑤通过SQL ID: 06nvwn223659v Plan Hash: 0 标识出一个新的SQL分析,会发现很多是系统自己的SQL,直接不用看
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28853590/viewspace-2151123/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/28853590/viewspace-2151123/
10046的使用和看法相关推荐
- wowpve服务器优势,PVE服务器法师对本职业的一点看法
看过了各位高手的对法师的一些看法,其中被喷的也不在少数,其实大家公认的在魔兽世界里没有最强的职业,只有更强的玩家,所有流派的诞生都是各位玩家在不断的探索中发现的,我是一个休闲法师玩家在这里只谈谈自己的 ...
- 【译】Monolith first —— Martin Fowler 对于微服务架构的看法
转载文章,文章经 LiteCodes 授权,转载至本博客. 原文地址:[译]Monolith first -- Martin Fowler 对于微服务架构的看法 整体架构先行(Monolith fir ...
- 区块链技术如何改变我们对DNA的看法
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 试想一下,有人得到了你的一些最私人的信息,并用它来攻击你,窃取你的身份,实施诈骗.这对于你来说特别有压力,对吧?那么,倘 ...
- 维护学习的一点体会与看法
学习维护的知识也有2个月了,对于知识的学习也有一定的看法.接下来我就说一下我对学习的看法. 首先,你要学会自学,无论是看书还是上网查资料,维护的知识很多很杂,想要人一下子来教是不可能.只能是自己慢慢的 ...
- 包云岗:关于RISC-V成为印度国家指令集的一些看法
作者 | 包云岗 本文于2017年11月28日完稿,将在<中国计算机学会通讯>2018年第1期发表. 处理器指令集是软硬件的接口,是核心基础软硬件生态系统的基石,其重要性不言而喻.2011 ...
- 漫画 | 你对加班有什么看法?
点击关注公众号,Java干货及时送达 今天这篇漫画讲述的是王大拿初入职场,面试中被问对于加班的态度和看法,而引发的一系列故事- 本期漫画情节纯属虚构 如有雷同,纯属巧合. 编后 社会 or 职场是一个 ...
- 关于swing的一些看法
这半年在研究im,xmpp相关方面的东西,其中涉及到客户端(如spark)的一些开发问题,在技术群里,经常有人问swing的问题,看到就做了一些回答,由此想起了swing以前的一些开发经验,对其优劣做 ...
- 我对计算机的看法英语作文,我对网络的看法英语作文
我对网络的看法英语作文 Internet may have been one of the most influential but disputable existences in the worl ...
- 各大厂这个档次分配,大佬们有什么看法?
之前在论坛上看到一个各大厂这个档次分配,大佬们有什么看法?接受各种吐槽? 有网友说Amazon,IBM这算哪门子s级?linkedin不是个招聘网站吗,怎么排名这么靠前了? 就有人问了,这个排名的依据 ...
最新文章
- 饿了么交易系统5年演化史
- mysqldiff对比主从表结构是否一致
- 数据拟合matlab算法
- [Java学习]Striing StringBuffer StringBuilder 的比
- 雅虎的Web优化最佳实践
- 某大学多站联动获取webshell
- BATJ面试必会|Jvm 虚拟机篇
- struts中文问题,struts国际化问题的终极解决方案
- redis 高级实用教程
- PHP 利用cron 实现文章同步至新浪、网易等微博
- oracle 数据补齐月份,Oracle自定义函数--增加月份
- jquery基础复习-index(),
- jdk1.8下载与安装教程
- 校园卡管理系统c语言代码,基于C++的校园一卡通管理系统
- 5G关键技术简介带你揭开5G神秘面纱
- 智能硬件市场与产品概况整理
- 傻子的代码怎么写_傻瓜不写单元测试
- uva 10246 Asterix and Obelix(最短路问题拓展 dijkstra)
- 解决“npm WARN requires a peer of XXX“问题
- SD卡、记忆棒等内存卡的数据恢复方法
热门文章
- 西门子热水器替换疑问配件后持续卖 公司称安全
- 用HTML+CSS+JS写的切水果小游戏它来了
- day07-商品分类及品牌(跨域问题)
- 【ORB_SLAM2源码解读】TUM RGBD 数据集跑通ORB_SLAM2
- sqlmap蜜罐原理与实现
- 继承体系和super关键字
- 可以跟着你浪迹天涯的咖啡机,比星巴克还方便的“续命良药” | 钛空舱
- Scrapy爬取顶点小说
- pgAdmin报Connection refused (0x0000274D/10061)错误
- 数据安全--8--数据安全中的部分技术最佳实践