zoukankan      html  css  js  c++  java
  • [转]如何得到Oracle跟踪文件的文件名

    转自:如何得到跟踪文件的文件名

    跟踪文件非常有助于我们分析问题,跟踪文件的文件名可以用以下查询得到:

    SELECT 
      d.VALUE
      || '/'
      || LOWER (RTRIM (i.INSTANCE, CHR (0)))
      || '_ora_'
      || p.spid
      || '.trc' trace_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 p.addr = s.paddr
    ) 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 v$parameter
       WHERE NAME = 'user_dump_dest'
    ) d; 
    TRACE_NAME
    -----------------------------------------------------------------
    /u01/app/oracle/diag/rdbms/logdw/logdw/trace/logdw_ora_8535.trc

    但是每次都要默写如此常常的SQL语句非常痛苦,我们可以对其包装成函数,然后让public都可以执行:

    create or replace function get_trace_name return varchar2 as
    	v_result varchar2(300); 
    begin
      SELECT 
        d.VALUE
        || '/'
        || LOWER (RTRIM (i.INSTANCE, CHR (0)))
        || '_ora_'
        || p.spid
        || '.trc' trace_name
      INTO v_result
      FROM 
      (
        SELECT 
          p.spid
        FROM 
          v$mystat m, v$session s, v$process p
        WHERE 
          m.statistic# = 1 AND s.SID = m.SID AND p.addr = s.paddr
      ) 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 v$parameter
         WHERE NAME = 'user_dump_dest'
      ) d; 
      return v_result; 
    end get_trace_name;

    建立公共同义词:

    sys$logdw@logdw SQL> create or replace public synonym get_trace_name for get_trace_name; 
    sys$logdw@logdw SQL> grant execute on get_trace_name to public;

    现在普通用户也可以使用了:

    sys$logdw@logdw SQL> connect test/test
    Connected.
    test$logdw@logdw SQL> show user; 
    USER is "TEST"
    test$logdw@logdw SQL> select get_trace_name() from dual; 
    
    GET_TRACE_NAME()
    ------------------------------------------------------------------
    /u01/app/oracle/diag/rdbms/logdw/logdw/trace/logdw_ora_8757.trc
  • 相关阅读:
    Linux随笔 DNS搭建
    总算亲自看见了一个网站被黑后的页面。
    [转]XP如何禁止媒体文件预览
    用Word2007发Blog的配置方法(多图)。
    C#通过http访问olap
    测试Word2007
    用IronPython作为.Net的脚本语言。
    用批处理写的显示磁盘剩余空间的小程序。
    事开机时Num Lock键打开。
    快捷方便的对js文件进行语法检查。
  • 原文地址:https://www.cnblogs.com/killkill/p/1764299.html
Copyright © 2011-2022 走看看