oracle数据字典之x$kvit和x$kcvfh学习
2012-07-28 09:57
357 查看
x$表是数据库的核心部分,这些表用于追踪内部数据库信息,维持数据库正常运行。x$表是加密命名的,而且oracle不做文档说明。oracle通过这些x$表建立起其他大量视图提供用户查询管理数据库之用。
************************************~(@^_^@)~******************************************************
x$kcvfh是v$datafile_header的源,v$datafile_header相信大家在oracle恢复工作时会经常和他碰面,因为他不仅包含了checkpoint_change#,更重要的是它包含了这个checkpoint_change#所在的logfile的sequence#,准确的说rba,有了rba,在恢复时就能准确的知道到底需要哪个logfile(archivelog or redo)。
x$kcvfh有三个字段非常有意义。
1)FHRBA_SEQ:表示当前联机日志对应的日志序列号
2)FHRBA_BNO:表示the log file block number
3)FHRBA_BOF:表示the byte offset
其实fhrba_seq,fhrba_bno,fhrba_bof这3个字段对应的就是rba,rba的意思是:
Recent entries in the redo thread of an Oracle instance are addressed using a 3-part redo byte address, or RBA. An RBA is comprised of :
the log file sequence number (4 bytes)
the log file block number (4 bytes)
the byte offset into the block at which the redo record starts (2 bytes)
在datafile header上记录rba,在恢复时就能非常准确的知道需要哪个日志文件(通过the log file sequence number)以及哪个block(通过the log file block number)以及
在这个日志block上从哪个byte开始读取恢复(通过the byte offset)
下面用v$fixed_view_definition说明x$kcvfh是v$datafile_header的源。
*****************************************{{{(>_<)}}}\(^o^)/~******************************************
触发后台进程DBWn写的条件包含这样两个:
1)脏块达到阈值时
2)木有free buffer时
在x$kvit当中我们可以看到他俩的相关设置:
阈值:25%
free比例:40%
************************************~(@^_^@)~******************************************************
x$kcvfh是v$datafile_header的源,v$datafile_header相信大家在oracle恢复工作时会经常和他碰面,因为他不仅包含了checkpoint_change#,更重要的是它包含了这个checkpoint_change#所在的logfile的sequence#,准确的说rba,有了rba,在恢复时就能准确的知道到底需要哪个logfile(archivelog or redo)。
x$kcvfh有三个字段非常有意义。
1)FHRBA_SEQ:表示当前联机日志对应的日志序列号
2)FHRBA_BNO:表示the log file block number
3)FHRBA_BOF:表示the byte offset
其实fhrba_seq,fhrba_bno,fhrba_bof这3个字段对应的就是rba,rba的意思是:
Recent entries in the redo thread of an Oracle instance are addressed using a 3-part redo byte address, or RBA. An RBA is comprised of :
the log file sequence number (4 bytes)
the log file block number (4 bytes)
the byte offset into the block at which the redo record starts (2 bytes)
在datafile header上记录rba,在恢复时就能非常准确的知道需要哪个日志文件(通过the log file sequence number)以及哪个block(通过the log file block number)以及
在这个日志block上从哪个byte开始读取恢复(通过the byte offset)
sys@ORCL> select hxfil,fhrba_seq,fhrba_bno,fhrba_bof from x$kcvfh; HXFIL FHRBA_SEQ FHRBA_BNO FHRBA_BOF ---------- ---------- ---------- ---------- 1 36 2 16 2 36 2 16 3 36 2 16 4 36 2 16 5 36 2 16
下面用v$fixed_view_definition说明x$kcvfh是v$datafile_header的源。
sys@ORCL> select view_definition from v$fixed_view_definition where view_name='V$DATAFILE_HEADER'; VIEW_DEFINITION ---------------------------------------------------------------------------------------------------- select FILE# , STATUS , ERROR , FORMAT, RECOVER , FUZZY, CREATION_CHANGE#, CREATION_TIME , TABLESPA CE_NAME , TS# , RFILE# , RESETLOGS_CHANGE# , RESETLOGS_TIME , CHECKPOINT_CHANGE# , CHECKPOINT_TIME , CHECKPOINT_COUNT , BYTES , BLOCKS , NAME, SPACE_HEADER, LAST_DEALLOC_SCN from GV$DATAFILE_HEADER wh ere inst_id = USERENV('Instance') sys@ORCL> select view_definition from v$fixed_view_definition where view_name='GV$DATAFILE_HEADER'; VIEW_DEFINITION ---------------------------------------------------------------------------------------------------- select inst_id,hxfil,decode(hxons, 0, 'OFFLINE', 'ONLINE'),decode(hxerr, 0, NULL, 1,'FILE MISSING',2 ,'OFFLINE NORMAL', 3,'NOT VERIFIED', 4,'FILE NOT FOUND',5,'CANNOT OPEN FILE', 6,'CANNOT READ HEADER' , 7,'CORRUPT HEADER',8,'WRONG FILE TYPE', 9,'WRONG DATABASE', 10,'WRONG FILE NUMBER',11,'WRONG FILE CREATE', 12,'WRONG FILE CREATE', 16,'DELAYED OPEN',14, 'WRONG RESETLOGS', 15,'OLD CONTROLFILE', 'UNK NOWN ERROR'),hxver,decode(hxnrcv, 0,'NO', 1,'YES', NULL),decode(hxifz, 0,'NO', 1,'YES', NULL),to_num ber(fhcrs),to_date(fhcrt,'MM/DD/RR HH24:MI:SS','NLS_CALENDAR=Gregorian'),fhtnm,fhtsn,fhrfn,to_number (fhrls),to_date(fhrlc,'MM/DD/RR HH24:MI:SS','NLS_CALENDAR=Gregorian'),to_number(fhscn),to_date(fhtim ,'MM/DD/RR HH24:MI:SS','NLS_CALENDAR=Gregorian'),fhcpc,fhfsz*fhbsz,fhfsz,hxfnm, decode(hxlmdba, 0, N ULL, hxlmdba), decode(hxlmld_scn, '0', NULL, hxlmld_scn) from x$kcvfh
*****************************************{{{(>_<)}}}\(^o^)/~******************************************
触发后台进程DBWn写的条件包含这样两个:
1)脏块达到阈值时
2)木有free buffer时
在x$kvit当中我们可以看到他俩的相关设置:
sys@ORCL> select kvittag,kvitval from x$kvit where kvittag in ('kcbldq','kcbfsp'); KVITTAG KVITVAL ---------------------------------------------------------------- ---------- kcbldq 25 kcbfsp 40
阈值:25%
free比例:40%
相关文章推荐
- oracle 11g 学习笔记 10_30(2)_数据字典和动态性能视图
- 探索数据字典,提高自学习Oracle能力
- Oracle数据字典学习地址
- MySQL和Oracle对比学习之数据字典
- 【oracle学习】11.数据字典
- 11-Oracle学习_修改表结构-数据字典表
- Oracle的学习四:数据库管理员、逻辑备份与恢复、数据字典、动态性能视图、管理表空间与数据文件
- Oracle数据字典表和动态性能视图学习之1:V$DATAGUARD
- oracle学习 视图,数据字典
- oracle学习之--6,Oracle数据字典和创建表空间
- oracle 学习笔记(十一) 数据库常用对象, table ,constraint ,index ,view和数据字典
- oracle数据字典初步学习
- Oracle学习(13):数据字典
- oracle 11g 学习笔记 10_30(2)_数据字典和动态性能视图
- 探索数据字典,提高自学习Oracle能力
- java实现oracle 快速卸载数据并ftp上传数据给各个其他业务系统[从学习到工作(一)]
- Oracle学习(8):处理数据
- python学习笔记(四)——数据字典
- oracle学习之路(五)-----oracle数据类型的一般操作
- ORACLE 数据字典