`

data block内部结构

 
阅读更多

block是oracle数据库中最基本的存储结构。(extents)盘区,(segment)段,(data file)数据文件都是由block构成的。一个oracle数据库中的block的大小在建立的数据库的时候就已经决定,在整个数据库的生命过程中不能修改;要修改block的大小只能重建数据库。 

查询数据库中block的大小: 

SQL> select value from v$parameter where name ='db_block_size'; 

VALUE 
--------------------------------------------------------------------- 
8192 

或者 SQL>show parameters db_block_size; NAME TYPE VALUE 
------------------------------------ ----------- ------- 
db_block_size integer 8192 
数据库中block的大小从2k to 32k,而且必须是2k的指数倍,即2k,4k,8k,16k,32k。这里是8192(即8k)。block的所能达到的最大值由操作系统决定。(注:在9i中可以为用户的表空间分配不同的block的大小)。 
Oracle数据库宏观上表现出来的特征都是由其内部结构,即block的结构决定的。Block的结构原比我们想象的复杂的多。Block主要有data block,index block,undo block,这三者有着不同的复杂结构。其中data block和index block离我们最近,下面先看看data block的结构。 

创建实验表: 

SQL>create table block_test 2 (id varchar2(4) primary key, 
3 name varchar2(20) 
4 ) tablespace users; 

表已创建。 
SQL> insert into block_test values ('0001','TOM'); SQL> insert into block_test values ('0002','xiyuan'); SQL> commit;  SQL>select dbms_rowid.rowid_relative_fno('AAAGF2AAIAAAAnbAAA') file_num, 

2 dbms_rowid.rowid_block_number('AAAGF2AAIAAAAnbAAA') block_num  3 from dual; 
file_num block_num 
---------------------- ------------------------------ 
8 2523 

由此得知这条记录存储在数据中的标号为8的数据文件的第2523个块中。 下面来看这条记录在数据库中存储的情况。 

SQL> select * from block_test; 

ID NAME 
---- -------------------- 
0002 xiyuan 
0001 TOM 查看方法如下: SQL>select id, dump(id) from block_test;  ID DUMP(ID) 
---- ------------------------------ 
0001 Typ=1 Len=4: 48,48,48,49 
0002 Typ=1 Len=4: 48,48,48,50  可见:第一列的数据类型1,为长度为4,数据为48,48,48,49。也就是说:数据‘0001’在数据库中是以48,48,48,49来存储的,同理数据‘0002’在数据库中是以48,48,48,50来存储的。数据在数据库中是以16进制存储的,而且和数据库所选择的字符集有很大的关系。 同理第二列: SQL>select name, dump(name) from block_test; 

NAME DUMP(NAME) 
-------------------- ---------------------------------------- 
xiyuan Typ=1 Len=6: 120,105,121,117,97,110 
TOM Typ=1 Len=3: 84,79,77 数据类型1,为长度为6,数据为120,105,121,117,97,110。也就是说:数据‘xiyuan’在数据库中是以120,105,121,117,97,110来存储的,同理数据‘TOM’在数据库中是以84,79,77来存储的。 以上信息就是我们刚才查找的那条记录在数据库中真实的存储情况  这是data block中最基本的一些东西,我们比较感兴趣的主要是最后的部分,数据在块中具体的存储情况。 

有兴趣的,可以做一些基本的dml(insert,delete,update)操作,来看数据块中发生了一些什么变化,可以得到一些很有用的信息。

分享到:
评论

相关推荐

    data_block物理结构的认识

    #### 四、Data Block 内部结构详解 1. **头部信息**: - **Block Type**:标识数据块的类型。 - **High Water Mark (HWM)**:指示数据块中最后一次分配的空间位置。 - **Free List/Chain**:指向块内未被使用的...

    Oracle数据块结构分析说明BLOCK结构详解

    数据块内部又分为不同的区域,包括数据头(Block Header)、数据区(Data Area)以及自由空间(Free Space)等。数据头包含了数据块的类型、格式等控制信息,数据区是实际存储数据的地方,而自由空间则是用于记录...

    Block面试题1

    通过clang编译命令,我们可以看到Block的内部结构。Block内部封装了函数,因此它同样也有参数和返回值。 二、Block变量截获 Block变量截获分为三种:局部变量截获、局部静态变量截获和全局变量截获。 1. 局部变量...

    block实现例子(介绍block的代码)

    即使在Block执行时`number`的值发生了改变,Block内部仍能访问到最新的值。 Block还可以与对象方法结合使用,例如在UIKit框架中的手势识别器(UIGestureRecognizer)。我们可以为手势添加Block回调,当手势触发时执行...

    教你学会block

    然而,如果Block内部修改了捕获的变量,可能会引发强引用循环,因此需要谨慎处理Block与对象之间的引用关系。 ### 4. Block作为参数和返回值 Block可以作为函数的参数和返回值,这在处理异步操作或者回调时非常...

    ios-block 回调.zip

    如果Block内部需要修改这些变量,必须声明为`__block`类型,否则它们将是只读的。例如: ```objc __block int counter = 0; [self performSelectorInBackground:^{ counter++; NSLog(@"Counter: %d", counter); }...

    Oracle dissassembling_the_data_block

    在深入理解其内部机制的过程中,了解如何查看和分析数据块(data block)显得尤为重要。本文将围绕 Oracle 的内部工具 BBED (Block Browse and Edit) 来展开讨论,旨在帮助读者更好地理解数据块的结构及其在数据库中...

    RV1103最新datasheet

    RV1103的block diagram显示了处理器的内部架构,包括处理器核心、内存管理单元、外设接口等模块。 Package Information RV1103的封装信息包括: * 订单信息 * 顶部标记 * 封装尺寸 * 引脚编号列表 Warranty ...

    block回调 基础的看看

    如果Block内部持有强引用的对象,可能导致循环引用,这时可以使用`__weak`修饰符弱化引用,或者使用`__block`修饰符让Block内可以修改该变量的引用计数。 ### 5. Block的返回值与参数 Block不仅可以没有返回值,也...

    Block实例------用Block代替delegate来传递值

    Block可以通过`^`符号来定义,它可以捕获其所在作用域内的局部变量,并在Block内部使用。Block有三种类型: - `__block id(^myBlock)(void)`:无参数,返回id类型的Block。 - `__block id(^)(int)`:有一个int...

    dissassembling_the_data_block-converted(1).docx

    这个工具对于数据库管理员(DBA)来说是极其宝贵的,因为它提供了对数据库内部结构的深入洞察,并允许进行低级别的数据修复和分析。 **一、Oracle数据块的拆解** Oracle数据块是数据库存储的基本单位,包含了表...

    Xilinx_FPGA_内部结构深入分析

    Xilinx FPGA内部结构深入分析 Xilinx FPGA 内部结构是 FPGA 设计的核心组件之一,对于 FPGA 的性能和面积优化具有重要影响。本文将深入分析 Xilinx FPGA 的内部结构,包括 IOB 结构、可编程输入延迟、存储单元、DDR...

    Linux文件系统写放大作用的定量分析.pdf

    文件系统的结构包括Super Block、Group Descriptor、Journal Block、Inode Bitmap、Data Block Bitmap、Inode Table和Data Blocks等组件。例如,Super Block用于记录文件系统的基本信息,Inode Bitmap和Data Block ...

    GC4663 DATASHEET

    文档中可能包含了一个块图,用以展示GC4663传感器的内部结构和主要组成部分。 5. 芯片信息: 5.1 引脚图(Pin Diagram): - 传感器采用CSP(Chip Scale Package)封装,引脚数为41针。 - 详细描述了引脚的坐标和...

    ACE-Message-Block.rar_ACE

    `ACE_Message_Block`包含三个主要部分:数据区域(data)、控制信息(control info)和链接指针(next pointer)。数据区域存储实际的数据,控制信息包括数据长度、类型、优先级等元数据,链接指针用于将多个`ACE_...

    88E1111 完整版Datasheet 及应用原理图

    根据提供的文档信息,我们可以深入探讨88E1111这款芯片的相关知识点,包括其功能、内部结构以及应用原理。 ### 一、88E1111概述 88E1111是一款由Marvell公司生产的高性能物理层(PHY)收发器芯片,用于实现普通GMII...

    AM1808 1810 DataSheet

    2. AM1808/AM1810系统概述:文档提到了AM1808/AM1810的系统框图(Block Diagram),这可能包括了产品内部结构的高级视图,如ARM子系统(ARM Subsystem)、直接内存访问子系统(DMASubsystem)等关键组件。...

    车载诊断数据库ODX-Flash(刷写).pdf

    在每个DATABLOCK内部,至少有一个编程段(SEGMENT),它可以是直接指定的地址,也可以根据FLASHDATA中的地址信息动态计算。 总的来说,ODX-F数据库为ECU的软件刷新提供了标准化的框架,确保了不同制造商的ECU都能...

    MT7975DN_Datasheet.pdf

    MT7975DN的主要构建块(MT7975DN TOP Building Blocks)部分可能详细描述了芯片内部结构的核心组件,如Wi-Fi模块,以及它如何实现2x2双频并发传输,蓝牙v5.1 RF的功能。 XO和引导程序(XO and Bootstrap)和XTAL...

Global site tag (gtag.js) - Google Analytics