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 内部结构详解 1. **头部信息**: - **Block Type**:标识数据块的类型。 - **High Water Mark (HWM)**:指示数据块中最后一次分配的空间位置。 - **Free List/Chain**:指向块内未被使用的...
数据块内部又分为不同的区域,包括数据头(Block Header)、数据区(Data Area)以及自由空间(Free Space)等。数据头包含了数据块的类型、格式等控制信息,数据区是实际存储数据的地方,而自由空间则是用于记录...
通过clang编译命令,我们可以看到Block的内部结构。Block内部封装了函数,因此它同样也有参数和返回值。 二、Block变量截获 Block变量截获分为三种:局部变量截获、局部静态变量截获和全局变量截获。 1. 局部变量...
即使在Block执行时`number`的值发生了改变,Block内部仍能访问到最新的值。 Block还可以与对象方法结合使用,例如在UIKit框架中的手势识别器(UIGestureRecognizer)。我们可以为手势添加Block回调,当手势触发时执行...
然而,如果Block内部修改了捕获的变量,可能会引发强引用循环,因此需要谨慎处理Block与对象之间的引用关系。 ### 4. Block作为参数和返回值 Block可以作为函数的参数和返回值,这在处理异步操作或者回调时非常...
如果Block内部需要修改这些变量,必须声明为`__block`类型,否则它们将是只读的。例如: ```objc __block int counter = 0; [self performSelectorInBackground:^{ counter++; NSLog(@"Counter: %d", counter); }...
在深入理解其内部机制的过程中,了解如何查看和分析数据块(data block)显得尤为重要。本文将围绕 Oracle 的内部工具 BBED (Block Browse and Edit) 来展开讨论,旨在帮助读者更好地理解数据块的结构及其在数据库中...
RV1103的block diagram显示了处理器的内部架构,包括处理器核心、内存管理单元、外设接口等模块。 Package Information RV1103的封装信息包括: * 订单信息 * 顶部标记 * 封装尺寸 * 引脚编号列表 Warranty ...
如果Block内部持有强引用的对象,可能导致循环引用,这时可以使用`__weak`修饰符弱化引用,或者使用`__block`修饰符让Block内可以修改该变量的引用计数。 ### 5. Block的返回值与参数 Block不仅可以没有返回值,也...
Block可以通过`^`符号来定义,它可以捕获其所在作用域内的局部变量,并在Block内部使用。Block有三种类型: - `__block id(^myBlock)(void)`:无参数,返回id类型的Block。 - `__block id(^)(int)`:有一个int...
这个工具对于数据库管理员(DBA)来说是极其宝贵的,因为它提供了对数据库内部结构的深入洞察,并允许进行低级别的数据修复和分析。 **一、Oracle数据块的拆解** Oracle数据块是数据库存储的基本单位,包含了表...
Xilinx FPGA内部结构深入分析 Xilinx FPGA 内部结构是 FPGA 设计的核心组件之一,对于 FPGA 的性能和面积优化具有重要影响。本文将深入分析 Xilinx FPGA 的内部结构,包括 IOB 结构、可编程输入延迟、存储单元、DDR...
文件系统的结构包括Super Block、Group Descriptor、Journal Block、Inode Bitmap、Data Block Bitmap、Inode Table和Data Blocks等组件。例如,Super Block用于记录文件系统的基本信息,Inode Bitmap和Data Block ...
文档中可能包含了一个块图,用以展示GC4663传感器的内部结构和主要组成部分。 5. 芯片信息: 5.1 引脚图(Pin Diagram): - 传感器采用CSP(Chip Scale Package)封装,引脚数为41针。 - 详细描述了引脚的坐标和...
`ACE_Message_Block`包含三个主要部分:数据区域(data)、控制信息(control info)和链接指针(next pointer)。数据区域存储实际的数据,控制信息包括数据长度、类型、优先级等元数据,链接指针用于将多个`ACE_...
根据提供的文档信息,我们可以深入探讨88E1111这款芯片的相关知识点,包括其功能、内部结构以及应用原理。 ### 一、88E1111概述 88E1111是一款由Marvell公司生产的高性能物理层(PHY)收发器芯片,用于实现普通GMII...
2. AM1808/AM1810系统概述:文档提到了AM1808/AM1810的系统框图(Block Diagram),这可能包括了产品内部结构的高级视图,如ARM子系统(ARM Subsystem)、直接内存访问子系统(DMASubsystem)等关键组件。...
在每个DATABLOCK内部,至少有一个编程段(SEGMENT),它可以是直接指定的地址,也可以根据FLASHDATA中的地址信息动态计算。 总的来说,ODX-F数据库为ECU的软件刷新提供了标准化的框架,确保了不同制造商的ECU都能...
MT7975DN的主要构建块(MT7975DN TOP Building Blocks)部分可能详细描述了芯片内部结构的核心组件,如Wi-Fi模块,以及它如何实现2x2双频并发传输,蓝牙v5.1 RF的功能。 XO和引导程序(XO and Bootstrap)和XTAL...