博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用SQL_Trace和10046事件进行数据库诊断
阅读量:6243 次
发布时间:2019-06-22

本文共 1294 字,大约阅读时间需要 4 分钟。

使用SQL_Trace和10046事件进行数据库诊断步骤:

1. 利用top命令找到当前占用cpu资源最高的一个数据库进程的PID。

2. 在数据库中根据PID号找到相应的SID号和SERIAL#

select s.sid, s.serial# from v$session s, v$process p where s.paddr=p.addr and p.spid='[PID]';

或select sid, serial#, username from v$session where username is not null;

3. 使用dbms_system.set_sql_trace_in_session包来对这个session进行trace

exec dbms_system.set_sql_trace_in_session([SID],[SERIAL#],true); 需要sysdba权限

4. 找到生成的trace文件,默认在$Oracle_base/admin/[SID]/[SID]/updump中,也可以用下面语句查询位置和名称:

  select d.value||'\'||lower(rtrim(i.instance, chr(0)))||'_ora_'||p.spid||'.trc' trace_file_name from

    ( select p.spid from v$mystat m, v$session s, v$process p where m.statistic#=1 and s.sid=m.sid and s.paddr=p.addr)p,

      (select t.instance from v$thread t, v$parameter v where v.name='thread' and (v.value=0 or t.thread#=to_number(v.value))) i,

        (select value from $parameter where name='user_dump_dest') d;

  查看路径:show parameter user_dump_dest;

5. 用TKPROF对trace文件格式化:

tkprof test.trc output.txt explain=[username]/[pwd] aggregate=yes sys=no waits=yes sort=fchela;

递归SQL:当发出一条简单的sql命令后,Oracle数据库要在后台解析这条命令,并转换为Oracle数据库的一系列后台操作,这些后台操作被称为递归sql。

查询表结构信息: select index_name, table_name, column_name from user_ind_columns where table_name=upper('test');

 

 

转载于:https://www.cnblogs.com/PerOpt/p/3735685.html

你可能感兴趣的文章
CSS3 Transitions属性打造动画的下载按钮特效
查看>>
eclipse 快捷键
查看>>
js常用的事件对象
查看>>
SharePoint 2013 禁用搜索服务
查看>>
[原]一个针对LVS的压力测试报告
查看>>
拥塞控制和流量控制
查看>>
[LeetCode] Sum Root to Leaf Numbers
查看>>
IO设计模式:Reactor和Proactor对比
查看>>
Qt Widgets——动作类与小部件菜单项
查看>>
ASP.NET MVC搭建项目后台UI框架—5、Demo演示Controller和View的交互
查看>>
[转]动态规划解最长公共子序列问题
查看>>
WorldWind源码剖析系列:影像存储类ImageStore、Nlt影像存储类NltImageStore和WMS影像存储类WmsImageStore...
查看>>
ORA-00600: 内部错误代码, 参数: [kqlnrc_1]
查看>>
Android Studio常用小技巧
查看>>
和为S的两个数字
查看>>
NPOI导出模板样式
查看>>
jsp请求由servlet响应的方式
查看>>
16 款最流行的 JavaScript 框架
查看>>
使用awrextr.sql导出awr原始数据
查看>>
分享一次失败的项目实践经验
查看>>