当前位置: 首页 > article >正文

深入理解下oracle 11g block组成

    深层次说,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.1,dd方式

     我们可以通过操作系统dd命令去获取一个数据块,并结合od命令进行具体数据查看:

[root@oracle11g app]# dd if=/oracle/app/data/ORCL/DT_TPC_DAT.DBF bs=8196 skip=135 count=1 | od -xv > 136.out
1+0 records in
1+0 records out
8196 bytes (8.2 kB) copied, 8.6958e-05 s, 94.3 MB/s
[root@oracle11g app]# 

1.2.2,dump方式

    我们通过数据库的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.3,bbed方式 

    我们也可以通过bbed的方式,查看具体的块的数据信息:

二、块解析

    我们通过bbed及打印的日志信息,我们可以看出,一个数据块包含:块头,数据区,块尾。其中块头最复杂,包含:块基本信息,事务相关信息,数据存储信息,空闲空间信息等。

2.1,块头基本信息

  • Typ:                         块类型
  • Fmt:                         块格式,一般值都是0x02
  • Filler:                        暂时没用
  • 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:    排序key
  • 0x09:    排序run
  • 0x0a:    段空闲链表块
  • 0x0b:    数据文件头 

    下面陈列Flg的对应类型:

  •  0x01:    新块,基本是无数据
  •  0x02:    延迟日志块
  •  0x04:    检查点值已存储
  •  0x08:    临时块

 2.2,块头事务信息

    我们看完块头记录的块的基本信息,接着我们看看用来记录事务信息的部分:

  • rdba:          数据块相对地址
  • seg/obj:      段或对象id
  • csc:            块清理的scn号
  • itc:              事务槽数
  • flg:              0代表在空闲链表上,其他不同值不同代表
  • typ:             1代表数据,2代表索引
  • fsl:               ITL TX空闲槽
  • fnx:              空闲链表下一个块的相对地址
  • itl:                事务槽号
  • xid:              事务id
  • uba:             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.5,tail信息

    tail为验证数据块一致性的信息,我们就通过bbed打印其相应信息:

BBED> p tailchk    
ub4 tailchk                                 @8188     0x7060064f

BBED> 
BBED> 


http://www.kler.cn/a/407905.html

相关文章:

  • Oracle - 多区间按权重取值逻辑 ,分时区-多层级-取配置方案(二)
  • 数据结构(初阶6)---二叉树(遍历——递归的艺术)(详解)
  • C嘎嘎探索篇:和stack,queue的相遇
  • IDEA 2024.3 版本更新主要功能介绍
  • 学习笔记|MaxKB对接本地大模型时,选择Ollma还是vLLM?
  • 在Unity环境中读取Excel配置文件(入门)
  • 游戏AI实现-决策树
  • mayo介绍和QTqmake编译基于Opencascade开发的mayo工程-小白配置
  • 【Python】除了Pandas,还有哪些方法可以连接Mysql数据库?(整理全)
  • CentOS中使用Python将文本中的IP地址替换为外网地址
  • 挑战 Cursor,Codeium 推出下一代 AI IDE Windsurf
  • 跟着问题学3——卷积神经网络详解
  • 【论文速读】| 迈向自动化渗透测试:引入大语言模型基准、分析与改进
  • archlinux安装waydroid
  • Rust 力扣 - 2266. 统计打字方案数
  • 开发中使用UML的流程_03 CIM-2:分析业务流程
  • 渗透测试笔记——shodan(4)
  • 深入解析UML组件图:概念、构成与实际应用
  • 5G CPE与4G CPE的主要区别有哪些
  • 畅听FM 3.0.0 | 很有果味的电台软件,超多FM电台,支持播放本地音乐
  • 浅谈 proxy
  • C++中的初始化列表
  • 如何设计和实现通用唯一 Code 生成方法
  • 从数据提取到管理:TextIn平台的全面解析与产品体验
  • Elasticsearch客户端在和集群连接时,如何选择特定的节点执行请求的?
  • 网络安全 - DOS