网站公司不给ftp,下载app赚钱的平台,氧气瓶网站建设,营销方案总结深层次说#xff0c;oracle数据库的最少组成单位应该是块#xff0c;一般默认情况下#xff0c;oracle数据库的块大小是8kb#xff0c;其中存储着我们平常所需的数据。我们在使用过程中#xff0c;难免会疑问道#xff1a;“oracle数据块中到底是怎样组成的#xff0c;平… 深层次说oracle数据库的最少组成单位应该是块一般默认情况下oracle数据库的块大小是8kb其中存储着我们平常所需的数据。我们在使用过程中难免会疑问道“oracle数据块中到底是怎样组成的平常说的块头是怎样的”。今天我们就深入去探究下oracle数据块信息了解其组成格式。
一、获取块
1.1获取块信息 我们查看我们用户表的段区信息根据区的信息去获取我们需要的数据块。我本地使用表T_OBJ我们查询信息如下 SQL select name from v$datafile where file#5;NAME
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/oracle/app/data/ORCL/DT_TPC_DAT.DBF 我们表T_OBJ的段从5号数据库文件128号块开始但是因为128块是段头故我们选取第二个区136号块查看。
1.2块获取
1.2.1dd方式 我们可以通过操作系统dd命令去获取一个数据块并结合od命令进行具体数据查看
[rootoracle11g app]# dd if/oracle/app/data/ORCL/DT_TPC_DAT.DBF bs8196 skip135 count1 | od -xv 136.out
10 records in
10 records out
8196 bytes (8.2 kB) copied, 8.6958e-05 s, 94.3 MB/s
[rootoracle11g app]# 1.2.2dump方式 我们通过数据库的dump命令进行具体数据块的陈列
SQL oradebug setmypid
Statement processed.
SQL alter system dump datafile 5 block 136;System altered.SQL oradebug tracefile_name
/oracle/app/oracle/diag/rdbms/orcl/ORCL/trace/ORCL_ora_10811.trc 1.2.3bbed方式 我们也可以通过bbed的方式查看具体的块的数据信息 二、块解析 我们通过bbed及打印的日志信息我们可以看出一个数据块包含块头数据区块尾。其中块头最复杂包含块基本信息事务相关信息数据存储信息空闲空间信息等。
2.1块头基本信息 Typ: 块类型Fmt: 块格式一般值都是0x02Filler: 暂时没用RDBA: 数据块的相对地址SCNBase: SCN的基数SCNWrap: SCN的高16位Seq: 顺序号用于记录同一时间修改的排序号Flg: 也是用来区分块的一个标志例如0x01代表新块ChkVal: 块的检查值Tail: 用来验证块的一致性的值 下面陈列下块的具体分类 0x01: undo段头0x02: undo数据块0x03: 保存undo段头0x04: 保存undo数据块0x05: 数据段头临时数据段头索引数据段头数据数据段头。。)0x06: KTB-managed数据块0x07: 临时表数据块0x08: 排序key0x09: 排序run0x0a: 段空闲链表块0x0b: 数据文件头 下面陈列Flg的对应类型 0x01: 新块基本是无数据 0x02: 延迟日志块 0x04: 检查点值已存储 0x08: 临时块 2.2块头事务信息 我们看完块头记录的块的基本信息接着我们看看用来记录事务信息的部分 rdba: 数据块相对地址seg/obj: 段或对象idcsc: 块清理的scn号itc: 事务槽数flg: 0代表在空闲链表上其他不同值不同代表typ: 1代表数据2代表索引fsl: ITL TX空闲槽fnx: 空闲链表下一个块的相对地址itl: 事务槽号xid: 事务iduba: undo地址flg: 事务标志,例如:C代表已提交。lck: 代表事务锁住的行数scn/fsc: scn代表事务提交scn号fsc代表空闲空间 2.3块头数据信息 接下来记录的是具体的数据的位置信息其中有包含表的个数数据行数等 tsiz: 数据区大小hsiz: 数据头大小pbl: 指向该块的指针地址flag: ntab: 块中包含的表的个数一般都是为1在聚簇中存在多表nrow: 数据行数frre: 空闲行索要条目fsbo: 空闲空间开始偏移地址fseo: 空闲空间结束便宜地址avsp: 可用空间tosp: 事务全部提交可用空间 2.4数据行信息 接下来我们就可以看到数据块中存放的数据行里面存放信息如下
, tab: 表号 row: 第几行 tl: 行大小 fb: 标志位 lb: 锁标记位 cc: 总列数表列 2.5tail信息 tail为验证数据块一致性的信息我们就通过bbed打印其相应信息
BBED p tailchk
ub4 tailchk 8188 0x7060064fBBED
BBED