本文是观看视频A tour of the Oracle Database Block的笔记。

Hex Dump of block?

termiology 101:
Segment, Extent, Blocks

经典的图示:

21c时的图示:

Extent是Chunk of data file。因此有以下三个属性:

  • file
  • start position
  • length

按照文档的说法,Extent Size最小为64KB,随着对象变大,Extent Size相应变为1M,8M,64M。

For system-managed extents, Oracle determines the optimal size of additional extents, with a minimum extent size of 64 KB. If the tablespaces are created with ‘segment space management auto’, and if the database block size is 16K or higher, then Oracle manages segment size by creating extents with a minimum size of 1M. This is the default for permanent tablespaces.

对象最开始部分的数据库块:

SQL> desc dba_segments;Name    Null?             Type
__________________ ________ ________________
...
HEADER_FILE                 NUMBER
HEADER_BLOCK                NUMBER
...

参照DBA_SEGMENTS的说明:

  • HEADER_FILE:Absolute file number of the data file containing the segment header
  • HEADER_BLOCK:ID of the block containing the segment header

接下来就是Extent中的数据库块了:

SQL> desc dba_extentsName    Null?             Type
__________________ ________ ________________
OWNER                       VARCHAR2(128)
SEGMENT_NAME                VARCHAR2(128)
PARTITION_NAME              VARCHAR2(128)
SEGMENT_TYPE                VARCHAR2(18)
TABLESPACE_NAME             VARCHAR2(30)
EXTENT_ID                   NUMBER
FILE_ID                     NUMBER <- 文件
BLOCK_ID                    NUMBER <- 数据库块 ID
BYTES                       NUMBER
BLOCKS                      NUMBER <- 数据库块数量
RELATIVE_FNO                NUMBER

参照DBA_EXTENTS的说明:

  • FILE_ID:Absolute file number of the data file containing the extent
  • BLOCK_ID:Starting block number of the extent
  • BLOCKS:Size of the extent in Oracle blocks

创建测试表:

create table T(x number, y number, z varchar2(10));
insert into T values(10, 10, 'Connor');
commit;

查看Segment开始部分的block,并获取数据文件名:

SQL> select HEADER_FILE, HEADER_BLOCK from dba_segments where segment_name = 'T';HEADER_FILE    HEADER_BLOCK
______________ _______________12          253362SQL> select name from v$datafile where file# = 12;NAME
___________________________________________________
/opt/oracle/oradata/ORCLCDB/ORCLPDB1/users01.dbfSQL> show parameter block_size;
NAME          TYPE    VALUE
------------- ------- -----
db_block_size integer 8192

查看头部数据库块中的内容,其中skip的值对应于HEADER_BLOCK,bs对于block size,hexdump等同于od -h。输出中每行为16字节,*行表示省略:

$ dd if=users01.dbf bs=8192 skip=253362 count=1|hexdump
0000000 a223 0000 ddb2 0303 f493 0157 0000 0401
0000010 83f8 0000 0000 0000 0000 0000 0000 0000
0000020 0000 0000 0001 0000 0008 0000 0a9c 0000
0000030 0000 0000 0008 0000 0008 0000 ddb8 0303
0000040 0000 0000 0000 0000 0000 0000 0005 0000
0000050 0000 0000 0000 0000 0000 0000 0000 0000
0000060 0008 0000 0008 0000 ddb8 0303 0000 0000
0000070 0000 0000 0000 0000 0005 0000 ddb0 0303
0000080 ddb0 0303 0000 0000 0000 0000 0000 0000
0000090 0000 0000 0000 0000 0000 0000 0000 0000
*
00000d0 0001 0000 2000 0000 0000 0000 1434 0000
00000e0 0000 0000 ddb1 0303 0001 0000 ddb0 0303
00000f0 ddb1 0303 0000 0000 0000 0000 0000 0000
0000100 0000 0000 0000 0000 0001 0000 0000 0000
0000110 2925 0001 0000 1000 ddb0 0303 0008 0000
0000120 0000 0000 0000 0000 0000 0000 0000 0000
*
0000ab0 ddb0 0303 ddb3 0303 0000 0000 0000 0000
0000ac0 0000 0000 0000 0000 0000 0000 0000 0000
*
0001440 0000 0000 0000 0000 ddb1 0303 0000 0000
0001450 0000 0000 0000 0000 0000 0000 0000 0000
*
0001ff0 0000 0000 0000 0000 0000 0000 2301 f493
0002000

利用Oracle命令导出block内容,输出在Trace file中:

SQL> alter system dump datafile 12 block 253362;System DUMP altered.SQL> SELECT VALUE FROM V$DIAG_INFO WHERE NAME = 'Default Trace File';VALUE
____________________________________________________________________
/opt/oracle/diag/rdbms/orclcdb/ORCLCDB/trace/ORCLCDB_ora_5388.trc

alter system dump属于内部命令,在Oracle标准文档中找不到帮助。

查看Trace File,完整的输出如下:

$ cat /opt/oracle/diag/rdbms/orclcdb/ORCLCDB/trace/ORCLCDB_ora_5388.trc
Start dump data blocks tsn: 5 file#:12 minblk 253362 maxblk 253362
Block dump from cache:
Dump of buffer cache at level 3 for pdb=3 tsn=5 rdba=50585010
BH (0xd2faf098) file#: 12 rdba: 0x0303ddb2 (12/253362) class: 4 ba: 0xd28a2000set: 5 pool: 3 bsz: 8192 bsi: 0 sflg: 2 pwc: 0,0dbwrid: 0 obj: 76069 objn: 76069 tsn: [3/5] afn: 12 hint: fhash: [0xdbf73d78,0xb3fcca60] lru: [0xd2faf2e8,0xd2faf018]ckptq: [NULL] fileq: [NULL]objq: [0xd2faf040,0xd2fae938] objaq: [0x941198e0,0xd2faf050]st: XCURRENT md: NULL fpin: 'ktswh03: ktscts' fscn: 0x157f47c tch: 1flags: block_written_onceLRBA: [0x0.0.0] LSCN: [0x0] HSCN: [0x157f493] HSUB: [1]Printing buffer operation history (latest change first):cnt: 1201. sid:06 L192:kcbbic2:bic:FBD     02. sid:06 L191:kcbbic2:bic:FBW03. sid:06 L602:bic1_int:bis:FWC    04. sid:06 L822:bic1_int:ent:rtn05. sid:06 L832:oswmqbg1:clr:WRT    06. sid:06 L930:kubc:sw:mq07. sid:06 L913:bxsv:sw:objq        08. sid:06 L608:bxsv:bis:FBW09. sid:06 L607:bxsv:bis:FFW        10. sid:15 L464:chg1_mn:bic:FMS11. sid:15 L778:chg1_mn:bis:FMS     12. sid:15 L353:gcur:set:MEXCL13. sid:15 L464:chg1_mn:bic:FMS     14. sid:15 L778:chg1_mn:bis:FMS15. sid:15 L353:gcur:set:MEXCL      16. sid:15 L464:chg1_mn:bic:FMSbuffer tsn: 5 rdba: 0x0303ddb2 (12/253362)scn: 0x157f493 seq: 0x01 flg: 0x04 tail: 0xf4932301frmt: 0x02 chkval: 0x83f8 type: 0x23=PAGETABLE SEGMENT HEADER
Hex dump of block: st=0, typ_found=1
Dump of memory from 0x00000000D28A2000 to 0x00000000D28A4000
0D28A2000 0000A223 0303DDB2 0157F493 04010000  [#.........W.....]
0D28A2010 000083F8 00000000 00000000 00000000  [................]
0D28A2020 00000000 00000001 00000008 00000A9C  [................]
0D28A2030 00000000 00000008 00000008 0303DDB8  [................]
0D28A2040 00000000 00000000 00000000 00000005  [................]
0D28A2050 00000000 00000000 00000000 00000000  [................]
0D28A2060 00000008 00000008 0303DDB8 00000000  [................]
0D28A2070 00000000 00000000 00000005 0303DDB0  [................]
0D28A2080 0303DDB0 00000000 00000000 00000000  [................]
0D28A2090 00000000 00000000 00000000 00000000  [................]Repeat 3 times
0D28A20D0 00000001 00002000 00000000 00001434  [..... ......4...]
0D28A20E0 00000000 0303DDB1 00000001 0303DDB0  [................]
0D28A20F0 0303DDB1 00000000 00000000 00000000  [................]
0D28A2100 00000000 00000000 00000001 00000000  [................]
0D28A2110 00012925 10000000 0303DDB0 00000008  [%)..............]
0D28A2120 00000000 00000000 00000000 00000000  [................]Repeat 152 times
0D28A2AB0 0303DDB0 0303DDB3 00000000 00000000  [................]
0D28A2AC0 00000000 00000000 00000000 00000000  [................]Repeat 151 times
0D28A3440 00000000 00000000 0303DDB1 00000000  [................]
0D28A3450 00000000 00000000 00000000 00000000  [................]Repeat 185 times
0D28A3FF0 00000000 00000000 00000000 F4932301  [.............#..]Extent Control Header-----------------------------------------------------------------Extent Header:: spare1: 0      spare2: 0      #extents: 1      #blocks: 8last map  0x00000000  #maps: 0      offset: 2716Highwater::  0x0303ddb8  ext#: 0      blk#: 8      ext size: 8#blocks in seg. hdr's freelists: 0#blocks below: 5mapblk  0x00000000  offset: 0Unlocked--------------------------------------------------------Low HighWater Mark :Highwater::  0x0303ddb8  ext#: 0      blk#: 8      ext size: 8#blocks in seg. hdr's freelists: 0#blocks below: 5mapblk  0x00000000  offset: 0Level 1 BMB for High HWM block: 0x0303ddb0Level 1 BMB for Low HWM block: 0x0303ddb0--------------------------------------------------------Segment Type: 1 nl2: 1      blksz: 8192   fbsz: 0L2 Array start offset:  0x00001434First Level 3 BMB:  0x00000000L2 Hint for inserts:  0x0303ddb1Last Level 1 BMB:  0x0303ddb0Last Level II BMB:  0x0303ddb1Last Level III BMB:  0x00000000Map Header:: next  0x00000000  #extents: 1    obj#: 76069  flag: 0x10000000Inc # 0Extent Map-----------------------------------------------------------------0x0303ddb0  length: 8Auxillary Map--------------------------------------------------------Extent 0     :  L1 dba:  0x0303ddb0 Data dba:  0x0303ddb3--------------------------------------------------------Second Level Bitmap block DBAs--------------------------------------------------------DBA 1:   0x0303ddb1Block dump from disk:
buffer tsn: 5 rdba: 0x0303ddb2 (12/253362)
scn: 0x157f493 seq: 0x01 flg: 0x04 tail: 0xf4932301
frmt: 0x02 chkval: 0x83f8 type: 0x23=PAGETABLE SEGMENT HEADER
Hex dump of block: st=0, typ_found=1
Dump of memory from 0x00007F130395F000 to 0x00007F1303961000
7F130395F000 0000A223 0303DDB2 0157F493 04010000  [#.........W.....]
7F130395F010 000083F8 00000000 00000000 00000000  [................]
7F130395F020 00000000 00000001 00000008 00000A9C  [................]
7F130395F030 00000000 00000008 00000008 0303DDB8  [................]
7F130395F040 00000000 00000000 00000000 00000005  [................]
7F130395F050 00000000 00000000 00000000 00000000  [................]
7F130395F060 00000008 00000008 0303DDB8 00000000  [................]
7F130395F070 00000000 00000000 00000005 0303DDB0  [................]
7F130395F080 0303DDB0 00000000 00000000 00000000  [................]
7F130395F090 00000000 00000000 00000000 00000000  [................]Repeat 3 times
7F130395F0D0 00000001 00002000 00000000 00001434  [..... ......4...]
7F130395F0E0 00000000 0303DDB1 00000001 0303DDB0  [................]
7F130395F0F0 0303DDB1 00000000 00000000 00000000  [................]
7F130395F100 00000000 00000000 00000001 00000000  [................]
7F130395F110 00012925 10000000 0303DDB0 00000008  [%)..............]
7F130395F120 00000000 00000000 00000000 00000000  [................]Repeat 152 times
7F130395FAB0 0303DDB0 0303DDB3 00000000 00000000  [................]
7F130395FAC0 00000000 00000000 00000000 00000000  [................]Repeat 151 times
7F1303960440 00000000 00000000 0303DDB1 00000000  [................]
7F1303960450 00000000 00000000 00000000 00000000  [................]Repeat 185 times
7F1303960FF0 00000000 00000000 00000000 F4932301  [.............#..]Extent Control Header-----------------------------------------------------------------Extent Header:: spare1: 0      spare2: 0      #extents: 1      #blocks: 8last map  0x00000000  #maps: 0      offset: 2716Highwater::  0x0303ddb8  ext#: 0      blk#: 8      ext size: 8#blocks in seg. hdr's freelists: 0#blocks below: 5mapblk  0x00000000  offset: 0Unlocked--------------------------------------------------------Low HighWater Mark :Highwater::  0x0303ddb8  ext#: 0      blk#: 8      ext size: 8#blocks in seg. hdr's freelists: 0#blocks below: 5mapblk  0x00000000  offset: 0Level 1 BMB for High HWM block: 0x0303ddb0Level 1 BMB for Low HWM block: 0x0303ddb0--------------------------------------------------------Segment Type: 1 nl2: 1      blksz: 8192   fbsz: 0L2 Array start offset:  0x00001434First Level 3 BMB:  0x00000000L2 Hint for inserts:  0x0303ddb1Last Level 1 BMB:  0x0303ddb0Last Level II BMB:  0x0303ddb1Last Level III BMB:  0x00000000Map Header:: next  0x00000000  #extents: 1    obj#: 76069  flag: 0x10000000Inc # 0Extent Map-----------------------------------------------------------------0x0303ddb0  length: 8Auxillary Map--------------------------------------------------------Extent 0     :  L1 dba:  0x0303ddb0 Data dba:  0x0303ddb3--------------------------------------------------------Second Level Bitmap block DBAs--------------------------------------------------------DBA 1:   0x0303ddb1End dump data blocks tsn: 5 file#: 12 minblk 253362 maxblk 253362

输出中,以下显示了Block类型:

frmt: 0x02 chkval: 0x83f8 type: 0x23=PAGETABLE SEGMENT HEADER


KCBH表示Kernel Cache Block Header,TYPE_SIZE的单位为字节:

SQL> select * from v$type_size where type = 'KCBH';COMPONENT    TYPE            DESCRIPTION    TYPE_SIZE    CON_ID
____________ _______ ______________________ ____________ _________
KCB          KCBH    BLOCK COMMON HEADER              20         0

从Extent的角度看,此表有1个Extent,Extent大小为8个数据块(64KB)。将Extent整个导出:

SQL> select file_id, block_id, blocks, bytes, relative_fno from dba_extents where segment_name = 'T';FILE_ID    BLOCK_ID    BLOCKS    BYTES    RELATIVE_FNO
__________ ___________ _________ ________ _______________12      253360         8    65536              12SQL> alter system dump datafile 12 block min 253360 block max 253367;

从Trace File查看8个数据块的类型:

$ grep ^frmt /opt/oracle/diag/rdbms/orclcdb/ORCLCDB/trace/ORCLCDB_ora_7597.trc
frmt: 0x02 chkval: 0x3877 type: 0x20=FIRST LEVEL BITMAP BLOCK
frmt: 0x02 chkval: 0x71e7 type: 0x21=SECOND LEVEL BITMAP BLOCK
frmt: 0x02 chkval: 0x83f8 type: 0x23=PAGETABLE SEGMENT HEADER
frmt: 0x02 chkval: 0x1dea type: 0x06=trans data
frmt: 0x02 chkval: 0xeda7 type: 0x06=trans data
frmt: 0x02 chkval: 0x1dec type: 0x06=trans data
frmt: 0x02 chkval: 0x1def type: 0x06=trans data
frmt: 0x02 chkval: 0x1dee type: 0x06=trans data

实际的数据是从第4个数据块开始的,数据块的类型为trans data。此类型的segment对象包括表,索引和cluster。我们来解析第4个数据块的详情:

Block dump from disk:
buffer tsn: 5 rdba: 0x0303ddb3 (12/253363)
scn: 0x157f493 seq: 0x02 flg: 0x04 tail: 0xf4930602
frmt: 0x02 chkval: 0x1dea type: 0x06=trans data
Hex dump of block: st=0, typ_found=1
Dump of memory from 0x00007F1DDC55D000 to 0x00007F1DDC55F000
7F1DDC55D000 0000A206 0303DDB3 0157F493 04020000  [..........W.....]

第一行的0000A206,其中06即表示block type为transactional data。A表示block size为8K(6=2k,8=4k,A=8k,C=16k)。A后面的2表示数据库版本8,9,10,11,1则表示8之前。不同的版本,block的格式有所不同。

接下来看rdba,其表示relative data block address,由file和block两部分组成。其值为3ddb3(253363),也就是第4个block。括号中的12表示file#:

SQL> select to_number('0303ddb3', 'xxxxxxxx') rdba from dual;RDBA
___________50585011SQL> select dbms_utility.data_block_address_file(50585011) F, dbms_utility.data_block_address_block(50585011) B from dual;F         B
_____ _________12    253363SQL> select to_char(dbms_utility.make_data_block_address(12, 253363), 'xxxxxxxx') rdba from dual;RDBA
____________303ddb3

to_number的帮助见这里。
to_char的帮助见这里。
DBMS_UTILITY的帮助见这里。

接下来看SCN(System Change Number),即数据库的时间戳。也就是rdba后面的部分0157F493

-- 当时的SCN
SQL> select to_number('0157F493', 'xxxxxxxx') from dual;TO_NUMBER('0157F493','XXXXXXXX')
___________________________________22541459-- 当前的SCN
SQL> select CURRENT_SCN from v$database;CURRENT_SCN
______________22549846

接下来的0402,02表示block sequence number,04表示flag。

block sequence number表示在同一SCN下更改block的序号,例如在本例中,update的block sequence number为0x01,而commit的block sequence number则为0x02。

alter system dump logfile

通过将redo log导出可以看到详细的更改:

SQL> select object_id from dba_objects where object_name = 'T';OBJECT_ID
____________76069SQL> ALTER SYSTEM DUMP LOGFILE '/opt/oracle/oradata/ORCLCDB/redo01.log' SCN MIN 22541459 SCN MAX 22541459 OBJNO 76069;System DUMP altered.

对应的Trace log文件片段:

REDO RECORD - Thread:1 RBA: 0x0000c7.00007940.0168 LEN: 0x0194 VLD: 0x01 CON_UID: 1574565078
SCN: 0x000000000157f493 SUBSCN:  2 12/19/2021 08:33:26
CHANGE #1 CON_ID:3 TYP:0 CLS:31 AFN:11 DBA:0x024000f0 OBJ:4294967295 SCN:0x000000000157f46d SEQ:1 OP:5.2 ENC:0 RBL:0 FLG:0x0000
ktudh redo: slt: 0x000a sqn: 0x000087b2 flg: 0x0052 siz: 112 fbi: 0uba: 0x0240030e.035a.06    pxid:  0x0000.000.00000000        pdbuid:1574565078
CHANGE #2 CON_ID:3 TYP:0 CLS:32 AFN:11 DBA:0x0240030e OBJ:4294967295 SCN:0x000000000157f468 SEQ:2 OP:5.1 ENC:0 RBL:0 FLG:0x0000
ktudb redo: siz: 112 spc: 7548 flg: 0x0012 seq: 0x035a rec: 0x06xid:  0x0008.00a.000087b2
ktubl redo: slt: 10 wrp: 1 flg: 0x0c08 prev dba:  0x00000000 rci: 0 opc: 11.1 [objn: 76069 objd: 76069 tsn: 5]
[Undo type  ] Regular undo  [User undo done   ]  No  [Last buffer split]  No
[Temp object]           No  [Tablespace Undo  ]  No  [User only        ]  No
Begin transprev ctl uba: 0x0240030e.035a.04 prev ctl max cmt scn:  0x000000000157ea1dprev tx cmt scn:  0x000000000157ea25txn start scn:  0xffffffffffffffff  logon user: 113prev brb:  0x0240030c  prev bcl:  0x00000000
BuExt idx: 0 flg2: 0
...

flag为4表示checksum present。2则表示block cleaned。

SQL> show parameter db_block_checksum;NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_block_checksum                    string      TYPICAL

chkval为block checksum。DB_BLOCK_CHECKSUM帮助见这里。

DB_BLOCK_CHECKSUM determines whether DBWn and the direct loader will calculate a checksum (a number calculated from all the bytes stored in the block) and store it in the cache header of every data block when writing it to disk.
Checksums allow Oracle to detect corruption caused by underlying disks, storage systems, or I/O systems.
Turning on this feature in TYPICAL mode causes only an additional 1% to 2% overhead. In the FULL mode it causes 4% to 5% overhead. Oracle recommends that you set DB_BLOCK_CHECKSUM to TYPICAL.
Checksums are verified when a block is read - only if this parameter is TYPICAL or FULL and the last write of the block stored a checksum.

最后一个字段为tail,4个字节,0xf4930602

全表扫描(Full Scan)包括以下步骤:

  1. read segment header
  2. read extent map blocks (Extent Map部分)
  3. read data

来看一下data block部分:

Block header dump:  0x0303ddb4Object id on Block? Yseg/obj: 0x12925  csc:  0x000000000157f493  itc: 2  flg: E  typ: 1 - DATAbrn: 0  bdba: 0x303ddb0 ver: 0x01 opc: 0inc: 0  exflg: 0Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x0008.00a.000087b2  0x0240030e.035a.06  --U-    1  fsc 0x0000.0157f499
0x02   0x0000.000.00000000  0x00000000.0000.00  ----    0  fsc 0x0000.00000000
bdba: 0x0303ddb4
data_block_dump,data header at 0x7f56c9b4c064
===============
tsiz: 0x1f98
hsiz: 0x14
pbl: 0x7f56c9b4c06476543210
flag=--------
ntab=1
nrow=1
frre=-1
fsbo=0x14
fseo=0x1f88
avsp=0x1f74
tosp=0x1f74
0xe:pti[0]      nrow=1  offs=0
0x12:pri[0]     offs=0x1f88
block_row_dump:
tab 0, row 0, @0x1f88
tl: 16 fb: --H-FL-- lb: 0x1  cc: 3
col  0: [ 2]  c1 0b
col  1: [ 2]  c1 0b
col  2: [ 6]  43 6f 6e 6e 6f 72
end_of_block_dump

其中字段的说明如下:

  • tsiz:total size,0x1f98即8088。block size为8192。
  • hsize:header size,0x14即20
  • bdba:block database address
  • ntab:表示此数据块只为一个表所用。多个表所用的情形为cluster table。
  • nrow:此数据块只包含1行。
  • frre:free row pointer
  • fseo:free space begin
  • avsp:available free space
  • tosp:total free space。如果删除了块中的一些行,tosp会增加,但avsp仍然只是上部的空间。
  • 0xe:pti[0]:有多少行,row directory的位置
  • 0x12:pri[0]:第一行所在的位置,可以看出,第1行反而在底部。
  • tl:total row length,为16。
  • cc:column count,为3

col 0, col 1, col 2部分就是实际的数据了,也可以用以下的SQL验证:

SQL> SELECT x, vsize(x), dump(x) FROM T;X    VSIZE(X)                DUMP(X)
_____ ___________ ______________________10           2 Typ=2 Len=2: 193,11

问题是此行为16字节,而这几个字段加起来合计10字节,其它部分应该是用来存字段长度,每行的长度和此行的锁信息等。

事务

多个事务修改同一数据块时,未必会引发锁,除非修改同一行的数据。

以下是data block中的一部分:

Block header dump:  0x0303ddb4Object id on Block? Yseg/obj: 0x12925  csc:  0x000000000157f493  itc: 2  flg: E  typ: 1 - DATAbrn: 0  bdba: 0x303ddb0 ver: 0x01 opc: 0inc: 0  exflg: 0Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x0008.00a.000087b2  0x0240030e.035a.06  --U-    1  fsc 0x0000.0157f499
0x02   0x0000.000.00000000  0x00000000.0000.00  ----    0  fsc 0x0000.00000000

seg/obj为对象ID,0x12925即76069;csc表示commit/cleanout SCN;itc表示interested transaction (slot) count;flg即flag,O表示not full,E表示empty;typ表示是哪一类的数据,如data,index。

之后的两行显示Interested transaction list(slot),和itc一致。其中Xid表示Transaction ID,由undo#,slot#和seq# 三部分组成。Uba表示undo block address,由rdba,row#和sequence#组成。Lck表示锁定了多少行;Scn/Fsc表示SCN或free space credit;Flag表示事务的状态,U表示commited,unclean。

对于每一行,都有一个lock表示,长度为1字节,因此可以有255个取值,表示255个itl。也就是说,一个block上最多可以同时有255个事务。
实际上,在create table语句中,可以指定initrans和maxtrans。参考这里。

参考

  • https://connormcdonald.podbean.com/

Oracle数据库块之旅相关推荐

  1. Oracle数据库块的物理损坏与逻辑损坏

    一.物理块损坏: 各种各样的块损坏通常是通过ORA-1578报告出来的,详细的信息被记录在alert日志中.物理损坏的例子包括: >坏头 >块破坏/不完整 (Fractured Block ...

  2. oracle修改数据高性能,oracle数据库的性能调整

    oracle是一个高性能数据库软件.用户可以通过参数的调整,达到性能的优化.性能优化主要分为两部分:一是数据库管理员通过对系统参数的调整达到优化的目的,二是开发人员通过对应用程序的优化达到调整的目的. ...

  3. Oracle数据库的性能调整

    oracle是一个高性能数据库软件.用户可以通过参数的调整,达到性能的优化.性能优化主要分为两部分:一是数据库管理员通过对系统参数的调整达到优化的目的,二是开发人员通过对应用程序的优化达到调整的目的. ...

  4. Oracle数据库文件坏块损坏的恢复方法

    故障描述 打开oracle数据库报错 "system01.dbf需要更多的恢复来保持一致性,数据库无法打开".经检测数据库文件发现sysaux01.dbf有坏块,sysaux01. ...

  5. oracle protocol=beq 不可用,学习笔记:Oracle数据库坏块 深入研究obj$坏块导致exp/expdp不能执行原因...

    天萃荷净 深入研究Oracle坏块obj$导致exp/expdp不能执行导出的原因 上篇(案例:Oracle出现obj$坏块exp/expdp导出不能导出的解决办法ORA-01578 ORA-0111 ...

  6. oracle rman恢复表空间,Oracle数据库RMAN恢复之表空间和数据块介质的恢复

    示例一:表空间的数据文件被误删除 open状态下删除表空间对应的所有数据文件. 在open状态下使用alter tablespace ... offline for recover 脱机表空间. 使用 ...

  7. oracle .dbf文件过大_学习这篇Oracle数据库文件坏块损坏的恢复方法,拓展你的知识面...

    一.Oracle数据库系统简介: ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结 ...

  8. oracle强制拉库跳过recovery,学习笔记:Oracle坏块 数据库recover恢复时遇到坏块的解决思路案例...

    天萃荷净 recover遇到坏块处理本质探讨,记录一次在Oracle数据库recover恢复过程中,遇到数据库坏块无法恢复的解决思路案例 如果在还原出来的数据文件中有坏块,而归档日志和联机日志是正常的 ...

  9. oracle坏块 戴明明,Oracle数据库问题解决方案和故障排除手册

    第1 章 LOB 段性能的诊断与调优 1 1.1 LOB 数据类型的介绍 1 1.1.1 解决LOB 问题:一个真实的案例 2 1.1.2 另一个真实案例:HW 分析 4 1.1.3 BASICFIL ...

最新文章

  1. ISE中ChipScope软件使用
  2. ssl单向tomcat配置webservice访问方法
  3. 计算机操作系统_计算机理论(操作系统概念及常见操作系统类型)
  4. win7 下jenkins配置与使用
  5. java jxl之Excel的创建
  6. 体验最火的敏捷——SCRUM(厦门,2014.1.4)
  7. 《火球——UML大战需求分析》(第1章 大话UML)——1.5 小结和练习
  8. C# 操作Sqlite
  9. 使用tr1的bind函数模板
  10. [码海拾贝 之Perl]在字符串数组中查找特定的字符串是否存在
  11. 2018.8.25CCPC网络赛Find Integer题解(费马大定理+勾股数的求解)
  12. 华为智能体发布,智能联接火了
  13. PRML Chapter01 练习题Exercise
  14. 算法导论第三版 第3章习题答案
  15. 超简单的自定义个性化网页鼠标光标样式 html+css+js
  16. python刷网易云_如何用Python爬取网易云歌曲?秘诀在这~
  17. 云服务器超级鸟,超级鸟的自述_A3_新浪游戏_新浪网
  18. Python在Linux环境下Word转PDF
  19. Oracle11g64位安装教程
  20. 交换机接口及连接技巧

热门文章

  1. mysql导入数据出现--unknown command '\'
  2. Qt TCP/IP(多客户端连接服务器)多个客户端同时登陆的聊天室示例
  3. torch.jit.trace与torch.jit.script的区别
  4. java 向下转型运行时错误_8.5.2 向下转型与运行类型异常
  5. js实现拼音模糊搜索
  6. XELA ROBOTICS 发布Uskin 皮肤触觉传感器
  7. ssh: Bad configuration option: usedns
  8. 单片机要直接烧录程序,要如何做?
  9. WPS公式和字体对不齐
  10. PPT格式转换PDF在手机上如何操作