ASSM管理的Oracle段头块结构

Oracle 自动段空间管理(ASSM) 从oracle 9i开始,管理段空间有两种方法:手动段空间管理和自动段空间管理(Auto Segment Space Management,ASSM);  ASSM用位图来跟踪或管理每个分配到对象的块,每个块有多少剩余空间根据位图的状态来确定,如>75%,50%-75%,25%-50%和    对于ASSM,只需控制与空间使用相关的一个参数:PCTFREE。创建段时也可以接受其他参数 阅读详情

访问www.tomcoding.com网站,学习Oracle内部数据结构,详细文档说明,下载Oracle的exp/imp,DUL,logminer,ASM工具的源代码,学习高技术含量的内容。

上一篇文章我们介绍了,MSSM管理的Oracle段头块结构,其缺点就是会在高并发时造成段头块挣用,影响访问效率,为此Oracle引入了ASSM管理段内数据块的分配机制。ASSM是Automatic Segment Space Management的缩写,是高版本的Oracle默认的管理方式,使得空间管理更简单,也提高了效率。ASSM的管理使用了三级位图结构,三级位图管理二级位图,二级位图又管理一级位图,这样以级联的方式就能管理很多数据块。下面我们来看一下这种段头块中的各部分层级结构。

1. 块头(Block Header)

每个块都有一个块头结构,定义了块的地址(RDBA),块的系统改变号(SCN),块类型和块的校验和等信息。块头的dump信息如下。

buffer tsn: 9 rdba: 0x02000082 (8/130) 
scn: 0x0000.003f2480 seq: 0x01 flg: 0x04 tail: 0x24802301
frmt: 0x02 chkval: 0x9838 type: 0x23=PAGETABLE SEGMENT HEADER
 

块头的类型为0x23=PAGETABLE SEGMENT HEADER,表示ASSM管理的段头块。

2. Extent控制头(Extent Control Header)

紧接着块头的结构叫做Extent控制头,包含了段中所有extent map的控制信息。我们看一下dump信息。

  Extent Control Header
  -----------------------------------------------------------------
  Extent Header:: spare1: 0      spare2: 0      #extents: 1      #blocks: 8
                  last map  0x00000000  #maps: 0      offset: 2716  
      Highwater::  0x02000088  ext#: 0      blk#: 8      ext size: 8
  #blocks in seg. hdr's freelists: 0
  #blocks below: 5     
  mapblk  0x00000000  offset: 0
                   Unlocked
在这里解释一下extent控制头中的主要字段。#extents字段表示整个段中包含的extent个数。#blocks字段表示整个段中包含的块个数。last map字段表示最后一个extent map块的地址,有多个extent map的段中会看到这个值不再为0。#maps字段表示段中包含了多少个extent map块。offset字段表示extent map结束的偏移量。Highwater字段表示段中的高水位块的地址。

3. Low Highwater Mark

这是一个特殊的结构,在这里说明一下Low Highwater Mark与Highwater Mark的区别,在ASSM管理的段中,一次分配的extent会有很多个块,分配后的块并不是马上使用,所以Oracle对这些块并没有处理,这部分块叫做未格式化的块。格式化的块是Oracle已经把段的data object id记录到块头并把数据清除了的块。一般来说Low Highwater Mark和Highwater Mark是一致的,但是如果在这个段上做过truncate,move或其他修改Highwater Mark的操作时,可能造成这两个水位线不一样,这时Low Highwater Mark代表格式化块的高水位线,Highwater Mark代表所有块的高水位线。我们来看一下Low Highwater Mark结构的dump信息。

Low HighWater Mark : 
      Highwater::  0x02000088  ext#: 0      blk#: 8      ext size: 8
  #blocks in seg. hdr's freelists: 0
  #blocks below: 5     
  mapblk  0x00000000  offset: 0     
  Level 1 BMB for High HWM block: 0x02000080
  Level 1 BMB for Low HWM block: 0x02000080
 

4. Extent Map Header

下面的一个结构叫做extent map header,包含了段头块中extent map的信息。我们看一下它的dump信息。

     Map Header:: next  0x00000000  #extents: 1    obj#: 78733  flag: 0x10000000
  Inc # 0
其中next字段表示下一个extent map块的地址,有多个extent map时,这个字段就不再是0了。#extents表示在这个extent map中包含了多少个extent。obj#表示对象在段内的object id。

5. Extent Map

  Extent Map
  -----------------------------------------------------------------
   0x02000080  length: 8
这是一个结构数组,结构中包含了两个字段rdba和nblk,rdba表示这个段的第一个块的地址,nblk表示这个段包含的块个数。数组元素的个数就是extent map中包含的extent的个数,在上面的结构extent map header中,字段#extents就代表这个数值。

6. Auxillary Map

接下来一个结构叫做Auxillary Map,是一个辅助位图,这个是干什么用的呢?由于ASSM是逐级管理的,段头块管理extent map,一级BMB管理了extent中的块使用情况。一级位图管理的extent并不多,在数据量大的时候,一级位图块会连接(chained)起来管理数据块,如果要查找一个extent归哪个一级BMB管理,就要像查找链表项一样从头查起,一级BMB很多的时候,影响效率。因此就在这里设计了一个辅助图,指明这个extent map中的Extent归哪个一级BMB管理,数据是从哪个块开始的。我们看一下辅助位图的dump信息。

  Auxillary Map
  --------------------------------------------------------
   Extent 0     :  L1 dba:  0x01400580 Data dba:  0x01400583
   Extent 1     :  L1 dba:  0x01400580 Data dba:  0x01400588
   Extent 2     :  L1 dba:  0x01400590 Data dba:  0x01400591
   Extent 3     :  L1 dba:  0x01400590 Data dba:  0x01400598
   Extent 4     :  L1 dba:  0x014005a0 Data dba:  0x014005a1
   Extent 5     :  L1 dba:  0x014005a0 Data dba:  0x014005a8
   Extent 6     :  L1 dba:  0x014005b0 Data dba:  0x014005b1
   Extent 7     :  L1 dba:  0x014005b0 Data dba:  0x014005b8
 

在上例中我们看到,Extent 0由BMB1 0x01400580管理,数据从第四个块开始,这是段的第一个extent,所以管理占用了三个块。Extent 1也由0x01400580管理,数据从0x01400588开始,在Extent map我们看到extent 0和extent 1各有8个块,所以一个一级位图共管理了16个块。再往下extent 2就不一样了,它由一个新块0x01400590来管理了,数据从0x01400591开始,这第0个块是又一个一级BMB,他也管理了两个Extent,依次类推。

【SpringBoot 4.x 第70节】夯爆了,企业级 API 设计规范落地:状态码、错误码、接口文档与兼容性(超详解)! 🏆 本文收录于 《滚雪球学 Spring Boot 4.x》 专栏。本专栏面向 有一定 Java 基础,但尚未系统学习 Spring Boot 的读者,采用“滚雪球式学习法”:先跑通、再理解、再重构、再上线,带你从第一个 Hello API 开始,逐步完成一个可部署、可监控、可扩展的后端项目。 阅读详情

相关推荐

PaddleOCR实战:DBnet++与DBnet模型训练全流程解析

本文详细解析了基于PaddleOCR框架的DBnet与DBnet++文字检测模型的完整训练流程。从环境配置、数据集准备、配置文件解读,到模型训练、评估调参及最终推理部署,提供了实战指南。重点对比了DBnet++与DBnet在精度、速度及适用场景上的差异,帮助开发者高效构建定制化的OCR检测模型。

weixin_29038155的博客 333

oracle assm(自动段管理)与mssm(手动段管理)的区别

9i引入了assm技术,freelist被位图取代。在assm管理下,insert通过扫描位图来查找可用的block,即使block可用空间低于PCTFREE,也不会从位图中剔除(mssm中,块会被剔除freelist),所以PCTUSED不再需要。而PCTFREE还是需要的,需要它指示需要保留多少空间来给后续update增长使用,freelist和freelist group也无效了。ASSM的一个大优势是位图数组能减轻缓冲区等待(buffer busy wait)的负担。

汪灵骅的博客 2841

在PyCharm中配置使用Anaconda环境

在PyCharm中配置使用Anaconda环境一、步骤1.Anaconda2.PyCharm总结 一、步骤 1.Anaconda 如未安装Anaconda可至其官网下载,学习使用个人版就可以了。 下载地址:https://www.anaconda.com/products/individual 1、打开Anaconda Navigator,点击Environments可以看到anaconda中已经有了默认的“base”环境,其中包含了大多数我们会用到的包,在PyCharm中可以直接使用该环境,而无需自行下载

TuckX的博客 19万+

oracle块头,深入解析Oracle ASSM 段头块(PAGETABLE SEGMENT HEADER)结构

一、概念介绍Oracle ASSM(Automatic Segment Space Managed)使用位图来管理数据库中的空间,具有管理简单、高并发等优点,ASSM的整体结构是3层位图块+数据块,即4层的树状结构,如下所示,Oracle ASSM中Segment Header内部结构由Cache Header、Header Control及L2 BMB array三层结构组成,Oracle数据块...

weixin_34849898的博客 787

牛顿法vs高斯牛顿法vs LM算法:三行代码说清核心区别(附性能对比表格)

本文通过对比牛顿法、高斯牛顿法和LM算法的核心迭代代码,揭示了三者在非线性最小二乘优化中的本质区别。LM算法通过引入阻尼因子,在高斯牛顿法的快速收敛与梯度下降的稳定性之间取得平衡,成为工程实践中鲁棒性最强的首选。文章还提供了清晰的性能对比表格,帮助开发者根据初始估计和问题性质快速选择合适算法。

weixin_29062255的博客 418

Unity游戏开发实战:手把手教你用C#实现一个简单的反向运动学(IK)控制器

本文详细介绍了在Unity游戏开发中如何使用C#实现一个简单的反向运动学(IK)控制器。通过建立骨骼层级结构、实现CCD算法和角度限制,开发者可以轻松创建自然的角色动画效果。文章还提供了可视化调试工具和性能优化方案,帮助提升开发效率。

weixin_42523711的博客 243

Oracle数据库段中块的使用,ASSM与L3、L2、L1块介绍

Oracle数据库段中块的使用,ASSM与L3、L2、L1块介绍

chenoracle的博客 918

基于YOLOv8的城市违建识别系统:从数据集构建到UI界面实现

YOLOv8是Ultralytics公司于2023年推出的最新一代YOLO(You Only Look Once)系列目标检测算法。更高效的骨干网络设计改进的锚框机制更精确的损失函数支持分类、检测、分割等多任务YOLOv8特别适合像违建识别这样的实时检测任务,能够在保持高精度的同时实现快速推理。

YOLO 673

assm的结构_Oracle ASSM三级位图块结构

Oracle ASSM三级位图块结构前几天Piner发布了一个悬赏:寻找ASSM三级位图块的文章,同时给出了对于ASSM结构的猜想。Piner猜想的结构和我想像的不同,我认为ASSM的结构应该如下图所示:也就是说我认为BMB的结构应该是均衡的,同时段头的PAGETABLE SEGMENT HEADER同时充当了第0个3级位图块的角色。在PAGETABLE SEGMENT HEADER中实际上我们可...

weixin_39987138的博客 349

Python 爬虫实战:全面解析雪球网用户投资组合数据采集

本文介绍了如何使用 Python 爬虫技术,抓取雪球网用户的投资组合信息。通过模拟登录、解析页面内容等步骤,获取了用户的持仓数据。未来,可以进一步探索以下方向:

2201_76125261的博客 1303

反应动力学仿真软件:Kintecus_(11).数据输入与输出解析

在反应动力学仿真软件的二次开发中,数据输入与输出解析是至关重要的步骤。正确地解析输入数据和生成输出结果不仅能够确保仿真过程的顺利进行,还可以提高仿真的准确性和效率。本节将详细介绍如何在仿真软件中实现数据输入与输出的解析,包括文件格式、数据结构、解析方法以及实际操作示例。

kkchenjj的博客 756

Oracle 体系结构(20)—— Oracle 的段(segment)管理

Oracle 体系结构(20)—— Oracle 的段(segment)管理 在 Oracle 内部,对象空间是以段(Segment)的形式存在和管理的,当建立数据对象(表、索引、簇等)时,Oracle 会自动给这些数据对象分配相应的存储空间,以存放它们的数据信息,这些为数据对象所分配的存储空间被称为段。 一个段只能存放在一个表空间中,但是可分布在属于这个表空间中的多个数据文件中。段由多个区组成,用于保存特定的数据库对象,每种数据对象都具有相应的段。段可分为以下几种类型: (1)数据段:也称为表段,当创建一

睿思达DBA 5360

使用OpenCV从低对比度图像中提取圆形轮廓

希望本文能帮助您从低对比度图像中提取圆形轮在本文中,我们将探讨如何使用OpenCV库从低对比度图像中提取圆形轮廓。低对比度图像通常指的是图像中的亮度差异很小,导致物体边缘不够清晰的情况。在本文中,我们将探讨如何使用OpenCV库从低对比度图像中提取圆形轮廓。低对比度图像通常指的是图像中的亮度差异很小,导致物体边缘不够清晰的情况。通过预处理图像并应用Hough变换,我们能够在低对比度图像中准确地提取圆形轮廓。通过预处理图像并应用Hough变换,我们能够在低对比度图像中准确地提取圆形轮廓。

ByteWhiz的博客 349

空间管理的进化革命:深度解析Oracle ASSM与MSSM自动与手动段空间管理的完整对比

【MSSM是单窗口排队,ASSM是自助查询机】银行柜台排队。所有客户(会话)排在一个队伍里,每次只能一个人办理业务。虽然有多个柜台(多个Freelist),但每个柜台的队伍仍然排着。高峰期(高并发INSERT)时排队时间远大于办理时间。自助查询机。大厅里有多个自助查询机(位图块),客户(会话)直接走过去查看哪个柜台有空(位图标记),然后直接过去办理。不需要排队,不需要叫号。排队模式的吞吐量受限于柜台数量,自助模式的吞吐量受限于大厅空间(CPU和I/O)。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 949

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

77-Oracle 表空间管理(官方推荐)LMT-ASSM

SYSTEM表空间在10g前强制DMT,10g+可支持LMT(需创建时显式指定),从 11g 到 23ai,​新建的非系统表空间均默认启用 LMT+ASSM,不用显式声明。新建表空间直接默认是lmt+assm,从DMT到LMT的演进,到了上云和多租户时代,最佳黄金搭档是LMT+ASSM了。 表空间管理方式对比​特性​​DMT​(已淘汰)​LMT​​管理位置​数据字典(SYSTEM表空间)数据文件头部位图​锁争用​高(enq: SQ - contention)无​碎片处理​需手动COALESCE自动合并​适用

远方的专栏 1157

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Oracle 段空间管理(Segment Space Management)中的ASSM二级位图块

Oracle 段空间管理(Segment Space Management)中的ASSM二级位图块

chenoracle的博客 788

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

oracle自管理段,Oracle 自动段空间管理(ASSM)

从oracle 9i开始,管理段空间有两种方法:手动段空间管理和自动段空间管理(Auto Segment Space Management,ASSM);ASSM用位图来跟踪或管理每个分配到对象的块,每个块有多少剩余空间根据位图的状态来确定,如>75%,50%-75%,25%-50%和<25%,也就是说位图其实采用了四个状态位来代替以前的PCTUSED,什么时候该利用该数据块则由设定的P...

weixin_34395361的博客 383

oracle 关闭assm,Oracle ASSM 表空间

引用:前几天Piner发布了一个的文章,同时给出了对于ASSM结构的猜想。Piner猜想的结构和我想像的不同,我认为ASSM的结构应该如下图所示:也就是说我认为BMB的结构应该是均衡的,同时段头的PAGETABLE SEGMENT HEADER同时充当了第0个3级位图块的角色。在PAGETABLE SEGMENT HEADER中实际上我们可以很容易的看到这样的输出:----------------...

weixin_34749048的博客 466

oracle自管理段,Oracle自动段空间管理(ASSM:autosegmentspacemanagement)

使用ASSM的一个巨大优势是,位图freelist肯定能够减轻缓冲区忙等待(buffer busy wait)的负担,这个问题在Oracle9i以前的版本里一.官网说明Logical Storage StructuresOracle.com/docs/cd/E11882_01/server.112/e16508/logical.htm#CNCPT7668其中有关ASSM的内容如下:Logical ...

weixin_33168937的博客 328

oracle ASSM和MSSM

一. 官网说明 Logical Storage Structures http://download.oracle.com/docs/cd/E11882_01/server.112/e16508/logical.htm#CNCPT7668   其中有关ASSM 的内容如下:   Logical Space Management Oracle Database must use logical s

甲骨文可乐的专栏 3566

oracle 关闭assm,oracle自动段治理ASSM笔记

oracle自动段管理ASSM笔记CREATE TABLESPACE demoDATAFILE 'J:\app\wufan\oradata\orcl\demo01.dbf'SIZE 50MEXTENT MANAGEMENT LOCAL --一定是本地管理SEGMENT SPACE MANAGEMENT AUTO; --ASSM管理的标志CREATE TABLE demotab...

weixin_34723479的博客 265

LMT and ASSM

LMT的管理方式 LMT就是指Oracle不再利用数据字典表来记录Oracle表空间里面的区的使用状况,而是在每个表空间的数据文件的头部加入了一个位图区,在其中记录每个区的使用状况。每个表文件头会有64K用于bit map。每当一个区被使用,或者被释放以供重新使用时,Oracle都会更新数据文件头部的这个记录,反映这个变化区大小的管理extent_management_clause(表空间级参

tesge的专栏 2046

oracle自管理段,Oracle 自动段空间管理(ASSM:auto segment space management)

让我们看看位图freelist是如何实现的。从使用区段空间管理自动参数创建tablespace开始:create tablespace demodatafile ''/ora01/oem/demo01.dbf ''size 5mEXTENT MANAGEMENT LOCAL -- Turn on LMTSEGMENT SPACE MANAGEMENT AUTO -- Turn on ASSM;一旦...

weixin_39616348的博客 701

Oracle 的 ASSM 表空间

ASSM 是 Oracle 推荐的段空间管理方式,特别适合 OLTP 和高并发环境。通过自动化空间管理,降低了 DBA 的工作负担,同时提升了数据库性能。但在特殊场景(如超大规模数据频繁修改)中,仍需结合具体需求评估是否适用

嗨,来了,累了把,歇息一下,暂时放下一切的纷纷扰扰,享受一份自己独处的时光 1076

Oracle ASSM

ASSM是Automatic Segment Space Management的缩写。与ASSM相对是Manul Segment Space Management。只有在Locally Managed Tablespace中可以使用ASSM,system tablespace不可以使用ASSM。Locally managed tablespace和ASSm是11gR2的默认配置。 In a lo

chncaesar的专栏 3932

assm的结构_Oracle ASSM三级位图块结构 转载

前几天Piner发布了一个悬赏:寻找ASSM三级位图块的文章,同时给出了对于ASSM结构的猜想。Piner猜想的结构和我想像的不同,我认为ASSM的结构应该如下图所示:也就是说我认为BMB的结构应该是均衡的,同时段头的PAGETABLE SEGMENT HEADER同时充当了第0个3级位图块的角色。在PAGETABLE SEGMENT HEADER中实际上我们可以很容易的看到这样的输出:-----...

weixin_39948439的博客 245
上一篇: MSSM管理的Oracle段头块
tomcoding
博客等级 码龄9年 410粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值