返回顶部
首页 > 资讯 > 数据库 >oracle的ASSM小结
  • 531
分享到

oracle的ASSM小结

2024-04-02 19:04:59 531人浏览 八月长安
摘要

ASSM采用3级位图,第一个extent至少有3个元数据块,L1 – L2 – header(包含L3) 段头 & L3 Extent control: 存储HHWM信息 Header

ASSM采用3级位图,第一个extent至少有3个元数据块,L1 – L2 – header(包含L3)


段头 & L3
Extent control: 存储HHWM信息
Header control: 记录三级位图的基本信息,其中L2 hint for insert为搜索可用空间的起始位置
Extent table/Auxillary extent map: 维护extent map信息

buffer tsn: 115 rdba: 0x11227ca3 (68/2260131)
scn: 0x0860.07f11dac seq: 0x01 flg: 0x04 tail: 0x1dac2301
frmt: 0x02 chkval: 0x7157 type: 0x23=PAGETABLE SEGMENT HEADER
Hex dump of block: st=0, typ_found=1
  Extent Control Header
  --------------------描述HHWM---------------------------------------------
  Extent Header:: spare1: 0      spare2: 0      #extents: 23     #blocks: 1024 
                  last map  0x00000000  #maps: 0      offset: 2716 
      Highwater::  0x113a3e09  ext#: 22     blk#: 128    ext size: 128   --高水位线块号/所在extent/该extent块数 
  #blocks in seg. hdr's freelists: 0    
  #blocks below: 1000 
  mapblk  0x00000000  offset: 22   
                   Unlocked
  -------------------描述LHWM-------------------------------------
  Low HighWater Mark :
      Highwater::  0x113a3e09  ext#: 22     blk#: 128    ext size: 128  
  #blocks in seg. hdr's freelists: 0    
  #blocks below: 1024 
  mapblk  0x00000000  offset: 22   
  Level 1 BMB for High HWM block: 0x113a3D8a
  Level 1 BMB for Low HWM block: 0x113a3d8a
  --------------------------------------------------------
  Segment Type: 1 nl2: 1      blksz: 8192   fbsz: 0     
  L2 Array start offset:  0x00001434
  First Level 3 BMB:  0x00000000
  L2 Hint for inserts:  0x11227ca2 – 搜索L2 BMB的起始位置,insert需要使用
  Last Level 1 BMB:  0x113a3d8a
  Last Level II BMB:  0x11227ca2
  Last Level III BMB:  0x00000000
     Map Header:: next  0x00000000  #extents: 23   obj#: 345420 flag: 0x20000000
  Inc # 0
  Extent Map--以(dba, len)形式存储extent基本信息,start DBA + length
  -----------------------------------------------------------------
   0x11227ca1  length: 8    
   0x11227ca9  length: 8    
   0x11227cb1  length: 8     
   ............. 
   0x11400109  length: 128  
   0x113a3d09  length: 128  
   0x11400189  length: 128  
   0x113a3d89  length: 128  
 
  Auxillary Map:extent no + L1 BMB of first DBA + first DBA in extent(extent 0前3个块存储metadata)
  --------------------------------------------------------
   Extent 0     :  L1 dba:  0x11227ca1 Data dba:  0x11227ca4
   Extent 1     :  L1 dba:  0x11227ca1 Data dba:  0x11227ca9
   Extent 2     :  L1 dba:  0x11227cb1 Data dba:  0x11227cb2
   Extent 3     :  L1 dba:  0x11227cb1 Data dba:  0x11227cb9
   .............
   Extent 19    :  L1 dba:  0x11400109 Data dba:  0x1140010b
   Extent 20    :  L1 dba:  0x113a3d09 Data dba:  0x113a3d0b
   Extent 21    :  L1 dba:  0x11400189 Data dba:  0x1140018b
   Extent 22    :  L1 dba:  0x113a3d89 Data dba:  0x113a3d8b
  --------------------------------------------------------
 
   Second Level Bitmap block DBAs
   --------------------------------------------------------
   DBA 1:   0x11227ca2

注:Extent元信息存于段头块,包括start DBA + length + L1 BMB ,若头块空间不足则新分配extent map block专门存储extent map;
所有L3 BMB以单向链表组织在一起,由header control + L2 BMB array组成
   Second Level Bitmap block DBAs
   --------------------------------------------------------
   DBA 1:   0x11227ca2


L2 BMB
 
L1 BMB数组构成: L1 BMB DBA + max freeness + instance id

buffer tsn: 115 rdba: 0x11227ca2 (68/2260130)
scn: 0x0860.07f11d99 seq: 0x02 flg: 0x04 tail: 0x1d992102
frmt: 0x02 chkval: 0x4536 type: 0x21=SECOND LEVEL BITMAP BLOCK
Dump of Second Level Bitmap Block
   number: 22      nfree: 1       ffree: 20     pdba:     0x11227ca3
   Inc #: 0 Objd: 0
  opcode:0
 xid:
  L1 Ranges :
  --------------------------------------------------------
   0x11227ca1  Free: 1 Inst: 1
   0x11227cb1  Free: 1 Inst: 1
   0x11227cc1  Free: 1 Inst: 1 
   .....
   0x113a3d89  Free: 3 Inst: 1
   0x113a3d8a  Free: 1 Inst: 1
  Free:从1-5依次为full和75%-100% free
  --------------------------------------------------------

 

L1
 
由一系列DBA range组成,描述若干连续块(不可跨extent)的空间利用率,一个extent可由若干BMB描述;

buffer tsn: 115 rdba: 0x11227ca1 (68/2260129)
scn: 0x0860.07f11dac seq: 0x01 flg: 0x04 tail: 0x1dac2001
frmt: 0x02 chkval: 0x69fb type: 0x20=FIRST LEVEL BITMAP BLOCK
Hex dump of block: st=0, typ_found=1
Dump of First Level Bitmap Block
 --------------------------------
   nbits : 4 nranges: 2         parent dba:  0x11227ca2   poffset: 0    
   unfORMatted: 0       total: 16        first useful block: 3     
   owning instance : 1
   instance ownership changed at 02/26/2014 09:35:44
   Last successful Search 02/26/2014 09:35:44
   Freeness Status:  nf1 0      nf2 0      nf3 0      nf4 0     
 
   Extent Map Block Offset: 4294967295
   First free datablock : 16    
   Bitmap block lock opcode 0
   Locker xid:     :  0x0000.000.00000000
   Inc #: 0 Objd: 0
  --------------------------------------------------------
  DBA Ranges : --因为1个extent有8个块,而该L1描述了16个块,故包含2个range
  --------------------------------------------------------
   0x11227ca1  Length: 8      Offset: 0     
   0x11227ca9  Length: 8      Offset: 8     
 
   0:Metadata   1:Metadata   2:Metadata   3:FULL
   4:FULL   5:FULL   6:FULL   7:FULL
   8:FULL   9:FULL   10:FULL   11:FULL
   12:FULL   13:FULL   14:FULL   15:FULL
  --------------------------------------------------------

由L1 BMB描述每个数据块的空间利用率;
 



如何搜索可用
空间?
依次查询L3 – L2 – L1,最终定位到合适的DBA,处理L2/L1时需要PID哈希值;

1 L2-L1
根据段头L2 Hint for inserts定位L2,进程依据其PID哈希值定位L1 并根据L1.free判断是否有足够空间;
若满足条件跳转到该L1 BMB,否则尝试下一个L2 BMB;

2 L1-DBA
搜索L1 BMB,以进程pid哈希值作为start dba;
发现候选DBA时 进程以nowait模式尝试获取块,若此时块上有active进程则尝试下一个,5次尝试均失败后则释放L1 BMB进行buffer busy wait等待;
碰到unformatted块则一次性格式化N个块并更新HWM;
oracle的ASSM小结 



结论:

L3包含多个L2,L2包含多个L1,L1包含多个数据块。
在L3中选择L2,依赖L2 Hint for inserts。
在L2中选择L1,根据进程PID号的HASH值
在L1中选择数据块,也是根据进程PID号的HASH值。

若L2 BMB包含N个L1 ,L1 BMB又包含M个DBA,则理论上可支持N*M个并发插入进程;
但并未考虑到高水位线,进程只能访问HHWM之下的块,假如当前高水位线位于第M个块,则最大支持M个并发插入进程;
高水位线一次提升的块数= min(L1 BMB ranges, extent);




Vage有一个很经典的调优案例;
症状
某ASSM表每天1分区,采用uniform extent每个1M;上午9:00开始并发插入,大约100多个进程;
每天9点左右开始出现buffer busy wait等待,十几分钟左右等待消失,然后压力高的时候,偶而出现竞争,但不如早高峰严重

分析
通过试验发现新创建的表即便有两个L1 BMB, 可并发进程只选择其中1个,每个L1 BMB描述64个块;
这是由于高水位线的缘故,首次插入时 HHWM提升64个块,另1个L1 BMB描述的块均在HHWM之上故无法使用,此时并发度为64;
而当段大于64时,1个L1  BMB描述256个数据块,而高水位线以128块(extent)为单位增长,此时最高支持128个并发进程;
故过一段时间后症状消失,但偶尔会出现竞争;

解决方案
作者采用两种措施
1 小于64M时,高水位线一次抬升64个块(受限于L1 BMB),人为提升高水位线到64M,理论上此时并发进程可插入到<64M的任何1个块中,并发度非常高;
2 大于64M时,高水位线一次抬升128个块(受限于extent size),故将其从1M改为4M(2M应该就可以了);
目的都是为了提升插入并发度,其实还有1种解决方案,假定能估算每天数据量,可直接将高水位线提升至此;

 


 

您可能感兴趣的文档:

--结束END--

本文标题: oracle的ASSM小结

本文链接: https://lsjlt.com/news/47537.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • oracle的ASSM小结
    ASSM采用3级位图,第一个extent至少有3个元数据块,L1 – L2 – header(包含L3) 段头 & L3 Extent control: 存储HHWM信息 Header...
    99+
    2024-04-02
  • Oracle Study之案例--Oracle ASSM管理方式下的BITMAP
    Oracle Study之案例--Oracle ASSM管理方式下的Bitmap     在基于此在LMT(Extent Local Management)下Oracle建议我...
    99+
    2024-04-02
  • ORACLE ANALYZE使用小结
      ANALYZE的介绍       使用ANALYZE可以收集或删除对象的统计信息、验证对象的结构、标识表或cluster中的行迁移/行链接信息等。官方文档关于ANALYZE功能介绍如下:   ·         Collect...
    99+
    2017-07-04
    ORACLE ANALYZE使用小结
  • Oracle系列:(27)小结
    (01)删除到回收站的表,通过什么技术可以还原  闪回(02)create table emp as select * from xxx_emp where 1<>...
    99+
    2024-04-02
  • Oracle系列:(10)小结
    使用NVL(a,b)通用函数,统计员工年收入,NVL()作用于任何类型,即(number/varchar2/date)通用函数:参数类型可以是number或varchar2或date类型使用NVL2(a,b...
    99+
    2024-04-02
  • Oracle系列:(32)小结
    (01)一个完整的PLSQL有哪几部分组成?   [declare]/begin/[exception]/end;/(02)pename emp.ename%type和emp_rec emp%ro...
    99+
    2024-04-02
  • Oracle别名使用要点小结
    目录一:使用别名的好处二:测试小结总结今天在写一个简单的SQL语句并执行时抛出了如下图所示的一个错误提示信息! 恩,此异常信息很明显,在SQL语句中标示符的长度过长了,简短一些就应...
    99+
    2024-04-02
  • ORA-55627: Flashback Archive tablespace must be ASSM tablespace ORACLE 报错 故障修复 远程处理
    文档解释 ORA-55627: Flashback Archive tablespace must be ASSM tablespace Cause: An attempt was made to add a tablespace that...
    99+
    2023-11-05
    报错 故障 Flashback
  • ORACLE中常用的几种正则表达式小结
    ORACLE正则表达式我基本用到的就一下几种,前四种最长用到 REGEXP_LIKE(source_char, pattern, match_parameter)REGEXP_SUB...
    99+
    2024-04-02
  • ORA-43853: SECUREFILE lobs cannot be used in non-ASSM tablespace “string” ORACLE 报错 故障修复
    文档解释 ORA-43853: SECUREFILE lobs cannot be used in non-ASSM tablespace “string” Cause: SECUREFILE lobs requir...
    99+
    2023-11-05
    报错 故障 lobs
  • Memcached 小结
    memcached 分布式内存对象缓存系统;内存缓存;把所取对象或数据缓存在内存中;内存中缓存的这些数据通过API的方式被存取;数据就像是一张HASH表,以key-value对的方式存在。用来减轻数据库的压...
    99+
    2024-04-02
  • iLo3小结
    没用过iLO时候,如何访问iLO一直很困扰自己,还有不明白都是自身配的地址,为啥需要路由必须可达?看了iLO3的操作手册后才明白,iLO实际上可以说是另一个mini操作系统,用来远程操作并收集呈现系统硬件信息。所以必须要有一个可达到路由去访...
    99+
    2023-01-31
    小结
  • np.ones的使用小结
    目录概述用法例子概述 np.ones()函数返回给定形状和数据类型的新数组,其中元素的值设置为1。此函数与numpy zeros()函数非常相似。 用法 np.ones(shape,...
    99+
    2023-03-14
    np.ones 使用 np.ones
  • springjdbctemplate的用法小结
    目录概述JDBCTemplate开发步骤介绍使用概述 原始繁琐的JDBC API对象的封装;操作模板如下:JdbcTemplate和HibernateTemplate,操作nosql...
    99+
    2023-05-16
    spring jdbctemplate使用 spring jdbctemplate
  • Spring Lifecycle的使用小结
    目录前言Lifecycle自定义Lifecycle实现类测试SmartLifecycle自定义SmartLifecycle实现类多个实现类源码分析LifecycleProcessor...
    99+
    2024-04-02
  • Cookie 的 SameSite 属性小结
    目录一、CSRF 攻击是什么?二、SameSite 属性2.1 Strict2.2 Lax2.3 None三、参考链接 一、CSRF 攻击是什么? Cookie 往往用来存储用户的身...
    99+
    2024-04-02
  • Bash EOF的使用小结
    目录1. 命令行输出2. 写入文本3. 追加文本4. 覆盖文本5. 自定义 EOF6. 另一种格式7. 示例7.1 配置文件7.2 新建分区并挂载7.3 设置变量7.4 输出脚本7.5 匹配输出7.6 json 文本参考...
    99+
    2023-01-12
    Bash EOF
  • Bash EOF的使用小结
    目录1. 命令行输出2. 写入文本3. 追加文本4. 覆盖文本5. 自定义 EOF6. 另一种格式7. 示例7.1 配置文件7.2 新建分区并挂载7.3 设置变量7.4 输出脚本7....
    99+
    2023-01-12
    Bash EOF
  • V$SYSSTAT 小结
     V$SYSSTAT中包含多个统计项,这部分介绍了一些关键的v$sysstat统计项,在调优方面相当有用。下列按字母先后排序:   数据库使用状态的一些关键指标: l&nbs...
    99+
    2024-04-02
  • Python group()小结
    今天看到group()方法,有点疑惑,自己动手了解了一下。 举例如下: import re a = "123abc456" print re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(0) ...
    99+
    2023-01-31
    小结 Python group
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作