数据库页面结构——Oracle篇(三)

简介:

前面已经介绍了Oracle页面结构,今天就带领大家看看,前面说的页面结构在Oracle 12C中是不是这样子的。

要了解Oracle页面结构,必须能够查看对应的物理磁盘上保存的内容,就需要知道修改所对应的物理页面的位置。数据库中有一个叫ROWID的家伙,就是为了给用户说明数据在物理磁盘上保存的位置,但Oracle的ROWID有点复杂,所以先介绍一下ROWID的结构:

Oracle的ROWID由四部分组成,一共18个字符,整体是一个64进制的数字,每个字符都是Base-64的字符,显示给用户的字符(A-z,0-9,+,/)共计64个。第一部分是对象编号,共占用6位;第二部分是文件编号,共占用3位;第三部分是文件上页面的编号,共占用6位;第四部分是数据在页面上的编号,共占用3位。

了解了ROWID结构,我们就可以自己建表,并根据ROWID来定位我们的数据在磁盘上的位置,进而分析数据中保持的内容。下面先建一张表,并插入两条记录:

然后就可以查看插入的记录的ROWID,从而确定插入数据在物理磁盘上的位置:

我通过ROWID能查到对象编号,文件编号,页面编号以及项号。但还不知道数据在那个文件,这就需要通过文件编号找到文件路径,可以执行下面SQL语句:

SQL> SELECT d.file_id, d.file_name  FROM dba_data_files d;

FILE_ID FILE_NAME

---------- ----------------------------------------

1 D:\APP\ORACLE\ORADATA\ORCL\SYSTEM01.DBF

3 D:\APP\ORACLE\ORADATA\ORCL\SYSAUX01.DBF

5 D:\APP\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF

6 D:\APP\ORACLE\ORADATA\ORCL\USERS01.DBF

SQL>

这样就可以看到我们找到的文件编号是1的文件路径为:

D:\APP\ORACLE\ORADATA\ORCL\SYSTEM01.DBF

为了让我们看到的磁盘数据和刚才的修改一致,再做一个检查点,让数据库将数据写出到磁盘中:

SQL> ALTER SYSTEM checkpoint;

系统已更改。

SQL>

现在知道文件路径了,文件中的偏移的页面数也知道了,还需要确定一下页面大小:

SQL> show parameter db_block_size

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_block_size                        integer     8192

SQL>

在我的环境上,页面大小是8KB,根据这些信息可以定位到我的数据的具体位置在文件:D:\APP\ORACLE\ORADATA\ORCL\SYSTEM01.DBF的偏移0x30E42000的页面的第1和2个项目录,然后我们看看这个页面上到底保存的什么信息。中间都是空闲空间,所以我将中间的数据没有贴出来,只截取页面头和页尾的数据部分,页头我选中的部分是项目录的个数,我插入了两条记录,所以这里是0x0002,其后紧跟着是项目录数组;页尾我选中的部分是第一条数据,可以看到末尾还多了四个字节,这四个字节是用于页面校验的:

在上图中可以看到我插入的两条记录,第一条占用了12个字节,第二条占用了10个字节,这些数据的组织结构以后再细说。

再返回去看页头部分,可以看到里边有两个项的偏移,分别是0x1F94和0x1F8A。通过这两个偏移怎么计算数据的位置呢?这作为这一次的一个小问题留给大家。


本文来自云栖社区合作伙伴“DBGEEK”

目录
相关文章
|
20天前
|
存储 Oracle 关系型数据库
Oracle数据库的应用场景有哪些?
【10月更文挑战第15天】Oracle数据库的应用场景有哪些?
138 64
|
10天前
|
SQL Oracle 关系型数据库
Oracle数据库优化方法
【10月更文挑战第25天】Oracle数据库优化方法
21 7
|
10天前
|
Oracle 关系型数据库 数据库
oracle数据库技巧
【10月更文挑战第25天】oracle数据库技巧
15 6
|
10天前
|
存储 Oracle 关系型数据库
Oracle数据库优化策略
【10月更文挑战第25天】Oracle数据库优化策略
14 5
|
17天前
|
存储 Oracle 关系型数据库
数据库数据恢复—Oracle ASM磁盘组故障数据恢复案例
Oracle数据库数据恢复环境&故障: Oracle ASM磁盘组由4块磁盘组成。Oracle ASM磁盘组掉线 ,ASM实例不能mount。 Oracle数据库故障分析&恢复方案: 数据库数据恢复工程师对组成ASM磁盘组的磁盘进行分析。对ASM元数据进行分析发现ASM存储元数据损坏,导致磁盘组无法挂载。
|
19天前
|
监控 Oracle 关系型数据库
Oracle数据库性能优化
【10月更文挑战第16天】Oracle数据库性能优化是
19 1
|
26天前
|
存储 Oracle 关系型数据库
【数据库-Oracle】《Oracle 数据库探秘:基础知识点全攻略》
《Oracle 数据库探秘:基础知识点全攻略》深入介绍 Oracle 数据库的基础知识点,包括数据类型、表结构、查询语句等。通过详细讲解、代码示例和流程图,帮助读者快速掌握 Oracle 数据库的基本操作,为数据库开发和管理打下坚实基础。
30 0
|
3月前
|
监控 Oracle 关系型数据库
"深度剖析:Oracle SGA大小调整策略——从组件解析到动态优化,打造高效数据库性能"
【8月更文挑战第9天】在Oracle数据库性能优化中,系统全局区(SGA)的大小调整至关重要。SGA作为一组共享内存区域,直接影响数据库处理能力和响应速度。本文通过问答形式介绍SGA调整策略:包括SGA的组成(如数据缓冲区、共享池等),如何根据负载与物理内存确定初始大小,手动调整SGA的方法(如使用`ALTER SYSTEM`命令),以及利用自动内存管理(AMM)特性实现智能调整。调整过程中需注意监控与测试,确保稳定性和性能。
269 2
|
4月前
|
存储 缓存 Oracle
Oracle数据库可扩展性和性能
【7月更文挑战第6天】
80 7
|
存储 SQL 负载均衡
达梦数据库与Oracle数据库:功能、性能和适用场景对比
数据库在现代信息技术领域中扮演着至关重要的角色。在企业级应用中,选择正确的数据库管理系统对于数据存储、处理和查询效率至关重要。本文将对比两个备受关注的数据库管理系统——达梦数据库和Oracle数据库,从功能、性能和适用场景等方面进行深入探讨,以帮助读者在选择合适数据库时做出明智的决策。
2793 1

推荐镜像

更多