设为首页 收藏本站
查看: 707|回复: 0

[经验分享] Oracle中sql量化分析工具

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-1-7 10:26:48 | 显示全部楼层 |阅读模式
Oracle提供的量化分析工具有explain,sql*trace,tkprof,auto*trace,awr,addm,sql*profiling,sql access advisor,sql tuning advisor,ash等
此次主要整理了explain,sql*trace,tkprof,auto*trace的使用
1.explain
2.sql*trace
3.tkprof
4.auto*trace


1.explain的使用
1.1 先创建plan_table
    @?/rdbms/admin/utlxplan ;
1.2 分析sql语句执行计划
    explain plan for select * from dba_objects ;
1.3 查看sql语句执行计划
    @?/rdbms/admin/utlxpls.sql; 9i下只查看串行执行计划,10g既查看串行也查看并行
    @?/rdbms/admin/utlxplp.sql; 查看并行执行计划
explain并没有真正的执行sql语句,所以实际过程可能与explain分析结果不相同。如explain分析之后,又对相关表建立了新的索引或者删除了索引、采集了新的统计信息等操作



10g中的新功能 dbms_xplan
dbms_xplan.display
    显示存储在v$sql_plan视图中的语句执行计划
dbms_xplan.display_cursor
    显示任何加载的cursor中的语句执行计划
dbms_xplan.display_awr
    显示保存在awr中的语句执行计划
select plan_table_output from table(dbms_xplan.display()) ;


2.sql*trace和tkprof的使用
大致的过程如下所示
database--(sql trace)--trace file--(tkprof)--report file



sql*trace和explain不同的是,sql*trace不是针对单个sql语句进行执行计划分析的,而是在会话级,甚至实例级对sql语句进行跟踪,并在操作系统中产生相应的trace文件
sql*trace是跟踪sql语句的真实执行执行情况,Oracle提供tkprof程序将trace文件转换为可读性较强的文件
2.1 在会话级进行跟踪
1
2
alter session set sql_trace = true ;
execute dbms_session.set_sql_trace(true) ;



   其他会话的跟踪
1
execute dbms_system.set_trace_in_session(session_id,serial_id,true);



分析的时候,首先查看那些会话比较消耗资源,然后从v$session视图查询session_id,serial_id,通过以上的命令对这些会话的活动进行跟踪和分析
2.2 在实例级进行跟踪
设置sql_trace为true即可
建议不要采取这个措施,会对数据库产生较大的压力,会产生太多的trace文件
使用sql_trace产生的trace文件,原始文件阅读起来相对比较费劲,可以使用tkprof程序进行转换
例如:

tkprof tracefile outputfile [options]
tkprof tracefile outputfile sys=no explain=hr/hr sort=execcput print=3
sys=no表示不分析sys用户执行的sql语句
explain=hr/hr 表示连接到hr用户,并进行执行计划分析
sort=execcput 表示按照CPU消耗值,对该trace文件所包含的sql语句按照排序进行分析
print=3 表示只是分析前3条sql语句
直接在os输入tkprof可以查看所有的帮助
tkprof产生的文件,主要分析以下内容
1.各语句执行情况的统计信息
2.各语句的执行路径信息


3.autotrace的使用


3.1 打开autotrace
set autotrace on
set timing on
执行sql语句
3.2 只看执行计划、统计信息
set autotrace traceonly
3.3 只看执行计划
set autotrace traceonly explain
autotrace是语句真正执行之后的执行计划
3.4 只看统计信息
set autotrace statistics
3.5 查看帮助
set autotrace
Usage: SET AUTOT[RACE] {OFF | ON | TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]
3.6 如何查看统计信息
重点查看consistent gets和physical reads指标,分别代表内存消耗和磁盘IO消耗,单位是数据块大小(db_block_size)。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-161360-1-1.html 上篇帖子: windows2003上10G oracle的备份 下篇帖子: Oracle高水位High Water Mark(HWM)简介 Oracle
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表