찾다
데이터 베이스MySQL 튜토리얼ORACLE空间管理实验4:块管理之ASSM三级位图结构

L1、L2、L3块的作用:--方便查找数据块。 L3中有指向L2的指针,L2有指向L1的指针,L1中有多个数据块的指针和状态。 1、每个L3中,有多个L2的地址(第一个L3是段头)。 2、每个L2中,有多个L1的地址。 3、每个L1中,有多个数据块地址。 ORACLE最多支持三级位


L1、L2、L3块的作用:--方便查找数据块。

L3中有指向L2的指针,L2有指向L1的指针,L1中有多个数据块的指针和状态。
1、每个L3中,有多个L2的地址(第一个L3是段头)。
2、每个L2中,有多个L1的地址。
3、每个L1中,有多个数据块地址。
ORACLE最多支持三级位图。
一级位图用于管理具体数据块的使用。
二级位图块记录了一级位图块的地址。
三级位图块记录了二级位图块的地址。Segment Heade可以管理极大数据量的对象的空间,很难出现另一个三级位图块。


1.如何查找段头--第一个L3块

BYS@ bys3>create tablespace test2 datafile '/u01/oradata/bys3/test22.dbf' size 10m;
Tablespace created.
BYS@ bys3>create table test2(aa varchar2(10)) tablespace test2;
Table created.
BYS@ bys3>insert into test2 values(789);
1 row created.
BYS@ bys3>commit;
Commit complete.
BYS@ bys3>select dbms_rowid.ROWID_BLOCK_NUMBER(rowid),dbms_rowid.ROWID_RELATIVE_FNO(rowid) ,aa from test2;
DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID) DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID) AA
------------------------------------ ------------------------------------ ----------
                                 131                                    7 789
BYS@ bys3>select header_block,header_file fromdba_segments where segment_name='TEST2' and owner='BYS';
HEADER_BLOCK HEADER_FILE    -------从这语句找到段头
------------ -----------
         130           7
BYS@ bys3>select object_id,data_object_id from dba_objects where object_name='TEST2' and owner='BYS';
 OBJECT_ID DATA_OBJECT_ID
---------- --------------
     23199          23199

BYS@ bys3>alter table test2 allocate extent (size 960k);
Table altered.
BYS@ bys3>alter system dump datafile 7 block 130;
System altered.
BYS@ bys3>select value from v$diag_info where name like 'De%';
VALUE
----------------------------------------------------------------------------------------------------
/u01/diag/rdbms/bys3/bys3/trace/bys3_ora_4215.trc
################

段头--第一个L3块的解读:

Start dump data blocks tsn: 7 file#:7 minblk 130 maxblk 130
Block dump from cache:  ---这段是BUFFER CACHE的BLOCK HEADER信息,参考:http://blog.csdn.net/haibusuanyun/article/details/17525523
Dump of buffer cache at level 4 for tsn=7 rdba=29360258
BH (0x20fe6d64) file#: 7 rdba: 0x01c00082 (7/130) class: 4 ba: 0x20cb6000
  set: 3 pool: 3 bsz: 8192 bsi: 0 sflg: 1 pwc: 0,0
  dbwrid: 0 obj: 23199 objn: 23199 tsn: 7 afn: 7 hint: f
  hash: [0x2a39d804,0x2a39d804] lru: [0x217f7ccc,0x21befb08]
  lru-flags: on_auxiliary_list
  ckptq: [NULL] fileq: [NULL] objq: [0x21befb20,0x22beab34] objaq: [0x2443a408,0x2
1befb28]
  st: XCURRENT md: NULL fpin: 'ktswh03: ktscts' tch: 2
  flags: block_written_once redo_since_read
  LRBA: [0x0.0.0] LSCN: [0x0.0] HSCN: [0xffff.ffffffff] HSUB: [1]
Block dump from disk:  --下面的才是物理数据文件中内容
buffer tsn: 7 rdba: 0x01c00082 (7/130)
scn: 0x0000.0082b051 seq: 0x01 flg: 0x04 tail: 0xb0512301
frmt: 0x02 chkval: 0xf0d6 type: 0x23=PAGETABLE SEGMENT HEADER  --数据块类型:段头
Hex dump of block: st=0, typ_found=1
Dump of memory from 0xB6BC0600 to 0xB6BC2600
B6BC0600 0000A223 01C00082 0082B051 04010000  [#.......Q.......]--B6BC0600 0000A223,这里的23,是数据块中的块头的块类型的信息,与type: 0x23=对应。
        Repeat 185 times -------省略了大部分无关输出
B6BC25F0 00000000 00000000 00000000 B0512301  [.............#Q.]
  Extent Control Header
  -----------------------------------------------------------------
  Extent Header:: spare1: 0      spare2: 0      #extents: 18     #blocks: 384   --有18个区,384个块==16个区-8 个块,2个区-128个块,16*8+2*128=384
                  last map  0x00000000  #maps: 0      offset: 2716  
      Highwater::  0x01c00088  ext#: 0      blk#: 8      ext size: 8     
      高水位的块DBA--0x01c00088 -136号块,是第二个区的第一个块。插入只会插入高水位以下的块 并发插入时候,高水位的位置会影响限制并发插入,因为只能插入高水位以下的块,如8KBLOCK时;1M区,128个块,超过128个并发会有热块,从而产生buffer busy waits.; 如果是8M的区,会有1024个块,超过1024并发同样会有热块产生。
  #blocks in seg. hdr's freelists: 0     
  #blocks below: 5     
  mapblk  0x00000000  offset: 0     
                   Unlocked
  --------------------------------------------------------
  Low HighWater Mark :   --低高水位,低高水位之下的数据都已经使用了。低高水位和高水位之间,有的数据块已经使用,有的未使用-未格式化。 格式化是在块头加:OJBECT号,数据字典中:dba_objects.DATA_OBJECT_ID
      Highwater::  0x01c00088  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: 0x01c00080
  Level 1 BMB for Low HWM block: 0x01c00080
  --------------------------------------------------------
  Segment Type: 1 nl2: 1      blksz: 8192   fbsz: 0      
  L2 Array start offset:  0x00001434
  First Level 3 BMB:  0x00000000
  L2 Hint for inserts:  0x01c00081   ----二级位图块的DBA,换算为:0000 0001 1100 ,前10位文件号是二进制111-十进制7,16进制81--十进制129.插入时会选择这个L2下的L1的块,直到此L2下的所有L1中的块用完,才会用其它L2--在此处更改L1的DBA。
  Last Level 1 BMB:  0x01c00181
  Last Level II BMB:  0x01c00081
  Last Level III BMB:  0x00000000
     Map Header:: next  0x00000000  #extents: 18   obj#: 23199  flag: 0x10000000
  Inc # 0
  Extent Map  --区地图,段下有几个区,区的起始地址以及包含的块数
  -----------------------------------------------------------------
   0x01c00080  length: 8     
   0x01c00088  length: 8     
   0x01c00090  length: 8     
   0x01c00098  length: 8     
   0x01c000a0  length: 8     
   0x01c000a8  length: 8     
   0x01c000b0  length: 8     
   0x01c000b8  length: 8     
   0x01c000c0  length: 8     
   0x01c000c8  length: 8     
   0x01c000d0  length: 8     
   0x01c000d8  length: 8     
   0x01c000e0  length: 8     
   0x01c000e8  length: 8     
   0x01c000f0  length: 8     
   0x01c000f8  length: 8     
   0x01c00100  length: 128   
   0x01c00180  length: 128   
 
  Auxillary Map --辅助表区由哪个L1管理及所管理的区-数据块的起始位置DBA--非Metadata块始地址。。辅助区地址可看出哪几个区内的块共用同一个L1,如下:
  --------------------------------------------------------
   Extent 0     :  L1 dba:  0x01c00080 Data dba:  0x01c00083 --131,第一个可用的块的地址
   Extent 1     :  L1 dba:  0x01c00080 Data dba:  0x01c00088 --136,可以看到这个L1和上一个L1相同,一个L1管理了两个区。

   Extent 2     :  L1 dba:  0x01c00090 Data dba:  0x01c00091 --145
   Extent 3     :  L1 dba:  0x01c00090 Data dba:  0x01c00098
   Extent 4     :  L1 dba:  0x01c000a0 Data dba:  0x01c000a1
   Extent 5     :  L1 dba:  0x01c000a0 Data dba:  0x01c000a8
   Extent 6     :  L1 dba:  0x01c000b0 Data dba:  0x01c000b1
   Extent 7     :  L1 dba:  0x01c000b0 Data dba:  0x01c000b8
   Extent 8     :  L1 dba:  0x01c000c0 Data dba:  0x01c000c1
   Extent 9     :  L1 dba:  0x01c000c0 Data dba:  0x01c000c8
   Extent 10    :  L1 dba:  0x01c000d0 Data dba:  0x01c000d1
   Extent 11    :  L1 dba:  0x01c000d0 Data dba:  0x01c000d8
   Extent 12    :  L1 dba:  0x01c000e0 Data dba:  0x01c000e1
   Extent 13    :  L1 dba:  0x01c000e0 Data dba:  0x01c000e8
   Extent 14    :  L1 dba:  0x01c000f0 Data dba:  0x01c000f1
   Extent 15    :  L1 dba:  0x01c000f0 Data dba:  0x01c000f8
   Extent 16    :  L1 dba:  0x01c00100 Data dba:  0x01c00102  --128个块了,L1一个管理 一个区在8KB BLOCK,8M的区时,一个L1管理可以1024个块,再大的区就未实验过了。
   Extent 17    :  L1 dba:  0x01c00180 Data dba:  0x01c00182
  --------------------------------------------------------
 
   Second Level Bitmap block DBAs
   --------------------------------------------------------
   DBA 1:   0x01c00081      --二级位图块的DBA,这里只有一个L2,如果有多个L2,都会在这里显示出来的。
End dump data blocks tsn: 7 file#: 7 minblk 130 maxblk 130   
  #################################################3

DUMP L2块--根据段头找到L2的DBA

BYS@ bys3>alter system dump datafile 7 block 129;
System altered.
BYS@ bys3>select value from v$diag_info where name like 'De%';
VALUE
----------------------------------------------------------------------------------------------------
/u01/diag/rdbms/bys3/bys3/trace/bys3_ora_4982.trc
#######
Start dump data blocks tsn: 7 file#:7 minblk 129 maxblk 129
Block dump from cache:
Dump of buffer cache at level 4 for tsn=7 rdba=29360257
Block dump from disk:
buffer tsn: 7 rdba: 0x01c00081 (7/129)
scn: 0x0000.0082b04b seq: 0x03 flg: 0x04 tail: 0xb04b2103
frmt: 0x02 chkval: 0xcf4e type: 0x21=SECOND LEVEL BITMAP BLOCK   --L2
Hex dump of block: st=0, typ_found=1
Dump of memory from 0xB6B43600 to 0xB6B45600
B6B43600 0000A221 01C00081 0082B04B 04030000  [!.......K.......]  0000A221中21与type: 0x21=  对应
        Repeat 496 times
B6B455F0 00000000 00000000 00000000 B04B2103  [.............!K.]
Dump of Second Level Bitmap Block
   number: 12      nfree: 12      ffree: 0      pdba:     0x01c00082     --父DBA,也就是L3的地址-130号块,   number: 12     --L1的总数,nfree: 12--空闲的L1个数,
   Inc #: 0 Objd: 23199
  opcode:1
 xid:
  L1 Ranges :--多个L1时,按L1 DBA顺序插入/////???????插入数据时:再根据PID进行HASH,得到一个随机值,根据此值选择L2中的L1--受高水位影响的
  --------------------------------------------------------
   0x01c00080  Free: 5 Inst: 1     ---128号块,Free: 5标记L1中可用空间状态
   0x01c00090  Free: 5 Inst: 1          --144号块,Free: 0 FULL状态

   0x01c000a0  Free: 5 Inst: 1
   0x01c000b0  Free: 5 Inst: 1
   0x01c000c0  Free: 5 Inst: 1
   0x01c000d0  Free: 5 Inst: 1
   0x01c000e0  Free: 5 Inst: 1
   0x01c000f0  Free: 5 Inst: 1
   0x01c00100  Free: 5 Inst: 1
   0x01c00101  Free: 5 Inst: 1
   0x01c00180  Free: 5 Inst: 1
   0x01c00181  Free: 5 Inst: 1
 
  --------------------------------------------------------
End dump data blocks tsn: 7 file#: 7 minblk 129 maxblk 129

#####################################

DUMP L3块--根据L2中的  L1 Ranges的找到 第一个L1块的DBA

BYS@ bys3>alter system dump datafile 7 block 128;
System altered.
BYS@ bys3>select value from v$diag_info where name like 'De%';
VALUE
----------------------------------------------------------------------------------------------------
/u01/diag/rdbms/bys3/bys3/trace/bys3_ora_5162.trc
@@@@@@@@@@@@@@@
Start dump data blocks tsn: 7 file#:7 minblk 128 maxblk 128
Block dump from cache:
Dump of buffer cache at level 4 for tsn=7 rdba=29360256
Block dump from disk:
buffer tsn: 7 rdba: 0x01c00080 (7/128)
scn: 0x0000.0082afe2 seq: 0x01 flg: 0x04 tail: 0xafe22001
frmt: 0x02 chkval: 0x9d2d type: 0x20=FIRST LEVEL BITMAP BLOCK
Hex dump of block: st=0, typ_found=1
Dump of memory from 0xB6CBD600 to 0xB6CBF600
B6CBD600 0000A220 01C00080 0082AFE2 04010000  [ ...............]  0000A220的20,表示:type: 0x20=FIRST LEVEL BITMAP BLOCK
B6CBD610 00009D2D 00000000 00000000 00000000  [-...............]
B6CBD620 00000000 00000000 00000000 00000000  [................]
        Repeat 1 times
        Repeat 8 times
B6CBD780 00000000 00000000 00000000 55551511  [..............UU]
B6CBD790 00000000 00000000 00000000 00000000  [................]
        Repeat 485 times
B6CBF5F0 00000000 00000000 00000000 AFE22001  [............. ..]
Dump of First Level Bitmap Block
 --------------------------------
   nbits : 4 nranges: 2         parent dba:  0x01c00081   poffset: 0     --parent dba: 上一级DBA,L2的地址——129号块
   unformatted: 8       total: 16        first useful block: 3      
   owning instance : 1
   instance ownership changed at 01/22/2014 11:22:40
   Last successful Search 01/22/2014 11:22:40
   Freeness Status:  nf1 0      nf2 0      nf3 0      nf4 5      
 
   Extent Map Block Offset: 4294967295
   First free datablock : 3      
   Bitmap block lock opcode 0
   Locker xid:     :  0x0000.000.00000000
   Dealloc scn: 3.0
   Flag: 0x00000001 (-/-/-/-/-/HWM)
   Inc #: 0 Objd: 23199
  HWM Flag: HWM Set
      Highwater::  0x01c00088  ext#: 0      blk#: 8      ext size: 8     高水位在 0x01c00088  136号块,下一个区的第一个块
  #blocks in seg. hdr's freelists: 0     
  #blocks below: 5     
  mapblk  0x00000000  offset: 0     
  --------------------------------------------------------
  DBA Ranges :   --这个L1管理的数据块的范围
  --------------------------------------------------------
   0x01c00080  Length: 8      Offset: 0      
   0x01c00088  Length: 8      Offset: 8      
 
   0:Metadata   1:Metadata   2:Metadata   3:75-100% free      ---Metadata 是无数据,这里存放的是L3 L2 L1的块。
   4:75-100% free   5:75-100% free   6:75-100% free   7:75-100% free   
   8:unformatted   9:unformatted   10:unformatted   11:unformatted
   12:unformatted   13:unformatted   14:unformatted   15:unformatted      可以DUMP 12和5,对比格式化与未格式化的差别。
在L1块中关于数据块的状态有7种格式:Unformat       75-100%       50-75%       25-50%      0-25%   FULL    Metadata
  --------------------------------------------------------
End dump data blocks tsn: 7 file#: 7 minblk 128 maxblk 128
성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
MySQL에서 사용 가능한 다른 스토리지 엔진은 무엇입니까?MySQL에서 사용 가능한 다른 스토리지 엔진은 무엇입니까?Apr 26, 2025 am 12:27 AM

mysqloffersvariousStorageEngines, 각각의 everitedforentUsecases : 1) innodbisidealforapplicationsneedingAcidCoInceandHighConcurrency, 지원 트랜잭션 및 foreignKeys.2) myIsAmisbestforread-heverworkloads, memoryengineis

MySQL의 일반적인 보안 취약점은 무엇입니까?MySQL의 일반적인 보안 취약점은 무엇입니까?Apr 26, 2025 am 12:27 AM

MySQL의 일반적인 보안 취약점에는 SQL 주입, 약한 암호, 부적절한 권한 구성 및 업데이트되지 않은 소프트웨어가 포함됩니다. 1. 전처리 명령문을 사용하여 SQL 주입을 방지 할 수 있습니다. 2. 강력한 비밀번호 전략을 사용하여 약한 암호는 피할 수 있습니다. 3. 정기적 인 검토 및 사용자 권한 조정을 통해 부적절한 권한 구성을 해결할 수 있습니다. 4. Unupdated 소프트웨어는 MySQL 버전을 정기적으로 확인하고 업데이트하여 패치 할 수 있습니다.

MySQL에서 느린 쿼리를 어떻게 식별 할 수 있습니까?MySQL에서 느린 쿼리를 어떻게 식별 할 수 있습니까?Apr 26, 2025 am 12:15 AM

느린 쿼리 로그를 활성화하고 임계 값을 설정하여 MySQL에서 느린 쿼리를 식별 할 수 있습니다. 1. 느린 쿼리 로그를 활성화하고 임계 값을 설정하십시오. 2. 느린 쿼리 로그 파일을보고 분석하고 심층 분석을 위해 MySQLDumpSlow 또는 PT-Query 소수성과 같은 도구를 사용하십시오. 3. 인덱스 최적화, 쿼리 재 작성 및 select*의 사용을 피함으로써 느린 쿼리 최적화를 달성 할 수 있습니다.

MySQL 서버 건강 및 성능을 어떻게 모니터링 할 수 있습니까?MySQL 서버 건강 및 성능을 어떻게 모니터링 할 수 있습니까?Apr 26, 2025 am 12:15 AM

MySQL 서버의 건강 및 성능을 모니터링하려면 시스템 건강, 성능 지표 및 쿼리 실행에주의를 기울여야합니다. 1) 시스템 건강 모니터링 : CPU, 메모리, 디스크 I/O 및 네트워크 활동을 볼 수 있도록 상단, HTOP 또는 ShowGlobalStatus 명령을 사용하십시오. 2) 성능 표시기 추적 : 초당 쿼리 번호, 평균 쿼리 시간 및 캐시 적중률과 같은 주요 표시기를 모니터링합니다. 3) 쿼리 실행 최적화 확인 : 실행 시간이 설정 임계 값을 초과하는 쿼리를 느린 쿼리 로그를 활성화하고 기록 및 최적화하십시오.

MySQL 및 Mariadb를 비교하고 대조하십시오.MySQL 및 Mariadb를 비교하고 대조하십시오.Apr 26, 2025 am 12:08 AM

MySQL과 Mariadb의 주요 차이점은 성능, 기능 및 라이센스입니다. 1. MySQL은 Oracle에 의해 개발되었으며 Mariadb는 포크입니다. 2. MariaDB는 높은 하중 환경에서 더 나은 성능을 발휘할 수 있습니다. 3. Mariadb는 더 많은 스토리지 엔진과 기능을 제공합니다. 4.MySQL은 듀얼 라이센스를 채택하고 MariaDB는 완전히 오픈 소스입니다. 선택할 때 기존 인프라, 성능 요구 사항, 기능 요구 사항 및 라이센스 비용을 고려해야합니다.

MySQL의 라이센스는 다른 데이터베이스 시스템과 어떻게 비교됩니까?MySQL의 라이센스는 다른 데이터베이스 시스템과 어떻게 비교됩니까?Apr 25, 2025 am 12:26 AM

MySQL은 GPL 라이센스를 사용합니다. 1) GPL 라이센스는 MySQL의 무료 사용, 수정 및 분포를 허용하지만 수정 된 분포는 GPL을 준수해야합니다. 2) 상업용 라이센스는 공개 수정을 피할 수 있으며 기밀이 필요한 상업용 응용 프로그램에 적합합니다.

MyISAM을 통해 언제 innodb를 선택 하시겠습니까?MyISAM을 통해 언제 innodb를 선택 하시겠습니까?Apr 25, 2025 am 12:22 AM

MyISAM 대신 InnoDB를 선택할 때의 상황에는 다음이 포함됩니다. 1) 거래 지원, 2) 높은 동시성 환경, 3) 높은 데이터 일관성; 반대로, MyISAM을 선택할 때의 상황에는 다음이 포함됩니다. 1) 주로 읽기 작업, 2) 거래 지원이 필요하지 않습니다. InnoDB는 전자 상거래 플랫폼과 같은 높은 데이터 일관성 및 트랜잭션 처리가 필요한 응용 프로그램에 적합하지만 MyISAM은 블로그 시스템과 같은 읽기 집약적 및 트랜잭션이없는 애플리케이션에 적합합니다.

MySQL에서 외국 키의 목적을 설명하십시오.MySQL에서 외국 키의 목적을 설명하십시오.Apr 25, 2025 am 12:17 AM

MySQL에서 외국 키의 기능은 테이블 간의 관계를 설정하고 데이터의 일관성과 무결성을 보장하는 것입니다. 외국 키는 참조 무결성 검사 및 계단식 작업을 통해 데이터의 효과를 유지합니다. 성능 최적화에주의를 기울이고 사용할 때 일반적인 오류를 피하십시오.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.