[20180102]11g的V$SORT_USAGE视图.txt

简介: [20180102]11g的V$SORT_USAGE视图.txt --//当出现排序使用临时表空间的情况时,查询V$SORT_USAGE那个会话使用,但是执行的sql语句不一定是问题语句,通过例子说明.

[20180102]11g的V$SORT_USAGE视图.txt

--//当出现排序使用临时表空间的情况时,查询V$SORT_USAGE那个会话使用,但是执行的sql语句不一定是问题语句,通过例子说明.

1.环境:
SCOTT@book> @ &r/ver1

PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

2.测试:

--//session 1:
SCOTT@book> @ &r/spid
       SID    SERIAL# PROCESS                  SERVER    SPID       PID  P_SERIAL# C50
---------- ---------- ------------------------ --------- ------ ------- ---------- --------------------------------------------------
       274          5 16928                    DEDICATED 16929       21          3 alter system kill session '274,5' immediate;

SCOTT@book> select wmsys.wm_concat(dname) c60 from dept;
C60
------------------------------------------------------------
ACCOUNTING,RESEARCH,SALES,OPERATIONS
--//注:11G定义wmsys.wm_concat的返回lob类型,使用临时表空间.

--//session 2:
SCOTT@book> select * from GV$SORT_USAGE;

INST_ID USERNAME USER  SESSION_ADDR     SESSION_NUM SQLADDR             SQLHASH SQL_ID        TABLESPACE CONTENTS  SEGTYPE     SEGFILE#    SEGBLK#    EXTENTS     BLOCKS   SEGRFNO#
------- -------- ----- ---------------- ----------- ---------------- ---------- ------------- ---------- --------- --------- ---------- ---------- ---------- ---------- ----------
      1 SCOTT    SCOTT 000000008561FD00           5 000000007D502F70 2424055223 3905nhf87s9dr TEMP       TEMPORARY LOB_DATA         201      52864          1        128          1


SCOTT@book> @ &r/sqlid 3905nhf87s9dr
SQL_ID        SQLTEXT
------------- --------------------------------------------
3905nhf87s9dr select wmsys.wm_concat(dname) c60 from dept

--//OK,现在是对的.
--//session 1:
SCOTT@book> select sysdate from dual ;
SYSDATE
-------------------
2018-01-02 14:52:56

--//session 2:
SCOTT@book> select * from GV$SORT_USAGE;
   INST_ID USERNAME USER  SESSION_ADDR     SESSION_NUM SQLADDR             SQLHASH SQL_ID        TABLESPACE CONTENTS  SEGTYPE     SEGFILE#    SEGBLK#    EXTENTS     BLOCKS   SEGRFNO#
---------- -------- ----- ---------------- ----------- ---------------- ---------- ------------- ---------- --------- --------- ---------- ---------- ---------- ---------- ----------
         1 SCOTT    SCOTT 000000008561FD00           5 000000007C67F058  409144692 f0wzs9nc663bn TEMP       TEMPORARY LOB_DATA         201      52864          1        128          1

SCOTT@book> @ &r/sql_id f0wzs9nc663bn
SQL_ID        SQLTEXT
------------- -------------------------
f0wzs9nc663bn select sysdate from dual

--//现在看到的是select sysdate from dual语句,如果这样定位有问题语句,就存在错误.
SCOTT@book> column VIEW_DEFINITION format a140
SCOTT@book> 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'), kt
                               ssofno, ktssobno, ktssoexts, ktssoblks, ktssorfno from x$ktsso, v$session where ktssoses = v$session.saddr and ktssosno = v$session.serial#


--//可以发现GV$SORT_USAGE里面取的sql_id是v$session的prev_sql_id,如果当前正在执行,判断OK,如果过后调用其它语句,看到就是错误的语句.

--//如果看看熊工的帖子:http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html
--//x$ktsso中增加了一个字段ktssosqlid,表示该临时段真正关联的SQL.可惜即使11.2.0.4版本,oracle定义的GV$SORT_USAGE视图依旧存在问题.

select ktssosqlid from x$ktsso, v$session where ktssoses = v$session.saddr 
  and ktssosno = v$session.serial# 
  and v$session.sid=274; 
KTSSOSQLID
-------------
3905nhf87s9dr

SYS@book> @ &r/sql_id 3905nhf87s9dr
SQL_ID        SQLTEXT
------------- -------------------------------------------
3905nhf87s9dr select wmsys.wm_concat(dname) c60 from dept

--//熊工还改动视图定义,总之遇到临时表空间消耗问题,注意这个问题.
    select k.inst_id "INST_ID", 
           ktssoses "SADDR", 
           sid, 
           ktssosno "SERIAL#", 
           username "USERNAME", 
           osuser "OSUSER",  
           ktssosqlid "SQL_ID", 
           ktssotsn "TABLESPACE", 
           decode(ktssocnt, 0, 'PERMANENT', 1, 'TEMPORARY') "CONTENTS", 
           --注意在12c的v$sort_usage定义中TABLESPACE和CONTENTS已经发生变化了。 
           decode(ktssosegt, 1, 'SORT', 2, 'HASH', 3, 'DATA', 4, 'INDEX',  
              5, 'LOB_DATA', 6, 'LOB_INDEX' , 'UNDEFINED') "SEGTYPE", 
           ktssofno "SEGFILE#", 
           ktssobno "SEGBLK#", 
           ktssoexts "EXTENTS", 
           ktssoblks "BLOCKS", 
           round(ktssoblks*p.value/1024/1024, 2) "SIZE_MB", 
           ktssorfno "SEGRFNO#" 
    from x$ktsso k, v$session s,  
         (select value from v$parameter where name='db_block_size') p  
    where ktssoses = s.saddr 
      and ktssosno = s.serial#; 

目录
相关文章
|
8月前
|
存储 分布式计算 搜索推荐
sort-10-bigfile sort 大文件外部排序
这是一个关于排序算法系列的概述,包括冒泡排序、快速排序、选择排序、堆排序、插入排序、希尔排序、归并排序、计数排序、桶排序和大文件外部排序。大文件排序通过文件拆分、独立排序、合并排序和优化合并步骤实现,尤其适用于不能一次性加载到内存中的数据。该方法的时间复杂度为O(n log n),空间复杂度为O(n)。文章提供了一个Java实现的`BigFileSort`类,用于大文件的排序操作。代码中使用了归并排序的策略进行合并,并考虑了磁盘I/O的影响。完整代码可在GitHub的开源项目中找到。
|
JavaScript Windows 移动开发
|
SQL Oracle 关系型数据库
|
Oracle 关系型数据库 索引
[20160118]提示index_join.txt
[20160118]提示index_join.txt --生产系统优化,遇到1例使用index_join提示的异常情况,通过例子来说明: 1.环境: 1.环境: SCOTT@book> @ &r/ver1 PORT_STRING               ...
928 0
|
测试技术 BI 关系型数据库
[20151105]视图DBA_HIST_SEG_STAT_OBJ.txt
[20151105]视图DBA_HIST_SEG_STAT_OBJ.txt --前一阵子看别人的awr报表.链接http://www.itpub.net/thread-1940496-1-1.
1045 0