臨時文件相關的v$tempfile v$sort_usage與V$tempseg_usage


SQL> select username,user,segtype,segfile#,segblk#,extents,segrfno# from v$sort_usage;

clipboard

SEGFILE#代表的是絕對文件號(AFN),對應x$kcctf表中的TFAFN(temp file absolute file number)。

SQL> select indx,tfnum,tfafn,tfcsz from x$kcctf;

clipboard[1]

 

TFCSZ 是創建臨時文件的塊數

 

查看臨時文件的絕對文件號

select tf.FILE#, xtf.tfafn, tf.NAME

  from v$tempfile tf, x$kcctf xtf

where tf.FILE# = xtf.tfnum;

clipboard[2]

查看內存中正在使用的臨時文件

col username for a12

col name for a90

select tf.FILE#,su.USERNAME,su.SEGTYPE, tf.NAME

  from v$tempfile tf, x$kcctf xtf,v$sort_usage su 

where tf.FILE# = xtf.tfnum and xtf.tfafn = su.SEGFILE#;

clipboard[3]

正在使用的臨時文件是無法刪除的

SQL> select name from v$tempfile;

NAME

------------------------------------------------------------------------------------------

+ASM_DATA/orcl/tempfile/temp.277.925652849

+ASM_DATA/orcl/tempfile/temp.268.925556123

SQL> alter database tempfile '+ASM_DATA/orcl/tempfile/temp.268.925556123' drop;

alter database tempfile '+ASM_DATA/orcl/tempfile/temp.268.925556123' drop

*

ERROR at line 1:

ORA-25152: TEMPFILE cannot be dropped at this time

而沒有正在使用的臨時文件是可以刪除的

SQL> alter database tempfile '+ASM_DATA/orcl/tempfile/temp.277.925652849' drop;

Database altered.

-----------------------------------------------------------

小知識補充:

數據庫真正的v$基礎視圖用戶無法訪問

可以通過v_$視圖訪問真正的v$基礎視圖

用戶可以訪問的v$視圖實際上是v_$視圖的同義詞

-----------------------------------------------------------

select do.object_type from dba_objects do where do.object_name in('V$TEMPFILE','V$TEMPSEG_USAGE')

clipboard[4]

可以看到我們通常訪問的v$tempfile其實是個同義詞,這里提到了V$TEMPSEG_USAGE

select * from dba_synonyms where synonym_name='V$TEMPSEG_USAGE';

clipboard[5]

可以看到 V$TEMPSEG_USAGE 是 V_$SORT_USAGE 的同義詞,而 V_$SORT_USAGE則是基礎視圖V$SORT_USAGE的視圖,由此可知V$TEMPSEG_USAGE與V$SORT_USAGE是等效的。

附:v$tempfile 定義查看過程

select * from v$fixed_view_definition where view_name='V$TEMPFILE';

select FILE#,

       CREATION_CHANGE#,

       CREATION_TIME,

       TS#,

       RFILE#,

       STATUS,

       ENABLED,

       BYTES,

       BLOCKS,

       CREATE_BYTES,

       BLOCK_SIZE,

       NAME

  from GV$TEMPFILE

where inst_id = USERENV('Instance')

select * from v$fixed_view_definition where view_name='GV$TEMPFILE';

select tf.inst_id,

        tf.tfnum,

        to_number(tf.tfcrc_scn),

        to_date(tf.tfcrc_tim,

                'MM/DD/RR HH24:MI:SS',

                'NLS_CALENDAR=Gregorian'),

        tf.tftsn,

        tf.tfrfn,

        decode(bitand(tf.tfsta, 2), 0, 'OFFLINE', 2, 'ONLINE', 'UNKNOWN'),

        decode(bitand(tf.tfsta, 12),

               0,

               'DISABLED',

               4,

               'READ ONLY',

               12,

               'READ WRITE',

               'UNKNOWN'),

        fh.fhtmpfsz * tf.tfbsz,

        fh.fhtmpfsz,

        tf.tfcsz * tf.tfbsz,

        tf.tfbsz,

        fn.fnnam

   from x$kcctf tf, x$kccfn fn, x$kcvfhtmp fh

  where fn.fnfno = tf.tfnum

    and fn.fnfno = fh.htmpxfil

    and tf.tffnh = fn.fnnum

    and tf.tfdup != 0

    and bitand(tf.tfsta, 32) <> 32

    and fn.fntyp = 7

    and fn.fnnam is not null

SQL> desc x$kcctf

Name                       Null?    Type

----------------------------------------- -------- ----------------------------

ADDR                            RAW(8)

INDX                            NUMBER

INST_ID                        NUMBER

TFNUM                            NUMBER

TFAFN                            NUMBER

TFCSZ                            NUMBER

TFBSZ                            NUMBER

TFSTA                            NUMBER

TFCRC_SCN                        VARCHAR2(16)

TFCRC_TIM                        VARCHAR2(20)

TFFNH                            NUMBER

TFFNT                            NUMBER

TFDUP                            NUMBER

TFTSN                            NUMBER

TFTSI                            NUMBER

TFRFN                            NUMBER

TFPFT                            NUMBER

TFMSZ                            NUMBER

TFNSZ                            NUMBER


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM