用x$ktsso查实际占用temp的sql

数据库版本11204RAC

执行占用temp表空间sql

SQL> select TABLESPACE_NAME,TABLESPACE_SIZE/1024/1024 ,FREE_SPACE/1024/1024 from dba_temp_free_space;

TABLESPACE_NAME                TABLESPACE_SIZE/1024/1024 FREE_SPACE/1024/1024
------------------------------ ------------------------- --------------------
TEMP                                                  50                   49


SQL>  select wm_concat(id) from test;

WM_CONCAT(ID)
--------------------------------------------------------------------------------
20,46,28,15,29,3,25,41,54,40,26,17,13,9,43,51,38,7,56,19,14,6,44,21,45,35,5,23,4

 

SQL> select TABLESPACE_NAME,TABLESPACE_SIZE/1024/1024 ,FREE_SPACE/1024/1024 from dba_temp_free_space;

TABLESPACE_NAME                TABLESPACE_SIZE/1024/1024 FREE_SPACE/1024/1024
------------------------------ ------------------------- --------------------
TEMP                                                  50                    4


SQL> select distinct(sid) from v$mystat;

       SID
----------
        29

在新窗口查看占用temp语句以及大小

SQL> select TABLESPACE_NAME,TABLESPACE_SIZE/1024/1024 ,FREE_SPACE/1024/1024 from dba_temp_free_space;

TABLESPACE_NAME                TABLESPACE_SIZE/1024/1024 FREE_SPACE/1024/1024
------------------------------ ------------------------- --------------------
TEMP                                                  50                    4

 

SQL> select a.sql_id,TABLESPACE,SEGTYPE,BLOCKS*8/1024 size_M,sql_text from gv$sort_usage a,v$sql b where a.sql_id=b.sql_id;

INST_ID  SQL_ID        TABLESPACE                      SEGTYPE       SIZE_M SQL_TEXT
---------- ------------- ------------------------------- --------- ---------- --------------------------------------------------
      1         915zybs3jpuk4     TEMP                  LOB_DATA          45 select distinct(sid) from v$mystat

发现v$sort_usage视图查出的sql _id不是我们所执行的占用temp表空间的sql

查看v$sort_usage视图定义发现视图中的sql _id是v$session中的 prev_sql_id,为当前执行sql。

SQL> select * from V$FIXED_VIEW_DEFINITION where view_name='GV$SORT_USAGE';

VIEW_NAME                      VIEW_DEFINITION
------------------------------ ----------------------------------------------------------------------------------------------------
GV$SORT_USAGE                  select x$ktsso.inst_id, username, username, ktssoses, ktssosno, prev_sql_addr,                                                                    prev_hash_value, prev _sql_id, ktssotsn, decode(ktssocnt, 0, 'PERMANENT', 1,                                                                    'TEMPORARY'), decode(ktssosegt, 1, 'SORT', 2, 'HASH', 3, 'DATA', 4, 'INDEX', 5,                                                                'LOB_DATA', 6, 'LOB_INDEX' , 'UNDEFINED'), ktssofno, ktssobno, ktssoexts, ktssoblks,                                                      ktssorfno from x$ktsso, v$session where ktssoses = v$session.saddr and ktssosno
                                                   = v$session.serial

从11.2.0.2版本之后,x$ktsso增加了KTSSOSQLID列,它真正代表消耗高temp表空间的sql

在1节点执行,2节点x$ktsso为空。

SQL> select b.inst_id,a.sid,b.ktssosno serial#,b.ktssosqlid sql_id,b.ktssoblks*8/1024 mb,c.sql_text from v$session a,x$ktsso b,v$sql c where b.ktssoses=a.saddr and b.ktssosno=a.serial# and b.ktssosqlid=c.sql_id;

   INST_ID        SID    SERIAL# SQL_ID                MB SQL_TEXT
---------- ---------- ---------- ------------- ---------- --------------------------------------------------
         1         29         27 63mbdmx49z7a5         45 select wm_concat(id) from test

也可以用v$active_session_history的temp_space_allocated字段值大小去查看对应的实际sql

 

参考

http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html
https://blog.csdn.net/Hehuyi_In/article/details/100749874
Bug 17834663 - Include SQL ID for statement that created a temporary segment in GV$SORT_USAGE (Doc ID 17834663.8)
FIND SQL_ID RESPONSIBLE FOR TEMP SEGMENT USAGE(Bug ID 17834663)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值