深入理解下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     0x7060064fBBED> 
BBED> 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/477963.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年12月Gesp七级备考知识点拾遗第一期(图的定义及遍历)

目录 总序言 知识点拾遗​编辑 度数 环 二叉树 图的遍历 深度优先 广度优先 连通与强连通 有什么不同 构成分别至少需要几条边(易错题)? 无向连通图 有向强连通图 完全图 什么是完全图 无向完全图最少边数 有向完全图最少边…

家庭智慧工程师:如何通过科技提升家居生活质量

在今天的数字化时代,家居生活已经不再只是简单的“住”的地方。随着物联网(IoT)、人工智能(AI)以及自动化技术的快速发展,越来越多的家庭开始拥抱智慧家居技术,将他们的家变得更加智能化、便捷和…

图像处理实验报告

实验一 图像处理的MATLAB基础 实验目的:熟悉数字图象处理的基本软件工具和操作 实验内容:Matlab应用复习,矩阵产生、操作;矩阵运算以及字符运算。 1.利用增量产生向量[0,2,4,6,8,10]。 2.利用magic(n)函数产生7维魔鬼矩阵A&am…

SpringBoot+SpringCloud面试题整理附答案

什么是SpringBoot? 1、用来简化spring初始搭建和开发过程使用特定的方式进行配置(properties或者yml文件) 2、创建独立的spring引用程序main方法运行 3、嵌入Tomcat无需部署war包,直接打成jar包nohup java -jar – & 启动就好 4、简化了maven的配置 …

Linux之管道,system V的共享内存,消息队列和信号量

Linux之管道,systemV共享内存和信号量 一.进程间通信1.1进程间通信的目的1.2进程间通信的方式 二.管道2.1管道的概念2.2匿名管道2.3命名管道 三.system V3.1共享内存3.2消息队列3.3信号量 一.进程间通信 在我们之前有关Linux指令的学习时我们使用过“|”这个命令&a…

Figma入门-基本操作制作登录页

Figma入门-基本操作制作登录页 前言 在之前的工作中,大家的原型图都是使用 Axure 制作的,印象中 Figma 一直是个专业设计软件。 最近,很多产品朋友告诉我,很多原型图都开始用Figma制作了,并且很多组件都是内置的&am…

Django实现智能问答助手-数据库方式读取问题和答案

扩展 增加问答数据库,通过 Django Admin 添加问题和答案。实现更复杂的问答逻辑,比如使用自然语言处理(NLP)库。使用前端框架(如 Bootstrap)增强用户界面 1.注册模型到 Django Admin(admin.py…

SQL注入--文件读写注入--理论

什么是文件读写注入? MySQL中有 读取文件的函数:load_file() 写入文件的函数:Into outfile(能写入多行,按格式输出)和 into dumpfile(只能写入一行且没有输出格式) 利用这些函数在S…

《最小生成树算法详解:Kruskal的优雅实现》

前置知识和本篇介绍 前置知识: 数据结构-优先级队列, 数据结构-并查集。 Kruskal算法不需要建图, 因此不会建图的模板也没事。 本篇介绍一最小生成树的概念和Kruskal算法。 有关prim算法(另一种最小生成树的算法)&am…

云计算-华为HCIA-学习笔记

笔者今年7月底考取了华为云计算方向的HCIE认证,回顾从IA到IE的学习和项目实战,想整合和分享自己的学习历程,欢迎志同道合的朋友们一起讨论! 第二章:服务器基础 服务器是什么? 服务器本质上就是个性能超强的…

uniapp接入高德地图

下面代码兼容安卓APP和H5 高德地图官网:我的应用 | 高德控制台 ,绑定服务选择《Web端(JS API)》 /utils/map.js 需要设置你自己的key和安全密钥 export function myAMap() {return new Promise(function(resolve, reject) {if (typeof window.onLoadM…

C++:探索AVL树旋转的奥秘

文章目录 前言 AVL树为什么要旋转?一、插入一个值的大概过程1. 插入一个值的大致过程2. 平衡因子更新原则3. 旋转处理的目的 二、左单旋1. 左单旋旋转方式总处理图2. 左单旋具体会遇到的情况3. 左单旋代码总结 三、右单旋1. 右单旋旋转方式总处理图2. 右单旋具体会遇…

文小言1:

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

uni-app 界面TabBar中间大图标设置的两种方法

一、前言 最近写基于uni-app 写app项目的时候,底部导航栏 中间有一个固定的大图标,并且没有激活状态。这里记录下实现方案。效果如下(党组织这个图标): 方法一:midButton的使用 官方文档:ta…

CentOS7(Linux)详细安装教程(图文详解)

一、软件准备 本文CentOS7安装在VMware Workstation虚拟机软件,故安装前请自行安装该软件。VMware Workstation官网链接:VMware Workstation官网地址CentOS7下载地址:centos7镜像 如下是最常使用的版本(任选版本)centos-7.9.2009-isos-x86_64安装包下载_开源镜像站-阿里…

【实战】基于urllib和BeautifulSoup爬取jsp网站的数据

文章目录 前言目标网站分析目标网页爬取数据解析导出数据其他问题处理分页检索及多关键字搜索去重cookie问题工具封装经验总结前言 网络数据爬取大致分为两类: 静态爬取:该种方式针对那种架构比较老的网站,使用模版方式,通过浏览器F12只能找到静态页面,找不到返回json数…

玩转数字与运算:用C语言实现24点游戏的扑克牌魅力

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

【MySQL】sql注入相关内容

【MySQL】sql注入相关内容 1. 为什么使用sql注入的时候,url传值的时候要使用–而不是– 使用–进行注释的时候需要在后面加一个空格才可以被认为是注释,url传值的过程中会将空格自动忽略,使用则可以在传输中保留为空格符号。(同…

shell脚本(完结)

声明:学习视频来自b站up主 泷羽sec,如涉及侵权马上删除文章 感谢泷羽sec 团队的教学 视频地址:shell编程(完结)_哔哩哔哩_bilibili 本文主要讲解不同shell脚本中的相互调用以及输入输出重定向操作。 一、不同脚本之间…

【bug】使用transformers训练二分类任务时,训练损失异常大

使用transformers训练二分类任务时,训练损失异常大 问题分析 问题 training_loss异常大,在二分类损失中,收敛在1~2附近,而eval_loss却正常(小于0.5) 分析 参考: Bug in gradient accumulation…