当前位置:   article > 正文

SQL及SESSION 跟踪分析

sql session
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/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/28275505/viewspace-1834756/

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/158229
推荐阅读
相关标签
  

闽ICP备14008679号