v$datafile到底查的那张基表呢???
今天查了一下数据字典,发现V$DATAFILE 是V_$DATAFILE的同义词,故接着去查V_$DATAFILE视图,但发现在视图中又是查询v$datafile,很纠结数据文件的数据来自哪些基表,望大神指点一二 oracle数据字典 v$datafile oracle基表
[解决办法]
set autot traceo
select * from v$datafile;
Execution Plan
----------------------
Plan hash value: 2174225242
------------------------------------------------------------
[解决办法]
Id
[解决办法]
Operation
[解决办法]
Name
[解决办法]
Rows
[解决办法]
Bytes
[解决办法]
Cost (%CPU)
[解决办法]
Time
[解决办法]
------------------------------------------------------------
[解决办法]
0
[解决办法]
SELECT STATEMENT
[解决办法]
[解决办法]
1
[解决办法]
858
[解决办法]
1 (100)
[解决办法]
00:00:01
[解决办法]
[解决办法]
1
[解决办法]
VIEW
[解决办法]
GV$DATAFILE
[解决办法]
1
[解决办法]
858
------解决方案--------------------
1 (100)
[解决办法]
00:00:01
[解决办法]
[解决办法]
2
[解决办法]
SORT ORDER BY
[解决办法]
[解决办法]
1
[解决办法]
1027
[解决办法]
1 (100)
[解决办法]
00:00:01
[解决办法]
[解决办法]
3
[解决办法]
NESTED LOOPS
[解决办法]
[解决办法]
1
[解决办法]
1027
[解决办法]
0 (0)
[解决办法]
00:00:01
[解决办法]
[解决办法]
4
[解决办法]
NESTED LOOPS
[解决办法]
[解决办法]
1
[解决办法]
717
[解决办法]
0 (0)
[解决办法]
00:00:01
[解决办法]
[解决办法]
5
------解决方案--------------------
NESTED LOOPS
[解决办法]
[解决办法]
1
[解决办法]
371
[解决办法]
0 (0)
[解决办法]
00:00:01
[解决办法]
[解决办法]
* 6
[解决办法]
FIXED TABLE FULL
[解决办法]
X$KCCFN
[解决办法]
1
[解决办法]
323
[解决办法]
0 (0)
[解决办法]
00:00:01
[解决办法]
[解决办法]
* 7
[解决办法]
FIXED TABLE FIXED INDEX
[解决办法]
X$KCVFH (ind:1)
[解决办法]
1
[解决办法]
48
[解决办法]
0 (0)
[解决办法]
00:00:01
[解决办法]
[解决办法]
* 8
[解决办法]
FIXED TABLE FIXED INDEX
[解决办法]
X$KCCFE (ind:1)
[解决办法]
1
[解决办法]
346
[解决办法]
0 (0)
[解决办法]
00:00:01
[解决办法]
[解决办法]
* 9
[解决办法]
FIXED TABLE FULL
[解决办法]
X$KCCFN
[解决办法]
1
[解决办法]
310
[解决办法]
0 (0)
[解决办法]
00:00:01
[解决办法]
------------------------------------------------------------
[解决办法]
追踪一下:
V$DATAFILE →→ GV$DATAFILE →→ x$kccfe x$kccfn x$kcvfh
那么、大概v$datafile 是来自 x$kccfe x$kccfn x$kcvfh 这三个基表的
过程如下:
idle> select view_definition from v$fixed_view_definition where view_name='V$DATAFILE';
VIEW_DEFINITION
----------------------------------------------------------------
select FILE# , CREATION_CHANGE# , CREATION_TIME , TS# , RFILE# , STATUS , ENABLED , CHECKPOINT_CHAN
GE# , CHECKPOINT_TIME, UNRECOVERABLE_CHANGE#, UNRECOVERABLE_TIME, LAST_CHANGE# , LAST_TIME , OFFLINE
_CHANGE# , ONLINE_CHANGE# , ONLINE_TIME , BYTES , BLOCKS , CREATE_BYTES , BLOCK_SIZE , NAME , PLUGGE
D_IN , BLOCK1_OFFSET , AUX_NAME , FIRST_NONLOGGED_SCN, FIRST_NONLOGGED_TIME from GV$DATAFILE where i
nst_id = USERENV('Instance')
idle> select view_definition from v$fixed_view_definition where view_name='GV$DATAFILE';
VIEW_DEFINITION
----------------------------------------------------------------
select /*+ rule */ fe.inst_id,fe.fenum,to_number(fe.fecrc_scn), to_date(fe.fecrc_tim,'MM/DD/RR HH24:
MI:SS','NLS_CALENDAR=Gregorian'), fe.fetsn,fe.ferfn, decode(fe.fetsn,0,decode(bitand(fe.festa,2),0,'
SYSOFF','SYSTEM'), decode(bitand(fe.festa,18),0,'OFFLINE',2,'ONLINE','RECOVER')), decode(fe.fedor,
2,'READ ONLY', decode(bitand(fe.festa, 12), 0,'DISABLED',4,'READ ONLY',12,'READ WRITE','UNKNOW
N')), to_number(fe.fecps), to_date(fe.fecpt,'MM/DD/RR HH24:MI:SS','NLS_CALENDAR=Gregorian'), to_numb
er(fe.feurs), to_date(fe.feurt,'MM/DD/RR HH24:MI:SS','NLS_CALENDAR=Gregorian'), to_number(fe.fests),
decode(fe.fests,NULL,to_date(NULL), to_date(fe.festt,'MM/DD/RR HH24:MI:SS','NLS_CALENDAR=Gregorian
')), to_number(fe.feofs),to_number(fe.feonc_scn), to_date(fe.feonc_tim,'MM/DD/RR HH24:MI:SS','NLS_CA
LENDAR=Gregorian'), fh.fhfsz*fe.febsz,fh.fhfsz,fe.fecsz*fe.febsz,fe.febsz,fn.fnnam, fe.fefdb,fn.fnbo
f, decode(fe.fepax, 0, 'UNKNOWN', 65535, 'NONE', fnaux.
fnnam), to_number(fh.fhfirstunrecscn), to_date(fh.fhfirstunrect
ime,'MM/DD/RR HH24:MI:SS','NLS_CALENDAR=Gregorian') from x$kccfe fe, x$kccfn fn, x$kccfn fnaux, x$k
cvfh fh where ((fe.fepax!=655
35 and fe.fepax!=0 and fe.fepax=fnaux.fnnum) or ((fe.fepax=65535 or fe.fepax=0) and f
e.fenum=fnaux.fnfno and fnaux.fntyp=4 and fnaux.fnnam is not null and
bitand(fnaux.fnflg, 4) != 4 and f
e.fefnh=fnaux.fnnum)) and fn.fnfno=fe.fenum and fn.fnfno
=fh.hxfil and fe.fefnh=fn.fnnum and fe.fedup!=0 and fn.fntyp=4 and fn.fnnam is not null
and bitand(fn.fnflg, 4) != 4
