XKCCDI是对应了DUMPCONTROLFILE中数据库信息部分的视图,其中VDATABASE基本来自于此FIXED TABLE,为了能够更好的备查今记录于此
数据库信息 TRACE文件
(size = 316, compat size = 316, section max = 1, section in-use = 1,
last-recid= 0, old-recno = 0, last-recno = 0)
(extent = 1, blkno = 1, numrecs = 1)
10/04/2013 22:10:43
DB Name "XUEXI"
Database flags = 0x00404001 0x00001000
Controlfile Creation Timestamp 10/04/2013 22:10:44
Incmplt recovery scn: 0x0000.00000000
Resetlogs scn: 0x0000.001d599f Resetlogs Timestamp 10/04/2013 22:14:48
Prior resetlogs scn: 0x0000.001d494d Prior resetlogs Timestamp 10/04/2013 21:54:38
Redo Version: compatible=0xa200100
#Data files = 10, #Online files = 10
Database checkpoint: Thread=1 scn: 0x0000.0085102b
Threads: #Enabled=1, #Open=1, Head=1, Tail=1
enabled threads: 01000000..00000000
Max log members = 3, Max data members = 1
Arch list: Head=5, Tail=5, Force scn: 0x0000.008173ca scn: 0x0000.0085102a
Activation ID: 2190560931
Controlfile Checkpointed at scn: 0x0000.00851068 02/25/2015 19:45:02
thread:0 rba:(0x0.0.0)
enabled threads: 00000000..00000000
XKCCDI部分字段解析INSTID实例IDDICTS对应10/04/201322:10:43,这按照VDATABASE定义应该是数据库的建立时间他和VDATABASE中CREATED字段一样DIDBN数据库名对应DBName"XUEXI",对应vdatabase的name
DICCT 控制文件建立时间对应 Controlfile Creation Timestamp 10/04/2013 22:10:44
DIFLG 对应Database flags = 0x00404001转换为10进制为4210689,这是一个重要的状态位,VDATABASE中很多信息是通过bitand按位与后能够查出各种状态,如是STANDBY还是CURRENT库和STANDBY的模式DIRLS对应Resetlogsscn:0x0000.001d599f,同样需要转换为10进制,对应VDATABASE RESETLOGS_CHANGE#
DIRLC 对应Resetlogs Timestamp 10/04/2013 22:14:48,对应VDATABASERESETLOGSTIMEDIRLCI是当前的RESETLOGSIDDIPRS对应Priorresetlogsscn:0x0000.001d494d,同样需要转换为10进制,对应VDATABASE PRIOR_RESETLOGS_CHANGE#
DIPRC 对应Prior resetlogs Timestamp 10/04/2013 21:54:38 ,对应VDATABASE PRIOR_RESETLOGS_TIME
DIPRC_I 是上一次的RESETLOGS_ID
DINDF 应该是#Data files = 10
DINTF 应该是Threads: #Enabled=1 为1表示Enabled thread bitmap vector
DINOF 应该是#Online files = 10
DICPT 应该是Database checkpoint: Thread=1
DISCN 对应了Database checkpoint scn: 0x0000.0085102b,就是LOW CACHE RBA对应的SCN,正常情况下这以前的数据是干净的,他就是VDATABASE的CHECKPOINT_CHANGE#
DIMLM 对应了Max log members = 3,这实际上是MAXLOGMEMBERS
DIMDM 对应了Max data members = 1 恒等于1 (A structural hook to allow for duplexing datafiles, not implemented)
DIARH 对应了Arch list: Head=5 不知道意义
DIART 对应了Tail=5 不知道意义
DIFAS 对应了Force scn: 0x0000.008173ca,对应vdatabase中的ARCHIVE_CHANGE# (Database force archiving SCN.
Any redo log with a start SCN below this will be forced to archive out.)
DICKP_SCN 对应了Controlfile Checkpointed at scn: 0x0000.00851068,对应vdatabase中controlfile_change#
DICKP_TIM 对应了02/25/2015 19:45:02 ,对应了VDATABASE中CONTROLFILE_TIME
DICSQ 对应了CONTROLFILE HEADER的DUMP OF CONTROL FILES, Seq # 9156 = 0x23c4,对应VDATABASE中的controlfile_sequence#
(The control file sequence number at the time ofthe last control fileupdate of the file
header. This is used to check for an old control file. If the number in a data file is
higher than the current control file, then the control file must bea backup or have a
different resetlogs stamp)
DIDBI 对应了CONTROLFILE HEADER的Db ID=2183744397=0x82294b8d,就是数据库的ID对应VDATABASEDBIDDIVTS对应了VDATABASE中的VERSION TIME
DIDOR 通过换算得到VDATABASE中的openmodedecode(di.didor,0,′MOUNTED′,decode(di.didor,1,′READWRITE′,′READONLY′))DIRAE通过换算得到VDATABASE中的REMOTE_ARCHIVE decode(di.dirae,0,'DISABLED',1,'SEND',2,'RECEIVE',3,'ENABLED','UNKNOWN')
DIARS 对应VDATABASE中的ARCHIVELOG_CHANGE# (Highest NEXT_CHANGE#(from the VARCHIVED_LOGview) for an archive log)
DISOS 通过换算得到VDATABASE中的switchoverstatusdecode(di.disos,0,′IMPOSSIBLE′,1,′NOTALLOWED′,2,′SWITCHOVERLATENT′,3,′SWITCHOVERPENDING′,4,′TOPRIMARY′,5,′TOSTANDBY′,6,′RECOVERYNEEDED′,7,′SESSIONSACTIVE′,8,′PREPARINGSWITCHOVER′,9,′PREPARINGDICTIONARY′,10,′TOLOGICALSTANDBY′,′UNKNOWN′),DIDGD通过换算得到VDATABASE中的dataguard_blocker decode(di.didgd, 0, 'DISABLED', 'ENABLED')
DIFL2 通过换算得到VDATABASE中的SUPPLEMENTALLOGDATAALLdecode(bitand(difl2,2),2,′YES′,′NO′)DIPLID对应了VDATABASE的LAST_OPEN_INCARNATION# Record number of the incarnation in VDATABASEINCARNATIONthatwaslastopenedsuccessfullyDIPLN对应了VDATABASE的PLATFORM_ID,这是平台ID,通过vtransportableplatform可以找到对应的平台DICURSCN对应了VDATABASE的CURRENT_SCN,没什么说的当前SCN
DIDBUN 对应了VDATABASE中的UNIQUENAME,这是做DATAGUARD的时候需要的DIFSTS通过换算得到VDATABASE中的FS_FAILOVER_STATUS
由此发现很多字段实际都对应了VDATABASE中的值或者通过换算得到,并且我们需要注意几个SCN的值selectDISCN,DIFAS,DIARS,DICKPSCN,DICURSCNfromxkccdi;
等价于
select CHECKPOINT_CHANGE#,ARCHIVE_CHANGE#,ARCHIVELOG_CHANGE#,controlfile_change#,CURRENT_SCN from vdatabase;可以通过selecttonumber(DISCN),tonumber(DIFAS),tonumber(DIARS),tonumber(DICKPSCN),tonumber(DICURSCN)fromxkccdi
union all
select CHECKPOINT_CHANGE#,ARCHIVE_CHANGE#,ARCHIVELOG_CHANGE#,controlfile_change#,CURRENT_SCN from v$database;
语句进行比较
数据库信息 TRACE文件
(size = 316, compat size = 316, section max = 1, section in-use = 1,
last-recid= 0, old-recno = 0, last-recno = 0)
(extent = 1, blkno = 1, numrecs = 1)
10/04/2013 22:10:43
DB Name "XUEXI"
Database flags = 0x00404001 0x00001000
Controlfile Creation Timestamp 10/04/2013 22:10:44
Incmplt recovery scn: 0x0000.00000000
Resetlogs scn: 0x0000.001d599f Resetlogs Timestamp 10/04/2013 22:14:48
Prior resetlogs scn: 0x0000.001d494d Prior resetlogs Timestamp 10/04/2013 21:54:38
Redo Version: compatible=0xa200100
#Data files = 10, #Online files = 10
Database checkpoint: Thread=1 scn: 0x0000.0085102b
Threads: #Enabled=1, #Open=1, Head=1, Tail=1
enabled threads: 01000000..00000000
Max log members = 3, Max data members = 1
Arch list: Head=5, Tail=5, Force scn: 0x0000.008173ca scn: 0x0000.0085102a
Activation ID: 2190560931
Controlfile Checkpointed at scn: 0x0000.00851068 02/25/2015 19:45:02
thread:0 rba:(0x0.0.0)
enabled threads: 00000000..00000000
XKCCDI部分字段解析INSTID实例IDDICTS对应10/04/201322:10:43,这按照VDATABASE定义应该是数据库的建立时间他和VDATABASE中CREATED字段一样DIDBN数据库名对应DBName"XUEXI",对应vdatabase的name
DICCT 控制文件建立时间对应 Controlfile Creation Timestamp 10/04/2013 22:10:44
DIFLG 对应Database flags = 0x00404001转换为10进制为4210689,这是一个重要的状态位,VDATABASE中很多信息是通过bitand按位与后能够查出各种状态,如是STANDBY还是CURRENT库和STANDBY的模式DIRLS对应Resetlogsscn:0x0000.001d599f,同样需要转换为10进制,对应VDATABASE RESETLOGS_CHANGE#
DIRLC 对应Resetlogs Timestamp 10/04/2013 22:14:48,对应VDATABASERESETLOGSTIMEDIRLCI是当前的RESETLOGSIDDIPRS对应Priorresetlogsscn:0x0000.001d494d,同样需要转换为10进制,对应VDATABASE PRIOR_RESETLOGS_CHANGE#
DIPRC 对应Prior resetlogs Timestamp 10/04/2013 21:54:38 ,对应VDATABASE PRIOR_RESETLOGS_TIME
DIPRC_I 是上一次的RESETLOGS_ID
DINDF 应该是#Data files = 10
DINTF 应该是Threads: #Enabled=1 为1表示Enabled thread bitmap vector
DINOF 应该是#Online files = 10
DICPT 应该是Database checkpoint: Thread=1
DISCN 对应了Database checkpoint scn: 0x0000.0085102b,就是LOW CACHE RBA对应的SCN,正常情况下这以前的数据是干净的,他就是VDATABASE的CHECKPOINT_CHANGE#
DIMLM 对应了Max log members = 3,这实际上是MAXLOGMEMBERS
DIMDM 对应了Max data members = 1 恒等于1 (A structural hook to allow for duplexing datafiles, not implemented)
DIARH 对应了Arch list: Head=5 不知道意义
DIART 对应了Tail=5 不知道意义
DIFAS 对应了Force scn: 0x0000.008173ca,对应vdatabase中的ARCHIVE_CHANGE# (Database force archiving SCN.
Any redo log with a start SCN below this will be forced to archive out.)
DICKP_SCN 对应了Controlfile Checkpointed at scn: 0x0000.00851068,对应vdatabase中controlfile_change#
DICKP_TIM 对应了02/25/2015 19:45:02 ,对应了VDATABASE中CONTROLFILE_TIME
DICSQ 对应了CONTROLFILE HEADER的DUMP OF CONTROL FILES, Seq # 9156 = 0x23c4,对应VDATABASE中的controlfile_sequence#
(The control file sequence number at the time ofthe last control fileupdate of the file
header. This is used to check for an old control file. If the number in a data file is
higher than the current control file, then the control file must bea backup or have a
different resetlogs stamp)
DIDBI 对应了CONTROLFILE HEADER的Db ID=2183744397=0x82294b8d,就是数据库的ID对应VDATABASEDBIDDIVTS对应了VDATABASE中的VERSION TIME
DIDOR 通过换算得到VDATABASE中的openmodedecode(di.didor,0,′MOUNTED′,decode(di.didor,1,′READWRITE′,′READONLY′))DIRAE通过换算得到VDATABASE中的REMOTE_ARCHIVE decode(di.dirae,0,'DISABLED',1,'SEND',2,'RECEIVE',3,'ENABLED','UNKNOWN')
DIARS 对应VDATABASE中的ARCHIVELOG_CHANGE# (Highest NEXT_CHANGE#(from the VARCHIVED_LOGview) for an archive log)
DISOS 通过换算得到VDATABASE中的switchoverstatusdecode(di.disos,0,′IMPOSSIBLE′,1,′NOTALLOWED′,2,′SWITCHOVERLATENT′,3,′SWITCHOVERPENDING′,4,′TOPRIMARY′,5,′TOSTANDBY′,6,′RECOVERYNEEDED′,7,′SESSIONSACTIVE′,8,′PREPARINGSWITCHOVER′,9,′PREPARINGDICTIONARY′,10,′TOLOGICALSTANDBY′,′UNKNOWN′),DIDGD通过换算得到VDATABASE中的dataguard_blocker decode(di.didgd, 0, 'DISABLED', 'ENABLED')
DIFL2 通过换算得到VDATABASE中的SUPPLEMENTALLOGDATAALLdecode(bitand(difl2,2),2,′YES′,′NO′)DIPLID对应了VDATABASE的LAST_OPEN_INCARNATION# Record number of the incarnation in VDATABASEINCARNATIONthatwaslastopenedsuccessfullyDIPLN对应了VDATABASE的PLATFORM_ID,这是平台ID,通过vtransportableplatform可以找到对应的平台DICURSCN对应了VDATABASE的CURRENT_SCN,没什么说的当前SCN
DIDBUN 对应了VDATABASE中的UNIQUENAME,这是做DATAGUARD的时候需要的DIFSTS通过换算得到VDATABASE中的FS_FAILOVER_STATUS
由此发现很多字段实际都对应了VDATABASE中的值或者通过换算得到,并且我们需要注意几个SCN的值selectDISCN,DIFAS,DIARS,DICKPSCN,DICURSCNfromxkccdi;
等价于
select CHECKPOINT_CHANGE#,ARCHIVE_CHANGE#,ARCHIVELOG_CHANGE#,controlfile_change#,CURRENT_SCN from vdatabase;可以通过selecttonumber(DISCN),tonumber(DIFAS),tonumber(DIARS),tonumber(DICKPSCN),tonumber(DICURSCN)fromxkccdi
union all
select CHECKPOINT_CHANGE#,ARCHIVE_CHANGE#,ARCHIVELOG_CHANGE#,controlfile_change#,CURRENT_SCN from v$database;
语句进行比较