惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

宝玉的分享
宝玉的分享
J
Java Code Geeks
S
SegmentFault 最新的问题
L
LangChain Blog
M
MIT News - Artificial intelligence
Stack Overflow Blog
Stack Overflow Blog
IT之家
IT之家
量子位
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
雷峰网
雷峰网
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
MongoDB | Blog
MongoDB | Blog
Microsoft Security Blog
Microsoft Security Blog
腾讯CDC
H
Help Net Security
阮一峰的网络日志
阮一峰的网络日志
Jina AI
Jina AI
N
Netflix TechBlog - Medium
A
About on SuperTechFans
博客园 - 叶小钗
美团技术团队
人人都是产品经理
人人都是产品经理
D
DataBreaches.Net

博客园 - liuqun

oracle优化7(如何干预执行计划 - hints) oracle优化5(用索引提高效率) oracle优化4(sql语句性能诊断,sql执行计划) oracle优化3(访问Table的方式) oracle优化2(选用适合的ORACLE优化器) oracle优化1(数据库、数据表、数据表I/O优化原则) Oracle常用命令14(.net / java代码调用(sql代码、程序包过程)) Oracle常用命令13(数据库的启动、关闭) Oracle常用命令12(导入:imp、导出:exp) Oracle常用命令11(触发器) Oracle常用命令10(程序包) Oracle常用命令9(函数) Oracle常用命令8(过程) Oracle常用命令7(游标) Oracle常用命令6(PL/SQL) Oracle常用命令5(同义词、视图、索引) Oracle常用命令4(表分区) Oracle常用命令3(DDL、DML、TCL、DCL、序列) Oracle常用命令2(用户、角色管理)
oracle优化6(使用sql_trace/10046事件进行数据库诊断)
liuqun · 2011-04-03 · via 博客园 - liuqun

对该会话进行跟踪,产生trace文件,然后对该文件用tkprof程序格式化一下

使用SQL Trace            

Alter session set sql_trace=true;           //启用跟踪

生成的跟踪文件路径:@oracle_home\ diag\rdbms\orcl\orcl\trace(版本:11g

Alter session set sql_trace=false;          //禁用跟踪

使用sql_trace,常用初始化参数设置

Timed_statistics=true;

不设置的话,一些重要信息不会被收集到

Max_dump_file_size( alter session set Max_dump_file_size=unlimited; )

设置跟踪文件的大小

Tkprof按照格出输出

得到执行计划的方式很有用,因为它包含其它额外信息,如SQL语句执行的每个阶段(ParseExecuteFetch)分别耗费的各个资源情况(CPUDISKelapsed)

Tkprof 跟踪文件.trc 输出文件.txt

跟踪其他用户进程

Dbms_system.set_sql_trace_in_session

说明:三个参数,sid/serial#/sql_trace

得到当前系统的会话:

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

       SID    SERIAL# USERNAME

---------- ---------- -------------

       134         34 USER_EB

       192        344 USER_EB

       199       6280 USER_EB

设置跟踪,用户角色要为sys

Exec Dbms_system.set_sql_trace_in_session(134,34,true);

停止跟踪:

Exec Dbms_system.set_sql_trace_in_session(134,34,false);

10046事件说明

10046事件是oracle提供的内部事件,是对sql_trace的增强,可以设置以下4个级别:

Level 1:启用标准的sql_trace功能,等价于sql_trace

Level 4:等价于Level 1+绑定值

Level 8: 等价于Level 4+等待事件跟踪

Level 12: 等价于Level 1+level 4 + level 8

当前session设置

当前session设置

Alter session set events '10046 trace name context forever';

或者:

Alter session set events ‘10046 trace name context forever,level 8’;

禁用:

Alter session set events ‘10046 trace name context off;

对其他用户session设置

Dbms_system.set_ev

说明:5个参数 sid/serial#/ev/level/username

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

       SID    SERIAL# USERNAME

---------- ---------- -------------

       70         127 USER_EB

       192        344 USER_EB

       199       6280 USER_EB

执行跟踪:

Exec Dbms_system.set_ev(70,127,10046,8,'user_eb');

结束跟踪:

Exec Dbms_system.set_ev(70,127,10046,0,'user_eb');