Oracle Data Block物理结构

oracle数据块(block)结构详解 NULL 博文链接:https://hbyuan.iteye.com/blog/850709 立即下载

转自:http://blog.chinaunix.net/u/19782/showart_412187.html

 

近来在Itpub上看到AnySQL的Mydul的第一版本的源码, http://www.itpub.net/858109.html 学习中。其实好多地方不是很明白, java也不是很熟悉, 格式不是很了解, 很多Oracle的功能也不熟悉。慢慢学习中。。。

与这个相关的东西还有 ITpub grassbell 斑主在 2004-07-27 一篇Oracle Data Block物理结构的文章http://epub.itpub.net/9/9.htm, 好早啊, 那时我还在学校,什么Oracle几乎没什么接触。 不想那么多了, 就想弄明白,哪怕已经很过时了。

我使用英文的google查询了一下找到这个篇文章
http://www.orafaq.com/papers/dissassembling_the_data_block.pdf

这个应该比较全面的了:
下面的内容主要来源 orafaq 的Oracle Data block格式的小节, 不是很具体:

Oracle Data Block Format

=================
struct kcbh, 20 bytes               Block Header Structure
    ub1 type_kcbh                   Block Type
                                    Different block types are designated by
                                    the first byte of the block.
                                    
                                    01  Undo segment header
                                    02  Undo data block
                                    03  Save undo header
                                    04  Save undo data block
                                    05  Data segment header(temp, index, 
                                        data and so on)
                                    06  KTB managed data block(with ITL)
                                    07  Temp table data block(no ITL)
                                    08  Sort Key
                                    09  Sort Run
                                    10  Segment free list block
                                    11  Data file header
                                    
    ub1 frmt_kcbh                   Block format 
                                    1   Oracle 7
                                    2   Oracle 8+
                                    
    ub1 spare1_kcbh                 Not used
    ub1 spare2_kcbh                 Not used
    ub4 rbda_kcbh                   RDBA - Relative Data Block Address
    ub4 bas_kcbh                    SCN Base
    ub2 wrp_kcbh                    SCN Wrap
    ub1 seq_kcbh                    Sequence number, incremented for every
                                      change made to the block at the same SCN

    ub1 flg_kcbh                    Flag:
                                    0x01    New Block
                                    0x02    Delayed Logging Change 
                                            advanced SCN/seq
                                    0x04    Check value saved - block 
                                            XOR's to zero
                                    0x08    Temporary block

    ub2 chkval_kcbh                 Optional block checksum (if
                                      DB_BLOCK_CHECKSUM = TRUE)

    ub2 spare3_kcbh                 Not used

------------------
struct ktbbh, 72 bytes              Transaction Fixed Header Structure
    ub1 ktbbhtyp                    Block type 
                                    1   Data 
                                    2   Index
    union ktbbhsid, 4 bytes         Segment / Object ID
    struct ktbbhcsc, 8 bytes        SCN at last block cleanout
    b2 ktbbhict                     Number of ITL slots
    ub1 ktbbhflg                    0 = on the freelist
    ub1 ktbbhfs1                    ITL TX freelist slot
    ub4 ktbbhfnx                    DBA of next block on the freelist
    struct ktbbhitl[2], 48 bytes    ITL list index

-------------------
struct kdbh, 14 bytes               Data Header Structure
    ub1 kdbhflag                    N = pctfree hit(clusters); 
                                    F = do not put on freelist;
                                    K = flushable cluster keys
    b1 kdbhntab                     Number of tables (> 1 in clusters)
    b2 kdbhnrow                     Number of rows
    sb2 kdbhfrre                    First free row entry index; 
                                    -1 = you have to add one
    sb2 kdbhfsbo                    Freespace begin offset
    sb2 kdbhfseo                    Freespace end offset
    b2 kdbhavsp                     Available space in the block
    b2 kdbhtosp                     Total available space when all TXs commit

--------------------
struct kdbt[1], 4 bytes             Table Directory Entry Structure
    b2 kdbtoffs
    b2 kdbtnrow

--------------------
sb2 kdbr[1]                         Row Directory
ub1 freespace[8030]                 Free Space
ub1 rowdata[38]                     Row Data
ub4 tailchk                         
    
Tailchecks:
The tail of an Oracle 8+ block is a concatenation of the lower order two bytes of the SCN base, the block type and the SCN sequence number.
E.g. if the SCN base number is 0x00029728, the block type is 06 and the SCN sequence number is 0x02, the tail check would be 0x97280602:

SCN base        Type    SCN seq
9728            06      02

Although this tail check value is generated from three components. Oracle treats the final value as a single unsigned integer stored as a word(4 bytes). On little-endian architecture machines, which include Intel, the value will be stores as low-order byte first. 

基于STM32设计的掌上游戏机(运行NES游戏模拟器)详细开发过程 利用STM32单片机移植NES游戏模拟器,完成NES游戏开发,可以玩标准的NES游戏,已测试超级玛丽、魂斗罗之类的都可以正常运行。 阅读详情

相关推荐

JDK8升级JDK17过程中遇到的那些坑

JDK8虽然非常好,但是JDK版本已经发布到JDK20了,且JDK8后的版本升级了很多新的特性,如模块化、ZGC以及虚拟线程、结构性并发等,也是非常有吸引力的,所以决定将基于JDK8的项目升级到最近的LTS版本JDK17。

BASK2312的博客 6685

ORACLE 和 PG 的事务区别

结论PG的是事务和ORACLE的事务是不一样的在ORACLE事务中,有失败是可以继续执行的,且事务提交后,只有失败的不可见(成功的可见)在PG事务中,有失败,立即中止,且前面成功的,也会回滚报错:current transaction is aborted, commands ignored until end of tr...

weixin_37054283的博客 200

半监督的医学分割数据集(LA, Pancreas, ACDC和PROMISE12)分享

这篇文章提供了四个常用的半监督医学分割数据集,所有数据集都已经被处理成了.h5文件。下载之后就可以直接使用

qq_45691955的博客 4179

Oracle 表空间、段、区、块概述

文章目录图示表空间 tablespace数据段 segment区 extent数据块 block 图示 段 存在于 表空间 中 段 是 区 的集合 区 是 数据块 的集合 数据块 会映射到 磁盘块 以实体-关系图的形式绘制 Oracle 存储模型,逻辑结构在左,物理结构在右。 有一个关系使用虚线绘制,表示段和数据文件的多对多关系。之所以使用虚线表示关系,是因为这种关系不应该存在。出色的关系工程师不应该允许多对多关系的存在。 表空间 tablespace 表空间 tablespace 是 存储结

鱼丸丶粗面 979

不用买显示器!用USBMMID虚拟显示器软件在Win10上扩展4个屏幕(保姆级教程)

本文提供了一份详细的保姆级教程,指导用户如何在Windows 10系统上,无需购买额外硬件,通过USBMMID虚拟显示器软件扩展出多达4个虚拟屏幕。文章深入解析了虚拟显示器的核心原理,并基于微软IDD框架,手把手教学从软件获取、环境检查到安装配置的全过程,帮助开发者和多任务用户构建高效、免费的虚拟多屏工作站,实现生产力的飞跃。

backprop5master的博客 660

别再手动画柜子了!用EPLAN导入STEP模型,5分钟搞定一个标准机柜

本文详细介绍了如何利用EPLAN Pro Panel的3D布局功能,快速将STEP模型转化为智能机柜宏,大幅提升电气工程设计效率。通过实战步骤解析,包括模型导入、智能解析、安装面定义及拼柜技巧,帮助工程师5分钟内完成标准机柜设计,避免传统手动建模的尺寸偏差问题。

weixin_26875109的博客 436

Oracle数据库存储结构

Oracle数据库中的块(Block)、区(Extent)、段(Segment)、表空间(Tablespace)和数据文件(Data File)是数据库存储结构的关键组件。它们共同构成了数据库中数据的存储和管理框架。在本文中,我将详细解释每个组件的概念、作用以及它们之间的关系。

专注于数据库技术分享,包含但不限于Oracle,MySQL,PostgreSQL,ElasticSearch及国产数据库等 1220

线性代数-第24篇:线性代数在控制系统中的核心应用

线性代数通过状态空间建模、矩阵分解与优化算法,为控制系统提供了从理论分析到工程实现的完整框架。从传统PID控制到现代智能控制,其应用贯穿系统设计、分析与优化的全流程。未来,随着多智能体协同控制、量子控制系统等前沿领域的发展,线性代数将在高维矩阵计算、分布式优化等方向持续创新,为复杂控制系统的突破提供核心支撑。如果对线性代数在控制系统中的应用细节有疑问,欢迎在评论区留言!

无 424

Oracle 数据块(Block)的内部结构与ITL槽管理

Oracle 数据块(Block)的内部结构与ITL槽管理

chenoracle的博客 1144

GStreamer中h264parse元素

h264parse是 GStreamer 中处理 H.264 视频流的关键元素,主要负责解析和准备 H.264 流以便后续处理。

深之JohnChen的专栏 1027

YOLO126优化:损失篇 | AAAI 2025 | 一种基于尺度的动态(SD)损失,根据目标大小动态调整尺度和位置损失的影响,提高了网络检测不同尺度目标的能力

提出了一种基于尺度的动态(SD)损失,它根据目标大小动态调整尺度和位置损失的影响,提高了网络检测不同尺度目标的能力。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 447

【基础篇存储结构】oracle存储结构(一)

Oracle的存储结构 数据块data block 也叫logical block,是oracle存储数据的最小粒度,一个数据块对应磁盘上数个字节的物理数据库空间。 下图是一个block的结构: 一个bl...

701

在MATLAB和Simulink中设计并仿真一个电动汽车BMS热管理系统

电动汽车电池管理系统(Battery Management System, BMS)中的热管理是确保电池安全运行、延长寿命和提高性能的关键环节。通过Simulink进行BMS热管理仿真是验证控制策略的有效性、优化散热设计并降低开发成本的重要手段。以下是如何在MATLAB和Simulink中设计并仿真一个电动汽车BMS热管理系统的详细步骤。通过上述步骤,我们成功设计并实现了基于Simulink的电动汽车BMS热管理系统仿真。

xiaoheshang_123的博客 703

Oracle Data block 的物理结构

http://epub.itpub.net/9/9.htmOracle Data block 的物理结构1. Data Block 物理结构图:2. 一次对block的dump过程:SQL> create table t9...

congnen9588的博客 142

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Oracle Block浅析1:Data block 的物理结构

一.Data Block 物理结构图: 二.一次对block的dump过程 2.1.获取t表行所在的rowid,File id,Block number,Slot number in block 1 SQL> select 2 2 rowid, 3 3 dbms_rowid.rowid_relative_fno(rowid) REL_FNO,...

weixin_34146986的博客 184

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Oracle Data block 的物理结构-体系架构

Oracle Data block 的物理结构-体系架构http://www.bitscn.com/pdb/oracle/200904/160425.htmlOracle数据块原理深入剖析-入门基础http://www.bits...

cmr63224的博客 73

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Oracle Data Block 详细结构解析

Cache Layer 中的 `bas_kcbh`(低 2 字节)、`type_kcbh`、`seq_kcbh` 与 Tail 中的对应值必须一致。[pdf_1][pdf_2]块尾(Block Tail/Footer)是数据块的最后 **4 个字节**,用于一致性校验,检测块是否断裂(fractured)。[pdf_1][pdf_2]| 0x10 | 2 | chkval_kcbh | `chkval` | 可选校验和(`DB_BLOCK_CHECKSUM=TRUE` 时有效) |

Lixora's DB Home 307

oracle 存储 块(1)

Free used and unused blocks1.Free blocksFree blocks are blocks below the high water mark(HWM) whose filling is below the pctused attribute. If an insert statement is executed, Oracle tries to in

770

Data block 的物理结构介绍以及一些参数的学习

1、Data Block 物理结构图: 2、一次对block的dump过程:SQL> create table t9 (a varchar(10));Table created.SQL>  insert into t9 values(a);1 row created.SQL> commit;Commit complete.SQL> set serverout

daimin's BLOG 1202

zblock 结构_偷窥Data block 的物理结构

作者:grassbell1.Data Block物理结构图:2.一次对block的dump过程:SQL> create table t9 (a varchar(10));Table created.SQL> insert into t9 values(‘a‘);1 row created.SQL> commit;Commit complete.SQL> set server...

weixin_26786277的博客 586

偷窥Data block 的物理结构

1. Data Block 物理结构图: 2. 一次对block的dump过程:   SQL> create table t9 (a varchar(10)); Table created.   SQL> insert into t9 values('a'); 1 row created.   SQL> commit; Commit complete.   SQL> s

关注系统性能调优 1873

Oracle的data block内容研读(转)

Oracle的data block内容研读(转) 上一篇 / 下一篇  2011-03-03 21:07:54 查看( 194 ) / 评论( 2 ) / 评分( 3 / 0 ) DataBlock是Oracle中存储数据块的最小存储单元,由多个os数据块组成。主要由三个逻辑层组成(通过c语言描绘的结构,如下图一所示):the cache layer,the t

haiross的专栏 3891

[每日一题] 11gOCP 1z0-052 :2013-08-31 数据库的存储结构....................................................A8...

转载请注明出处:http://blog.youkuaiyun.com/guoyjoe/article/details/10784599 、   正确答案:A 将逻辑存储与物理存储分开是关系数据库范例的必要部分。关系数据库范例表明:编程人员只处理逻辑结构,而让数据库去管理到物理结构的映射。这意味着,可以重新组织物理存储,也可以将整个数据库移动到完全不同的硬件和操作系统上,而应用程序意识不到任何更...

weixin_34405354的博客 88

Oracle Data Files

Oracle表空间和数据文件 ORACLE数据库被划分成的若干逻辑区域称作为表空间,这些逻辑区域用于把相关的数据文件分组管理,总之,表空间:是一个或多个数据文件的逻辑集合。 每一个数据库包含一个或者多个表空间;一个表空间里又有一个或者多个物理的数据文件;一个数据文件只能属于一个表空间; 表空间是ORACLE数据库恢复的最小单位。 表空间和数据文件在数据库中的位置

田攀的日志 3564
上一篇: 偷窥Data block 的物理结构
下一篇: oracle数字类型的存储格式
opendba
博客等级 码龄16年 43粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值