zoukankan      html  css  js  c++  java
  • oracle监控进程的具体操作

    在实际工作中,我们经常发现系统比较慢,但是具体原因不清楚,需要我们跟踪到数据库内部看到底执行了什么,这就需要我们使用trace文件,下面是我自己总结的一点tip。

    应用场景一:知道某个用户,想跟踪这个用户的操作

    1.找到SID和serial#
    select * from v$session 根据machine program type找个这个用户的sid,serial#

    2.找到trace文件路径
    根据v$session的paddr找对对应的v$process的addr
    select tracefile from v$process where addr='4D3CD904'

    3.开启trace
     exec dbms_monitor.session_trace_enable(sid,serial#)

    4.开启文件输出
      alter session set sql_trace=true;

    5.session操作,让客户端执行一些操作

    6.检查文件是否存在,oracle11g默认在/opt/oracle/diag/rdbms/orcl/orcl/trace/
      也可以查询select * from v$diag_info where name='Default Trace File';
      获取默认路径地址

    7. 关闭trace
    alter session set sql_trace=false;
    exec dbms_monitor.session_trace_enable(sid,serial#,false);

    8.tkprof格式化输出
      在trace文件路径下可以执行tkprof dbname_ora_2000.trc /opt/out/traceview.txt
      tkprof存在$ORACLE_HOME/bin下,如果没有配置环境变量需要注意
       tkprof colm_ora_2056.trc /opt/out/trace.txt print=100 record=/opt/out/sql.txt sys=yes

    应用场景二:如果系统负载比较高,想找到负载重的进程到底做了什么,可以按如下操作
      1.例如首先从os上利用top命令找到当前占用cpu资源最高的一个进程的PID号9999;
      2.数据库中根据PID号找到相应的sid和serial#
       select s.sid,s.serial# from v$session s,v$process p where s.paddr=p.addr and p.spid='9999';
      3.开启trace和文件输出,后面就一样操作了。

     trprof参数:
      tkprof tracefile outputfile [explain= ] [table= ] [print= ] [insert= ] [sys= ] [sort= ]
      <1>table=schema.tablename Use 'schema.tablename' with 'explain=' option.
         用于指定在将执行规划写进输出文件之前,TKPROF用于临时存放执行规划所用表的架构和名称
      <2>explain=user/password Connect to ORACLE and issue EXPLAIN PLAN.
      <3>print=integer List only the first 'integer' SQL statements.
         只列出输出文件中的第一个INTEGER的SQL语句,若忽略,则TKPROF将列出所有跟踪的SQL语句
      <4>aggregate=yes|no
         若用户指定AGGREGATE=NO,TKPROF将不会对相同SQL文本的多个用户进行汇总
      <5>insert=filename
         List SQL statements and data inside INSERT statements.
         SQL脚本的一种,用于将跟踪文件的动机信息存储到数据库中
      <6>sys=yes/no
         TKPROF does not list SQL statements run as user SYS.
         用于启动或禁止将用户SYS所发布的SQL语句列表到输出文件之中,也包括递归SQL(为执行用户的SQL语句,ORACLE还必须执行一些附加语句)语句在内。默认为YES
      <7>record=filename
         Record non-recursive statements found in the trace file.
         对于跟踪文件中的所用非递归SQL语句,TKPROF 将以指定的名称来创建某个SQL脚本。用于对跟踪文件中的用户时间进行重放
      <8>aits=yes|no
          Record summary for any wait events found in the trace file.
      <9>sort=option
         Set of zero or more of the following sort options:
         在将被跟踪的SQL语句列表输出到跟踪文件之前,先将其按照指定排序选项的降序关系对其进行排序;若指定了多种排序选项,那么根据排序选项所指定值的和的降序关系对其进行排序;若忽略此参数,那么TKPROF将按照使用次序把语句列表到输出文件中
      
     

  • 相关阅读:
    【JavaSE】成员方法快速入门和方法的调用机制原理
    HarmonyOS实战—实现注册登录和修改密码页面
    苹果CMS自动定时采集教程
    HarmonyOS实战—统计按钮点击次数
    HarmonyOS实战—点击更换随机图片
    C语言 main 函数
    C语言 vprintf 函数和 printf 函数区别
    C语言 vprintf 函数
    C语言 va_start / va_end / va_arg 自定义 printf 函数
    C语言 va_arg 宏
  • 原文地址:https://www.cnblogs.com/tippoint/p/2944491.html
Copyright © 2011-2022 走看看