在v$tempfile与v$sort_usage之关系解析一文中,我们注意到对于临时文件的绝对文件号(AFN),Oracle的分配规则和常规数据文件并不相同。3 W0 c1 o" Y8 T3 U4 Q
实际上,临时文件的绝对文件号应该等于db_files + file#。" d7 k# D8 [% j7 I1 B3 K6 ~, l
我们看一下实例:
1 q$ u, O5 G( [( @9 WSQL> select indx,tfnum,tfafn,tfcsz
/ a2 u+ z, n# a3 k/ l% j2 from x$kcctf;
7 J! [% a9 t) j( x! l' `INDX TFNUM TFAFN TFCSZ f- C9 p8 A4 N" X, A$ O2 h! e: l
---------- ---------- ---------- ----------
) I. H9 d. G/ b4 i; o: B0 1 201 2560+ s3 S6 `$ n# q8 D, s- D2 x/ u/ M
SQL> show parameter db_files
7 X9 Y, w0 v" K) [% ]' fNAME TYPE VALUE
9 N. s x* z+ K* C------------------------------------ ----------- ------
+ S& w7 j) o2 f; n+ p7 q& `# o; Cdb_files integer 200
& V. A+ [# t6 [8 F: P! [SQL> select file#,name from v$tempfile;6 l0 x X2 a A( w& d' _
FILE# NAME
. j! j( w: C: Y, B" r0 |. C+ E--------- -----------------------------------------! C+ H. p# r r6 q
1 +ORADG/danaly/tempfile/temp.267.600173887
; s" a% y( n" [. |: P0 {SQL>
. @9 t8 ^' S( w5 t# {, y% n所以在Oracle文档中v$tempfile.file#被定义为The absolute file number是不确切的。经常的,我们可能会在警报日志文件中看到类似如下的错误:
1 S) |/ W! h2 T. V. mCorrupt block relative dba: 0x00c0008a (file 202, block 138)( ^1 y( M+ p7 n" Z- D3 r. M, P
Bad header found during buffer read
- ?8 B3 \# B1 W4 i$ U) m, i. LData in bad block -% b3 j8 @7 F7 N; I
type: 8 format: 2 rdba: 0x0140008a
' s- ^( m9 g6 \0 Y8 m2 slast change scn: 0x0000.431f8beb seq: 0x1 flg: 0x08- n6 Z) o% N8 _4 c: d b
consistency value in tail: 0x8beb0801# x) P, ^4 v- U" K( J( B
check value in block header: 0x0, block checksum disabled
3 K- ]8 s: D: e* Pspare1: 0x0, spare2: 0x0, spare3: 0x0
$ C/ A- Y" X6 T" S0 k这里的file 202其实指的就是临时文件。 |