深入探究:Oracle数据库的物理构成解析 (oracle数据库的物理构成)

Oracle数据库作为目前全球应用最广泛的关系型数据库之一,其稳定性和性能表现备受好评。然而,对于初学者或是新手而言,Oracle的物理构成却是一个较为陌生的概念。本文将探究Oracle数据库的物理构成,给读者提供更全面的了解。

物理存储结构

Oracle数据库的物理构成首先包括整个系统的物理存储结构,该系统主要由数据文件、控制文件和重做日志文件三部分构成。

1. 数据文件

Oracle数据库中的一切信息都被保存在数据文件中。数据文件在创建数据库时被生成,可以设置其大小、位置、增量等相关属性。一个数据文件通常包含多个数据库块,这些数据库块是基本的物理存储单位,其大小可以在创建数据文件时设置。

2. 控制文件

控制文件是一个特别的数据文件,它记录着整个数据库的概要信息,包括当前正在使用的数据文件、重做日志文件等,是Oracle数据库管理中至关重要的部分。

3. 重做日志文件

重做日志文件主要记录了因为崩溃等原因而丢失的数据,也记录了一些事务相关信息,是数据库实现回滚和重做的机制。重做日志文件会在一定时间间隔内自动切换。

物理存储结构的关系

数据文件、控制文件和重做日志文件之间是有一定的关系的。控制文件记录了当前正在使用的数据文件和重做日志文件的状态,数据文件和重做日志文件不可分开,二者相互作用来保证数据在持久化存储时的真实性。

物理数据库对象

物理数据库对象主要指的是数据库中存储数据的方式,它接下来又分为了五个具体的分类:表空间、段、区,以及数据块和 Extent 两个概念。

1. 表空间

表空间是实现数据物理存储的,一个数据库管理系统可以包含多个表空间,一个表空间可以包括多个数据文件,每个表空间可以用于存储多个表、索引等对象。

2. 段

段是一个逻辑存储单位, 每个段由行存储单元组成。每个数据块可以包含多个段,例特定情况下也可能出现一个段跨越多个数据块的情况。

3. 区

区是段的逻辑组合,一个区可以包含多个段。区的大小与表空间的块大小一致,一般而言一个区内的数据块数量为8-1024。

4. 数据块

数据块是Oracle数据库中最小的物理存储单位,它的大小是可变的,但是一般而言为8k。在该数据块中存放了一些具有一定语义的数据,例如表、索引等。

5. Extent

Extent 是一个连续的数据块,它的数量是可变的,并且存储的数据也是相同类型的(例如表,索引等)。由于数据库的数据是不断变化的,因此Extent也可能随着时间的推移而发生拆分、合并的情况。

物理对象之间的关系

物理数据库中的各个对象之间也有着紧密联系。例如,每个表空间可以包含多个段,每个段由数据块组合而成,一个数据块可以放置多条记录,数据库在读取数据的过程中,是按照逻辑顺序依次到各个表空间中的关联对象上读取的。

同样,在数据操作的过程中,也就是针对数据的增删改等操作, Oracle会将这些操作记录在重做日志文件中,当数据库因为崩溃等原因造成数据丢失时,就可以通过重做日志文件来恢复数据的完整性。

Oracle数据库的物理构成是一个比较庞大、也比较复杂的体系结构,然而其中各个组成部分之间紧密相关。在日常使用Oracle数据库时,理解其物理构成是非常有必要的。本文简单介绍了Oracle数据库的物理存储结构和物理对象,以及它们之间的关系,希望能够对读者提供一些参考和帮助。

相关问题拓展阅读:

Oracle中逻辑结构和物理结构,他们之间的关系是什么?

1.1、物理结构:由构成数据库的操作系统文件组成,它是从操作系统的角度来分析数据库的组成,在操作系统中可以看得到的文件,也就是说它是数据库在操作系统中的存储位置。常见的物理结构包括:控制文件、数据文件、重作日志文件、归档日志文件、初始化参数文件、还有其它文件(密码文件、报警日志文件和后台及用户跟踪文件)。

1.2、逻辑结构:描述数据库从逻辑上如何存储数据库中的数据。它是从数据库的角度来分析数据的逻辑卖稿仿存储。常见的逻辑结构包括:表空间、数据段、扩展区间、块构成。需要明白的是:

*1、数据库逻辑上是由一个或多个表空间组成的,常见的表空间包括:系统表空间、系统辅助表空间、UNDO表空间、临时表空间、用户表空间

*2、表空间与数据文件是物理上的一对多的关系,既一个表空间对应一个或多个数据文件,但是一个数据文件只能属中纤于一个表空间

*3、表空间将数据库的物理结构与逻辑结构敬棚相连接

2、物理结构

2.1、控制文件 (Control files):主要记录数据库的物理结构及其他的一些控制信息,如数据库的名称、数据文件、日志文件的名称及位置。通常oracle会保留多个控制文件副本,并分别放在不同的物理位置,一旦其中的某个控制文件损坏,则可以通可其它的副本进行启动。

参数文件init.ora记录了控制文件的位置

控制文件包括如下主要信息

�6�1数据库的名字,检查点信息,数据库创建的时间戳

�6�1所有的数据文件,联机日志文件,归档日志文件信息

�6�1备份信息等

有了这些信息,Oracle就知道那些文件是数据文件,现在的重做日志文件是哪些,这些都是系统启动和运行的基本条件,所以他是Oracle运行的根本。如果没有控制文件系统是不可能启动的。控制文件是非常重要的,一般采用多个镜相复制来保护控制文件,或采用RAID来保护控制文件。控制文件的丢失,将使数据库的恢复变的很复杂。

控制文件信息可以从v$controlfile中查询获得

SQL> select * from v$controlfile;

STATUS NAME

—-

C:\ORACLE\ORADATA\ORCL\CONTROL01.CTL

C:\ORACLE\ORADATA\ORCL\CONTROL02.CTL

C:\ORACLE\ORADATA\ORCL\CONTROL03.CTL2.2、数据文件(Data files),注意可以与后面讲到的表空间进行对比,数据文件的详细信息记载在控制文件中。注意:SYSTEM表空间是不允许脱机的。在进行数据库恢复时,很多时候需要先将故障数据文件脱机。

可以通过如下方式查看数据文件:

SQL> select name,status,enabled from v$datafile;

NAMESTATUS ENABLED

-C:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\SYSTEM01.DBF ONLINE READ WRITE

C:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\UNDOTBS01.DBF ONLINE READ WRITE

C:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\SYSAUX01.DBF ONLINE READ WRITE

C:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\USERS01.DBF ONLINE READ WRITE

C:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\EXAMPLE01.DBF ONLINE READ WRITE

C:\ORACLE\ORADATA\ORCL\TEMP01.DBF ONLINE READ WRITE

2.3、重做日志文件(Redo files)用户对数据库进行的任何操作都会记录在重做日志文件。在了解重做日志之前必须了解重做日志的两个概念,重做日志组和重做日志组成员(Member),一个数据库中至少要有两个日志组文件,一组写完后再写另一组,即轮流写。每个日志组中至少有一个日志成员,一个日志组中的多个日志成员是镜相关系,有利于日志文件的保护,因为日志文件的损坏,特别是当前联机日志的损坏,对数据库的影响是巨大的。

联机日志组的交换过程叫做切换,需要特别注意的是,日志切换在一个优化效果不好的数据库中会引起临时的“挂起”。挂起大致有两种情况:

�6�1在归档情况下,需要归档的日志来不及归档,而联机日志又需要被重新利用

�6�1检查点事件还没有完成(日志切换引起检查点),而联机日志需要被重新利用

解决这种问题的常用手段是:

i.增加日志组

ii.增大日志文件成员大小

通过v$log可以查看日志组,v$logfile可以查看具体的成员文件。SQL> select group#,thread#,bytes,archived,members,archived,status from v$log; GROUP# THREAD# BYTES ARC MEMBERS ARC STATUS

5760 NONO CURRENT

5760 NONO INACTIVE

5760 NONO INACTIVE2.4、归档日志文件(Archived files)Oracle可以运行在两种模式之中,归档模式和不归档模式。如果不用归档模式,当然,你就不会有归档日志,但是,你的系统将不会是一个实用系统,Oracle不能保证数据能够被正确恢复,因为你可能会丢失数据。但是在归档模式中,为了保存用户的所有修改,在重做日志文件切换后和被覆盖之间系统将他们另外保存成一组连续的文件系列,该文件系列就是归档日志文件。

有人或许会说,归档日志文件占领我大量的硬盘空间,其实,具体想一想,你是愿意浪费一点磁盘空间来保护你的数据,还是愿意丢失你的数据呢?显而义见,我们需要保证我们的数据的安全性。其实,归档并不是一直占领你的磁盘空间,你可以把她备份到磁带上,或则删除上一次完整备份前的所有日志文件。2.5、初始化参数文件(Parameter file)initSID.ora或init.ora文件,因为版本的不一样,其位置也可能会不一样。在8i或10g中,通常位于$ORACLE_HOME/admin//Pfile下

初始化文件记载了许多数据库的启动参数,如内存,控制文件,进程数等,在数据库启动的时候加载(Nomount时加载),初始化文件记录了很多重要参数,对数据库的性能影响很大,如果不是很了解,不要轻易乱改写,否则会引起数据库性能下降。2.6、其他文件i . 密码文件。用于Oracle 的具有sysdba权限用户的认证。文件一般位于

$ORACLE_HOME/database/PWD.ora。

ii. 日志文件�6�1报警日志文件(alert.log或alrt.ora)

记录数据库启动,关闭和一些重要的出错信息。数据库管理员应该经常检查这个文件,并对出现的问题作出即使的反应。你可以通过以下SQL 找到他的路径

select value from v$PARAMETER where name =’background_dump_dest’;

VALUE

C:\oracle\admin\orcl\bdump

�6�1后台或用户跟踪文件

系统进程或用户进程出错前写入的信息,一般不可能读懂,可以通过ORACLE的TKPROF工具转化为可以读懂的格式。对于系统进程产生的跟踪文件与报警日志文件的路径一样,用户跟踪文件的路径,你可以通过以下SQL找到他的路径

select value from v$PARAMETER where name =’user_dump_dest’;

SQL> select value from v$PARAMETER where name =’user_dump_dest’;VALUE

C:\oracle\admin\orcl\udump3、逻辑结构

3.1、表空间(tablespace)

表空间是数据库中的基本逻辑结构,一系列数据文件的。一个表空间可以包含多个数据文件,但是一个数据文件只能属于一个表空间。3.2、 段(Segment)

段是对象在数据库中占用的空间,虽然段和数据库对象是一一对应的,但段是从数据库存储的角度来看的。一个段只能属于一个表空间,当然一个表空间可以有多个段。

表空间和数据文件是物理存储上的一对多的关系,表空间和段是逻辑存储上的一对多的关系,段不直接和数据文件。一个段可以属于多个数据文件,关于段可以指定扩展到哪个数据文件上面。

段基本可以分为以下四种

�6�1数据段(Data Segment)

�6�1索引段(Index Segment)

�6�1回滚段(Rollback Segment)

�6�1临时段(Temporary Segment)3.3、区间(Extent)

在一个段中可以存在多个区间,区间是为数据一次性预留的一个较大的存储空间,直到那个区间被用满,数据库会继续申请一个新的预留存储空间,即新的区间,一直到段的更大区间数(Max Extent)或没有可用的磁盘空间可以申请。

在ORACLE8i以上版本,理论上一个段可以无穷个区间,但是多个区间对ORACLE却是有性能影响的,ORACLE建议把数据分布在尽量少的区间上,以减少ORACLE的管理与磁头的移动,但是在某些特殊情况下,需要把一个段分布在多个数据文件或多个设备上,适当的加多区间数也是有很大好处的。3.4、Oracle数据块(Block)

ORACLE最基本的存储单位,他是OS数据块的整数倍。ORACLE的操作都是以块为基本单位,一个区间可以包含多个块(如果区间大小不是块大小的整数倍,ORACLE实际也扩展到块的整数倍)。3.5、基本表空间介绍

3.5.1、系统辅助表空间(sysaux)

SYSAUX表空间在Oracle Database 10g中引入,作为SYSTEM表空间的辅助表空间.

以前一些使用独立表空间或系统表空间的数据库组件现在在SYSAUX表空间中创建.

通过分离这些组件和功能,SYSTEM表空间的负荷得以减轻.反复创建一些相关对象及组件引起SYSTEM表空间的碎片问题得以避免。

3.5.2、系统表空间(System)

该表空间包含的数据文件称为系统数据文件。

该存放系统表和数据字典,一般不放用户的数据,但是用户脚本,如过程,函数,包等却是保存在数据字典中的。

名词解释:数据字典

数据字典是一些系统表或视图,他存放系统的信息,他包括数据库版本,数据文件信息,表与索引等段信息,系统的运行状态等各种和系统有关的信息和用户脚本信息。数据库管理员可以通过对数据字典的查询,就可以了解到Oracle的运行状态。

查看数据数据字典的SQL

select * from dict;

查看内部系统表的SQL

select * from v$fixed_view_definition;

大量的读少量的写是该表空间的一个显著的特点。再次提醒:该表空间不能脱机

3.5.3、 临时表空间(Temporary)

该表空间包含的数据文件称为临时数据文件

主要存放用户的排序等临时数据,因为没有办法在一个永久表空间上开辟临时段,所以就必须有一个临时表空间,主要用于不能在内存上进行的排序操作。我们必须为用户指定一个临时表空间。

临时段占有的空间会在下次系统启动的时候全部被释放。

3.5.4、回滚段表空间(Rollback)

如果数据库进行对数据的修改,那么就必须使用回滚段,回滚段是用来临时存放修改前的数据(UNDO)。回滚段通常都放在一个单独的表空间上(回滚表空间),避免表空间碎片化,这个表空间包含的数据文件就是回滚数据文件。在Oracle9i中,提供了单独的表空间用于保存回滚段,不再需要手工干预。

*1回滚段在系统中的作用

当数据库进行更新插入删除等操作的时候,新的数据被更新到原来的数据文件,而旧的数据(Before Image)就被放到回滚段中,如果数据需要回滚,那么可以从回滚段将数据再复制到数据文件中。来完成数据的回滚。在系统恢复的时候, 回滚段可以用来回滚没有被commit 的数据,解决系统的一直性读。

回滚段在什么情况下都是大量的写,一般是少量读,因此建议把回滚段单独出来放在一个单独的设备(如单独的磁盘或RAID),以减少磁盘的IO争用。

*2、回滚段的工作方式

�6�1一个回滚表空间可以被划分成多个回滚段.

�6�1一个回滚段可以保存多个会话的数据.

�6�1回滚段是一个圆形的数据模型

3.5.5、用户表空间(User)

其包含的数据文件称为用户数据文件

一般是由用户建立,来存取用户数据的表空间,一般有两类常见的用户型数据,数据和索引,一般来说,如果条件许可的话,可以考虑放在不同的磁盘上。

3.5.6 例子表空间(example):例子表空间,可以不管。,它是数据库在操作系统中的存储位置。常见的物理结构包括:控制文件、数据文件、重作日志文件、归档日志文件、初始化参数文件、还有其它文件(密码文件、报警日志文件和后台及用户跟踪文件)。

oracle数据库的物理构成的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于oracle数据库的物理构成,深入探究:Oracle数据库的物理构成解析,Oracle中逻辑结构和物理结构,他们之间的关系是什么?的信息别忘了在本站进行查找喔。


数据运维技术 » 深入探究:Oracle数据库的物理构成解析 (oracle数据库的物理构成)