eygle.com   eygle.com
eygle.com  
 

« 有多少病毒可以再来-记大战7y7.us | Blog首页 | 明天赴杭参加"中国网络工程师侠客行"大会 »

DBA Scripts:获得跟踪文件名称的gettrcname.sql

作者:eygle |【转载时请务必以超链接形式标明文章和作者信息及本声明
链接:

最近有很多朋友问起《深入浅出Oracle》一书中的一个脚本gettrcname.sql。
这个脚本用于获取跟踪文件的名称的,可以用于Linux/Unix环境,已经被包含在书的脚本包中。

其内容如下:
SELECT    d.VALUE
       || '/'
       || LOWER (RTRIM (i.INSTANCE, CHR (0)))
       || '_ora_'
       || p.spid
       || '.trc' trace_file_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
/

在Linux下执行该脚本输入类似:

SQL> @gettrcname

TRACE_FILE_NAME
---------------------------------------------------------------------------------------------------
/opt/oracle/admin/eygle/udump/eygle_ora_8415.trc

如我们执行一个跟踪操作:

SQL> alter session set sql_trace=true;

Session altered.

SQL> select count(*) from dba_users;

COUNT(*)
----------
9

SQL> ! head /opt/oracle/admin/eygle/udump/eygle_ora_8415.trc
/opt/oracle/admin/eygle/udump/eygle_ora_8415.trc
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning option
JServer Release 9.2.0.4.0 - Production
ORACLE_HOME = /opt/oracle/product/9.2.0
System name: Linux
Node name: jumper.hurray.com.cn
Release: 2.4.21-15.EL
Version: #1 Thu Apr 22 00:27:41 EDT 2004
Machine: i686

收录一下blue_prince提供的更简化的脚本:
SELECT    a.VALUE
       || b.symbol
       || c.instance_name
       || '_ora_'
       || d.spid
       || '.trc' trace_file
  FROM (SELECT VALUE
          FROM v$parameter
         WHERE NAME = 'user_dump_dest') a,
       (SELECT SUBSTR (VALUE, -6, 1) symbol
          FROM v$parameter
         WHERE NAME = 'user_dump_dest') b,
       (SELECT instance_name
          FROM v$instance) c,
       (SELECT spid
          FROM v$session s, v$process p, v$mystat m
         WHERE s.paddr = p.addr AND s.SID = m.SID AND m.statistic# = 0) d
/

简单解释一下,供我的读者们参考。

-The End-

By eygle on 2007-05-15 19:25 | Comments (4) | Posted to Scripts | Edit |Pageviews:

相关文章 随机文章
  • DBA Scripts:转换RDBA的文件和数据块地址
  • DBA Scripts:获取用户创建语句
  • 如何获得跟踪文件名称
  • Oracle HowTo:如何查看各个表空间的自由空间
  • 如何在Oracle中发送Email
  • Tom的法则:当你开发数据库软件时...
    推荐Kamus的新Blog
    旧文:2006数据库技术回顾与展望
    危险无处不在 中银联网站被攻陷
    Oracle分区表(Partition Table)的数量限制
    网上相关主题:
    Google

    留言 (4)

    我常用一个WINDOWS和UNIX环境通用的脚本,其实就简单改一下:)

    select a.value||b.symbol||c.instance_name||'_ora_'||d.spid||'.trc' trace_file
    from
    (select value from v$parameter where name='user_dump_dest') a,
    (select substr(value,-6,1) symbol from v$parameter where name='user_dump_dest') b,
    (select instance_name from v$instance) c,
    (select spid from v$session s,v$process p,v$mystat m where s.paddr=p.addr
    and s.sid=m.sid and m.statistic#=0) d
    /

    Posted by: blue_prince at May 16, 2007 9:35 AM

    汗,我现在笔记本上都没装Oracle了!

    谢谢:)

    Posted by: eygle at May 16, 2007 10:06 AM

    看eygle的blog,每天都有收获
    想请教m.statistic#=0代表什么?

    Posted by: jacky at May 16, 2007 4:25 PM

    m.statistic#等于多少不重要,重要的是从v$mystat中取一行记录,获得sid.v$mystat中sid都是相同的,所以取一条记录就可以了。

    Posted by: eygle at May 17, 2007 11:04 AM

    发表留言:



    Remember Me?
    (输入验证码后方可评论,谢谢支持)



    CopyRight © 2004 eygle.com, All rights reserved.