ITPub博客

首页 > 数据库 > Oracle > SQL及SESSION 跟踪分析

SQL及SESSION 跟踪分析

原创 Oracle 作者:xj951423274 时间:2015-11-12 21:10:07 0 删除 编辑
1,set autotrace on/traceonly ..    
SQL> @$ORACLE_HOME/rdbms/admin/utlxplan
SQL> @$ORACLE_HOME/sqlplus/admin/plustrce
SQL> grant plustrace to public;

2,explain plan for select * from table_demo   
查看执行计划 select * from table(dbms_xplan.display);

3,SQL_TRACE 跟踪当前session的活动
启动:alter session set sql_trace=true;
      .......sql 或 事物操作..........
关闭:alter session set sql_trace=flase;
追踪文件在select * from v$diag_info; 的default trace file 目录中。

4,10046和10053事件,用于SQL追踪
10046 level 有4个级别  1,相当于上面的sql_trace 4,在level 1上增加了绑定变量的追踪
             8,在level 1上增加了wait事件的追踪  12,相当于8+4;
10053 level 有两个级别1和2,2没有1的内容详细  用于跟踪sql语句成本计算的内部事件         
开启:alter session set events '10046 trace name context forever,level 12';
    ---------sql 或 事物操作---------
关闭:alter session set events '10046 trace name context off';
tkprof 格式化trace文件 便于阅读 参数 sys=no 不看sys的信息;

5,从V$SQL_PLAN 视图获得cursor中的执行计划
  首先,收集统计信息 analyze talbe demo compute statistics; ---只收集表的统计信息
      exec dbms_stats.gather_tables_stats(user,'demo',cascade=>true);---cascade级联收集索引统计信息
  其次,select sql_id from v$sql where sql_text like 'select * from demo'; ---找到SQL_ID
  最后,select plan_table_output from table(dbms_xplan.display_cursor('SQL_ID'));

6,对某SSION跟踪
  exec dbms_system.set_sql_trace_in_session(sid,serial#,true|false);
  trace文件 /u01/diag/ORACLE_SID/ORACLE_SID/trace/*
  select 'oracle_ora_'||spid||'.trc' from v$process where addr =(select paddr from v$session where sid=xxx);

7,从AWR或EM 或第三方工具 中获得SQL的执行计划
  

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28275505/viewspace-1834756/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 常见等待事件
请登录后发表评论 登录
全部评论

注册时间:2013-07-29

  • 博文量
    22
  • 访问量
    29242