如果大家经常翻阅Oracle的文档,可能很多朋友会注意到,从Oracle9i开始,v$sort_usage视图从文档中被移除了,取而代之的是v$tempseg_usage,这一改变是因为SORT一词可能会引起误解,虽然排序操作是使用临时段的主要操作,但是除了排序之外,很多其他操作也会适用临时段,所以v$tempseg_usage来的更为确切些。
在v$sort_usage/v$tempseg_usage中有SEGTYPE这样一个字段,该字段代表使用临时段的操作类型,这些不同的操作包括:SORT 、HASH 、DATA 、INDEX 、LOB_DATA 、LOB_INDEX 等,可见v$tempseg_usage这个名字更符合这个视图记录的内容。
进一步的,我们可以稍微来探究一下这两个视图的关系。
查询dba_objects视图,我们发现原来v$tempseg_usage是一个同义词:
SQL> select object_type from dba_objects 2 where object_name='V$TEMPSEG_USAGE'; OBJECT_TYPE ------------------ SYNONYM
再追本溯源原来V$TEMPSEG_USAGE是V_$SORT_USAGE的同义词,也就是和V$SORT_USAGE同源:
SQL> select * from dba_synonyms 2 where synonym_name='V$TEMPSEG_USAGE'; OWNER SYNONYM_NAME TABLE_OWNE TABLE_NAME DB_LINK ---------- --------------- ---------- ------------------------------ ---------- PUBLIC V$TEMPSEG_USAGE SYS V_$SORT_USAGE
如果再进一步,我们可以找到V_$SORT_USAGE这个视图的底层表以及原始创建语句(来自Oracle9iR2,经过格式化后的输出):
SQL> SELECT view_definition FROM v$fixed_view_definition 2 WHERE view_name='GV$SORT_USAGE'; VIEW_DEFINITION -------------------------------------------------------------------- SELECT x$ktsso.inst_id, username, username, ktssoses, ktssosno, prev_sql_addr, prev_hash_value, 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#
注意V$TEMPSEG_USAGE或V_$SORT_USAGE视图中的SQLADDR和SQLHASH来自v$session视图中的prev_sql_addr,prev_hash_value,所以和其他视图关联查询时我们需要注意。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。