Oracle 12C Formatted Block Dump
.可以从RDBMS中dump数据块
.在用户dump目录中会生成一个跟踪文件包含dump信息
对7号文件中的135号数据块执行dump
SQL> oradebug setmypid Statement processed. SQL> oradebug tracefile_name /u01/app/oracle/diag/rdbms/shardcat/shardcat/trace/shardcat_ora_13182.trc SQL> alter system dump datafile 7 block 135; System altered.
对于任何数据块dump都有一个数据块头信息。它决定了剩余dump的格式。在任何Oracle块dump的头部应该可以看到块头信息:
Rdba:数据块的相对DBA
Scn:SCN序列号
Seq:序列号:
SEQ->0 /* non-logged changes – do not advance seq# */
SEQ->(UB1MAXVAL-1) /* maximum possible sequence number */
SEQ->(UB1MAXVAL) /* seq# to indicate a block is corrupt, equal to FF */
Flg: Flag(在kcbh.h中定义)
Tail:一致性数据用来验证数据块的开始与结束是否是相同版本(它由SCNBase的低阶两字节加上数据块类型加上SCN的序列号)
Frmt:数据块格式:在Oracle 12c中是2
Chkval数据块的选项检查值:如果db_block_checksum=true
Type:数据块类型(在kcb.h中定义)
Rdba:相对数据块地址
Seg/Obj:Seg/Obj ID dump输出的Seg/Obj为0x1af27
SQL> select to_number('1af27','xxxxxx') from dual; TO_NUMBER('1AF27','XXXXXX') --------------------------- 110375 SQL> select object_id,object_name from dba_objects where owner='JY' and object_name='T1'; OBJECT_ID OBJECT_NAME ---------- ------------------------------ 110375 T1
Csc:最近数据块清除
itc: itl插槽数量
Flg: E
Typ: 1=DATA;2=INDEX
Itl:相关事务列表索引(ITLs由initrans和maxtrans来决定)
Xid:事务ID(UndoSeg.Slot.Wrap)
Uba:Undo段地址(UndoDBA.SeqNo.RecordNo)
Flg:C=Committed;U=Commit Upper Bound;T=Active at CSC;B=Rollback of this UBA gives before image of the ITL.
Lck:这个事务所影响的行数
Scn/Fsc:Scn=提交事务的SCN号;Fsc=Free space credit(bytes)
例如:
*** 2020-02-07T14:35:53.082746+08:00 Start dump data blocks tsn: 4 file#:7 minblk 135 maxblk 135 Block dump from cache: Dump of buffer cache at level 4 for pdb=0 tsn=4 rdba=29360263 Block dump from disk: buffer tsn: 4 rdba: 0x01c00087 (7/135) scn: 0x1e1174a seq: 0x09 flg: 0x06 tail: 0x174a0609 frmt: 0x02 chkval: 0xba74 type: 0x06=trans data Hex dump of block: st=0, typ_found=1 ......省略...... Block header dump: 0x01c00087 Object id on Block? Y seg/obj: 0x1af27 csc: 0x0000000001e11748 itc: 2 flg: E typ: 1 - DATA brn: 0 bdba: 0x1c00080 ver: 0x01 opc: 0 inc: 0 exflg: 0 Itl Xid Uba Flag Lck Scn/Fsc 0x01 0x0008.003.00006d30 0x010001c2.2499.09 --U- 8 fsc 0x0000.01e1174a 0x02 0x0008.01b.00003a9a 0x010002b5.114f.20 C--- 0 scn 0x0000000001286184 bdba: 0x01c00087
Tsiz:总的数据区域大小
SQL> select to_number('1f98','xxxxxx') from dual; TO_NUMBER('1F98','XXXXXX') -------------------------- 8088
Hsiz:数据块头大小
SQL> select to_number('22','xxxxxx') from dual; TO_NUMBER('22','XXXXXX') ------------------------ 34
Pbl:持有数据块的缓存指针
Flag:N=pctfree hit(clusters);F=do not put on free list;K=flushable cluster keys
Ntab:表的数量(在clusters中大于1)
Nrow:行记录数
Frre:第一个可用行索引项;-1=没有添加
Fsbo:可用空间开始偏移量
Fseo:可用空间结束偏移量
Avsp:数据块中可用空间
Tosp:当所有事务提交后总的可用空间
Nrow:第一个表的行数
例如:
data_block_dump,data header at 0x7f799676f064 =============== tsiz: 0x1f98 hsiz: 0x22 pbl: 0x7f799676f064 76543210 flag=-------- ntab=1 nrow=8 frre=-1 fsbo=0x22 fseo=0x1efa avsp=0x1f29 tosp=0x1f2b 0xe:pti[0] nrow=8 offs=0 0x12:pri[0] offs=0x1f47 0x14:pri[1] offs=0x1f3d 0x16:pri[2] offs=0x1f33 0x18:pri[3] offs=0x1f29 0x1a:pri[4] offs=0x1f1f 0x1c:pri[5] offs=0x1f15 0x1e:pri[6] offs=0x1f08 0x20:pri[7] offs=0x1efa
Oracle Formatted Block Dump: Data Layer
Tab: tab 0,row 0,offset
Cc:在这个行片段中的列数
Lb:锁字节:这个行被锁定的ITL条目
Fb:Flag字节
H=行片段头;K=集簇键;C=集簇表成员;D=删除的行记录;F=第一个数据片;L=最后数据片;P=紧接前一个数据片的第一个列
N=紧接下一个数据片的最后一个列
Tl:行大小(字节数加上数据)
Col:列数据
例如:
block_row_dump: tab 0, row 0, @0x1f47 tl: 10 fb: --H-FL-- lb: 0x1 cc: 2 col 0: [ 2] c1 02 col 1: [ 3] 6d 5f 41 tab 0, row 1, @0x1f3d tl: 10 fb: --H-FL-- lb: 0x1 cc: 2 col 0: [ 2] c1 03 col 1: [ 3] 6d 5f 42 tab 0, row 2, @0x1f33 tl: 10 fb: --H-FL-- lb: 0x1 cc: 2 col 0: [ 2] c1 04 col 1: [ 3] 6d 5f 43 tab 0, row 3, @0x1f29 tl: 10 fb: --H-FL-- lb: 0x1 cc: 2 col 0: [ 2] c1 05 col 1: [ 3] 6d 5f 44 tab 0, row 4, @0x1f1f tl: 10 fb: --H-FL-- lb: 0x1 cc: 2 col 0: [ 2] c1 06 col 1: [ 3] 6d 5f 45 tab 0, row 5, @0x1f15 tl: 10 fb: --H-FL-- lb: 0x1 cc: 2 col 0: [ 2] c1 07 col 1: [ 3] 6d 5f 46 tab 0, row 6, @0x1f08 tl: 13 fb: --H-FL-- lb: 0x1 cc: 2 col 0: [ 2] c1 08 col 1: [ 6] 6d 5f 4a 59 48 59 tab 0, row 7, @0x1efa tl: 14 fb: --H-FL-- lb: 0x1 cc: 2 col 0: [ 2] c1 09 col 1: [ 7] 6d 5f 4a 59 59 59 4c end_of_block_dump End dump data blocks tsn: 4 file#: 7 minblk 135 maxblk 135