当前位置:  开发笔记 > 编程语言 > 正文

发现使用oracle临时表空间的进程/查询

如何解决《发现使用oracle临时表空间的进程/查询》经验,为你挑选了1个好方法。

Oracle FAQ定义了临时表空间,如下所示:

临时表空间用于管理数据库排序操作和存储全局临时表的空间.例如,如果您连接两个大型表,并且Oracle无法在内存中进行排序,则会在临时表空间中分配空间以执行排序操作.

这很棒,但我需要更多关于使用空间的详细信息.由于应用程序设计的怪癖,大多数查询都会进行某种排序,因此我需要将其缩小到客户端可执行文件,目标表或SQL语句.

从本质上讲,我正在寻找线索来更准确地告诉我这个(相当大的应用程序)可能有什么问题.任何形式的线索都可能有用,只要它比"分类"更精确.



1> Michael OShe..:

我不确定您已经掌握了哪些信息,但使用以下查询将指出哪些程序/用户/会话等当前正在使用您的临时空间.

SELECT   b.TABLESPACE
       , b.segfile#
       , b.segblk#
       , ROUND (  (  ( b.blocks * p.VALUE ) / 1024 / 1024 ), 2 ) size_mb
       , a.SID
       , a.serial#
       , a.username
       , a.osuser
       , a.program
       , a.status
    FROM v$session a
       , v$sort_usage b
       , v$process c
       , v$parameter p
   WHERE p.NAME = 'db_block_size'
     AND a.saddr = b.session_addr
     AND a.paddr = c.addr
ORDER BY b.TABLESPACE
       , b.segfile#
       , b.segblk#
       , b.blocks;

一旦你发现哪个会话正在造成损害,那么看看正在执行的SQL,你应该走在正确的道路上.

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有