




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ORACLE中查看执行计划及SQL TRACE有三种方法:1. Explain planSQLexplain plan for select * from aa;查看结果:SQLselect * from table(dbms_xplan.display(); 2.Autotrace SQLset timing on -记录所用时间SQLset autotrace traceonly -自动记录执行计划然后执行SQL语句即可。3.SQL_TRACEORACLE SQL_TRACE“SQL TRACE”是Oracle提供的用于进行SQL跟踪的手段,是强有力的辅助诊断工具。在日常的数据库问题诊断和解决中,“SQL TRACE”是非常常用的方法。一般,一次跟踪可以分为以下几步:1、界定需要跟踪的目标范围,并使用适当的命令启用所需跟踪。2、经过一段时间后,停止跟踪。此时应该产生了一个跟踪结果文件。3、找到跟踪文件,并对其进行格式化,然后阅读或分析。本文就“SQL TRACE”的这些使用作简单探讨,并通过具体案例对SQL_TRACE的使用进行说明。一、“SQL TRACE”的启用。(A)SQL_TRACE说明SQL_TRACE可以作为初始化参数在全局启用,也可以通过命令行方式在具体session启用。1 在全局启用在参数文件(pfile/spfile)中指定: SQL_TRACE = true 在全局启用SQL_TRACE会导致所有进程的活动被跟踪,包括后台进程及所有用户进程,这通常会导致比较严重的性能问题,所以在生产环境中要谨慎使用。提示: 通过在全局启用SQL_TRACE,我们可以跟踪到所有后台进程的活动,很多在文档中的抽象说明,通过跟踪文件的实时变化,我们可以清晰的看到各个进程之间的紧密协调。2 在当前session级设置大多数时候我们使用SQL_TRACE跟踪当前会话的进程。通过跟踪当前进程可以发现当前操作的后台数据库递归活动(这在研究数据库新特性时尤其有效),研究SQL执行,发现后台错误等。在session级启用和停止SQL_TRACE方式如下:启用当前session的跟踪:SQL alter session set SQL_TRACE=true;Session altered.此时的SQL操作将被跟踪:SQL select count(*) from dba_users;COUNT(*)- 34结束跟踪:SQL alter session set SQL_TRACE=false;Session altered.3 跟踪其它用户进程 在很多时候我们需要跟踪其他用户的进程,而不是当前用户,这可以通过Oracle提供的系统包DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION来完成通过v$session我们可以获得sid、serial#等信息:获得进程信息,选择需要跟踪的进程:SQL select sid,serial#,username from v$session where username =* SID SERIAL# USERNAME- - - 8 2041 SYS 9 437 EYGLE设置跟踪:SQL exec dbms_system.set_SQL_TRACE_in_session(9,437,true)PL/SQL procedure successfully completed.可以等候片刻,跟踪session执行任务,捕获sql操作.停止跟踪:SQL exec dbms_system.set_SQL_TRACE_in_session(9,437,false)PL/SQL procedure successfully completed.(B) 10046事件说明10046事件是Oracle提供的内部事件,是对SQL_TRACE的增强.10046事件可以设置以下四个级别:1 - 启用标准的SQL_TRACE功能,等价于SQL_TRACE。4 - Level 1 加上绑定值(bind values)8 - Level 1 + 等待事件跟踪12 - Level 1 + Level 4 + Level 8类似SQL_TRACE方法,10046事件可以在全局设置,也可以在session级设置。对于10046事件的设置,涉及到了oracle的“诊断事件”的概念。可以参考以下链接了解详情。/323537,1.html1 在全局设置在参数文件中增加:EVENT=10046 trace name context forever,level 12此设置对所有用户的所有进程生效、包括后台进程.2 对当前session设置通过alter session的方式修改,需要alter session的系统权限:SQL alter session set events 10046 trace name context forever;Session altered.SQL alter session set events 10046 trace name context forever, level 8;Session altered.SQL alter session set events 10046 trace name context off;Session altered.3 对其他用户session设置通过DBMS_SYSTEM.SET_EV系统包来实现:SQL desc DBMS_SYSTEM.SET_EV;Parameter Type Mode Default?- - - -SI BINARY_INTEGER INSE BINARY_INTEGER IN EV BINARY_INTEGER INLE BINARY_INTEGER INNM VARCHAR2 IN其中的参数SI、SE来自v$session视图:查询获得需要跟踪的session信息:SQL select sid,serial#,username from v$session where username is not null;SID SERIAL# USERNAME- - -8 2041 SYS9 437 EYGLE执行跟踪:SQL exec dbms_system.set_ev(9,437,10046,8,eygle);PL/SQL procedure successfully completed.结束跟踪:SQL exec dbms_system.set_ev(9,437,10046,0,eygle);PL/SQL procedure successfully completed.(C)对启用方法的一些总结。因为trace的目标范围不同,导致必须使用不同的方法。?nbsp; 作用于数据库全局的,就改初始化参数。?nbsp; 只作用于本session的,就用alter session 命令。?nbsp; 作用于其它session的,就用DBMS_SYSTEM包。再加上10046诊断事件,是SQL_TRACE的增强,又多了一套方法。二、获取跟踪文件以上生成的跟踪文件位于“user_dump_dest”参数所指定的目录中,位置及文件名可以通过以下SQL查询获得:1.如果是查询当前session的跟踪文件,使用如下查询:SELECT d.value|/|lower(rtrim(i.instance, chr(0)|_ora_|p.spid|.trc trace_file_namefrom ( select p.spid from v$mystat m,v$session s, v$process p where m.statistic# = 1 and s.sid = m.sid and p.addr = s.paddr) p, ( select t.instance from v$thread t,v$parameter v where = thread and (v.value = 0 or t.thread# = to_number(v.value) i, ( select value from v$parameter where name = user_dump_dest) dTRACE_FILE_NAME-D:ORACLEPRODUCT10.2.0ADMINMYORACLEUDUMPhsjf_ora_1026.trc2.如果是查询其他用户session的跟踪文件,则根据用户的sid和#serial使用如下查询:SELECT d.value|/|lower(rtrim(i.instance, chr(0)|_ora_|p.spid|.trc trace_file_namefrom ( select p.spid from v$session s, v$process p where s.sid= and s. SERIAL#= and p.addr = s.paddr) p, ( select t.instance from v$thread t,v$parameter v where = thread and (v.value = 0 or t.thread# = to_number(v.value) i, ( select value from v$parameter where name = user_dump_dest) dTRACE_FILE_NAME-D:ORACLEPRODUCT10.2.0ADMINMYORACLEUDUMPhsjf_ora_1026.trc三、格式化跟踪文件。原始的跟踪文件是很难读懂的。需要使用oracle自带的tkprof命令行工具格式化一下。SQL$tkprof D:ORACLEPRODUCT10.2.0ADMINMYORACLEUDUMPhsjf_ora_1026.trc D:ORACLEPRODUCT10.2.0ADMINMYORACLEUDUMPhsjf_ora_1026.txt这个就可以方便的阅读了。可以在hsjf_ora_1026.txt文件中看到所有的sql语句执行次数,CPU使用时间等数据。备注:可以通过以下方法读取当前已经设置的参数对于全局的SQL_TRACE参数的设置,可以通过show parameter命令获得。当我们通过alter session的方式设置了SQL_TRACE,这个设置是不能通过show parameter的方式得到的,我们需要通过dbms_system.read_ev来获取:SQL set feedback offSQL set serveroutput onSQL declare2 event_level number;3 begin4 for event_number in 10000.10999 loop5 sys.dbm
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 市政工程招投标合同管理办法
- 城市综合体物业管理软件定制开发协议
- 全新服务项目合作合同书
- 合作社促进农民创业增收扶持协议
- 家庭农场委托管理合同协议
- 施工现场粉尘与废气控制技术
- 右冠状动脉左心室瘘病例深度剖析与诊疗进展探究
- 企业安全检查规范与制度范本
- 三年级下册实践活动教学总结报告
- 2025浙江温州市不动产登记服务中心招聘4人备考考试题库附答案解析
- 江南文化概论课件
- 2025-2026学年统编版(2024)初中道德与法治八年级上册(全册)教学设计(附目录 P133)
- 2025年财政部高层次财会人才选拔考试综合试题及答案
- 特种设备执法课件
- 2025年初级社工考试《综合能力》真题及答案
- 《MATLAB-Simulink电力系统建模与仿真》电子课件
- 部编版二年级语文上册全册教案及反思
- 服装色彩设计(PPT57页)课件
- 西门子燃气轮机技术介绍开
- F8型空气分配阀及其电空制动机
- 复旦大学简介 ppt
评论
0/150
提交评论