X$KCCDI部分欄位解析和DUMP資訊和V$DATABASE進行對應

gaopengtttt發表於2015-04-29
X$KCCDI是對應了DUMP CONTROLFILE中資料庫資訊部分的檢視,其中V$DATABASE基本來自於此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
 


X$KCCDI部分欄位解析   


 INST_ID  例項ID
 DICTS    對應 10/04/2013 22:10:43,這按照V$DATABASE定義應該是資料庫的建立時間他和V$DATABASE中CREATED欄位一樣                                         
 DIDBN    資料庫名對應DB Name "XUEXI",對應v$database的name                                                                                    
 DICCT    控制檔案建立時間對應 Controlfile Creation Timestamp  10/04/2013 22:10:44                                         
 DIFLG    對應Database flags = 0x00404001轉換為10進製為4210689,這是一個重要的狀態位,V$DATABASE中很多資訊是透過bitand按位與後能夠查出各種狀態,如是STANDBY還是CURRENT庫和STANDBY的模式                                                                                    
 DIRLS    對應Resetlogs scn: 0x0000.001d599f,同樣需要轉換為10進位制,對應V$DATABASE RESETLOGS_CHANGE#                                         
 DIRLC    對應Resetlogs Timestamp  10/04/2013 22:14:48,對應V$DATABASE RESETLOGS_TIME
 DIRLC_I  是當前的RESETLOGS_ID                                                                                    
 DIPRS    對應Prior resetlogs scn: 0x0000.001d494d,同樣需要轉換為10進位制 ,對應V$DATABASE PRIOR_RESETLOGS_CHANGE#                                       
 DIPRC    對應Prior resetlogs Timestamp  10/04/2013 21:54:38 ,對應V$DATABASE 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,正常情況下這以前的資料是乾淨的,他就是V$DATABASE的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,對應v$database中的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,對應v$database中controlfile_change#                                       
 DICKP_TIM  對應了02/25/2015 19:45:02 ,對應了V$DATABASE中CONTROLFILE_TIME                                      
 DICSQ      對應了CONTROLFILE HEADER的DUMP OF CONTROL FILES, Seq # 9156 = 0x23c4,對應V$DATABASE中的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對應V$DATABASEDBID                                                                                                                                                                                                                                                                                                                                                    
 DIVTS       對應了V$DATABASE中的VERSION TIME                                                                                 
 DIDOR       透過換算得到V$DATABASE中的open_mode decode(di.didor,0,'MOUNTED',decode(di.didor, 1, 'READ WRITE', 'READ ONLY'))                                                                                                                              
 DIRAE       透過換算得到V$DATABASE中的REMOTE_ARCHIVE decode(di.dirae,0,'DISABLED',1,'SEND',2,'RECEIVE',3,'ENABLED','UNKNOWN')                                                                              
 DIARS       對應V$DATABASE中的ARCHIVELOG_CHANGE# (Highest NEXT_CHANGE#(from the V$ARCHIVED_LOGview) for an archive log)                                    
 DISOS       透過換算得到V$DATABASE中的switchover_status
             decode(di.disos, 0,'IMPOSSIBLE',1,'NOT ALLOWED',2,'SWITCHOVER LATENT',3,'SWITCHOVER PENDING',4,'TO PRIMARY',
             5,'TO STANDBY',6,'RECOVERY NEEDED',7,'SESSIONS ACTIVE',8,'PREPARING SWITCHOVER',9,'PREPARING DICTIONARY',
             10,'TO LOGICAL STANDBY','UNKNOWN'),                                      
 DIDGD       透過換算得到V$DATABASE中的dataguard_blocker decode(di.didgd, 0, 'DISABLED', 'ENABLED')                                                                                                                              
 DIFL2       透過換算得到V$DATABASE中的SUPPLEMENTAL_LOG_DATA_ALL decode(bitand(difl2, 2), 2, 'YES', 'NO')                                     
 DIPLID      對應了V$DATABASE的LAST_OPEN_INCARNATION# Record number of the incarnation in V$DATABASE_INCARNATIONthat was last opened successfully                                     
 DIPLN       對應了V$DATABASE的PLATFORM_ID,這是平臺ID,透過v$transportable_platform可以找到對應的平臺                                   
 DICUR_SCN   對應了V$DATABASE的CURRENT_SCN,沒什麼說的當前SCN                                      
 DIDBUN      對應了V$DATABASE中的UNIQUE_NAME,這是做DATAGUARD的時候需要的                                      
 DIFSTS      透過換算得到V$DATABASE中的FS_FAILOVER_STATUS
 
由此發現很多欄位實際都對應了V$DATABASE中的值或者透過換算得到,並且我們需要注意幾個SCN的值
select DISCN,DIFAS,DIARS,DICKP_SCN,DICUR_SCN from x$kccdi;
等價於
select CHECKPOINT_CHANGE#,ARCHIVE_CHANGE#,ARCHIVELOG_CHANGE#,controlfile_change#,CURRENT_SCN from v$database;                                                                                                            


可以透過
select to_number(DISCN),to_number(DIFAS),to_number(DIARS),to_number(DICKP_SCN),to_number(DICUR_SCN) from x$kccdi
union all
select CHECKPOINT_CHANGE#,ARCHIVE_CHANGE#,ARCHIVELOG_CHANGE#,controlfile_change#,CURRENT_SCN from v$database; 
語句進行比較

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7728585/viewspace-1611465/,如需轉載,請註明出處,否則將追究法律責任。

相關文章