Oracle数据库体系结构

体系结构图:

存储结构

Oracle数据库的存储结构分为物理存储结构和逻辑存储结构两种。物理存储结构主要用于描述在Oracle数据库外部数据的存储,即在操作系统层面如何组织和管理数据,与具体的操作系统有关;逻辑存储结构主要描述Oracle数据库内部数据的组织和管理方式,即在数据库管理系统的层面中如何组织和管理数据,与操作系统无关

物理存储结构

Oracle数据库的物理存储结构是由一系列操作系统文件组成的,存放于物理磁盘上,是数据的实际存储单元,其中有许多类型的文件,每种文件都存储特定内容的信息,其数量也因文件类型不同而不同。具体包含的文件如下:

数据文件:是数据库中所有数据的实际存储空间,所有数据文件的大小和构成了数据库的大小

控制文件:记录数据库结构信息,由Oracle系统进行读写,DBA不能直接操作

重做日志文件:以重做记录的形式记录、保存用户对数据库所进行的变更操作。可以用来进行事物的重做(REDO)和回退(UNDO)

归档重做日志文件:历史联机重做日志文件的集合,联机重做日志文件被覆盖之前备份的副本。出现介质故障后实现数据库完全恢复的必要条件

初始化参数文件:数据库启动必需,记录数据库显式参数的设置

跟踪文件:诊断文件,获取数据库信息。包含数据库系统运行过程中所发生的重大事件的有关信息

告警文件:亦诊断文件,记录后台进程活动情况

逻辑存储结构

Oracle数据库的逻辑存储结构是从逻辑的角度来分析数据库的构成的,也就是数据库创建后利用逻辑概念来描述Oracle数据库内部数据的组织和管理形式。在操作系统中,没有数据库逻辑存储结构信息,而只有物理存储结构信息。数据库的逻辑存储结构概念在数据库的数据字典中,可以通过数据字典查询逻辑存储结构信息。

逻辑结构分为Oracle数据块、区、段、表空间。它们的关系如下:

一个或多个连续的数据块构成区,一个或多个区构成段,一个或多个段构成表空间,所有的表空间构成数据库。

数据块:数据库中最小逻辑存储单元,是数据库执行输入、输出操作的最小单位,由一个或多个操作系统块构成。数据块分为标准块和非标准块两种:标准块由DB_BLOCK_SIZE设置,大小不可更改,通常为4K或8K;非标准块最多可使用4种,块大小有2K、4K、8K、16K、32K。

:连续的数据块构成,存储空间分配的最小单位。创建一个数据库对象时,Oracle为对象分配若干个区,以构成一个段来为对象提供存储空间。构成一个段的所有区只能在一个段中。在Oracle数据库中,引入区的目的是为了提高系统存储空间分配的效率,以区为单位的存储空间分配大大减少了磁盘分配的次数。

:一个或多个连续或不连续的区构成,用于存储数据库对象。根据存储对象类型的不同,分为表段、索引段、临时段和回退段:

表段,又称数据段,用来存储表或簇的数据

索引段,用来存放索引数据,包括ROWID和索引键值

临时段,进行查询、排序等操作时,如果内存空间不足,用于保存SQL语句在解释和执行过程中就会产生临时数据(临时段)。会话结束时,为该操作分配的临时段将被释放

回退段,用于保存数据库的回退信息,包含当前未提交事务所修改的数据的原始版本。利用回退段中保存的回退信息,可以实现事务回滚、数据库恢复、数据的读一致性和闪回查询。

表空间:Oracle数据库最大的逻辑存储单元,数据库大小从逻辑上看就是由表空间决定的,所有表空间大小的和就是数据库的大小。在Oracle数据库中,存储结构管理主要就是通过对表空间的管理来实现的。表空间与数据库文件直接关联。Oracle DB在逻辑上将数据存储在表空间中,在物理上把数据存储在数据文件中。一个表空间包括一个或多个数据文件,一个数据文件只能从属于某一个表空间。根据存储数据类型的不同,可将表空间分为系统表空间和非系统表空间。非系统表空间包括临时表空间、撤销表空间、用户表空间。

名称

类型

用途

SYSTEM

系统表空间

存放系统信息

SYSAUX

TEMP

临时表空间

管理临时信息

UNDOTBS1

撤销表空间

存储、管理回退信息

USERS

用户表空间

存储用户的业务数据

EXAMPLE

软件结构(Oracle实例)

Oracle数据库实例由一系列内存结构和后台进程组成。用户操作数据库的进程实质上是与数据库实例建立连接,然后通过实例来操作数据库的过程。用户的所有操作都在内存中进行,最后由数据库后台进程将操作结果写入各种物理文件中永久性保存。

内存结构

内存结构是Oracle数据库体系结构的重要组成部分,是Oracle数据库重要的信息缓存和共享区域。根据内存区域信息使用范围的不同,分为系统全局区(System Global Area, SGA)和程序全局区(Program Global Area, PGA)。

SGA

SGA是由Oracle分配的共享内存结构,包含一个数据库实例的数据和控制信息。SGA数据提供所有的服务器进程和后台进程共享。用户对数据库的各种操作主要在SGA中进行。该内存区随数据库实例的创建而分配,随实例的终止而释放。SGA组成如下:

•数据高速缓冲区:存储从数据文件中检索出来的数据拷贝。在数据缓冲区中被修改后的数据由数据写入过程写到硬盘的数据文件中永久保存。数据高速缓存区越大,缓存命中率越高。然而,如果数据高速缓冲区数值太大,就会降低系统性能。需要合理设置。根据数据缓存区中存放的信息不同,可分为脏缓存块、空闲缓存块、命中缓存块、干净缓存块。

•重做日志缓冲区:缓存用户对数据库进行修改操作时生成的重做记录。它是SGA中的循环缓冲区,存放有关对数据库所作更改的信息。Oracle数据库中,重做记录并不是直接写入到重做日志文件中,而是被服务器进程写入重做日志缓冲区中,在一定条件下,再由日志写入进程LGWR把重做日志缓冲区的内容写入到重做日志文件中做永久性保存。LOG_BUFFER设置大小。

•共享池:用于缓存最近执行过的SQL语句、PL/SQL程序和数据字典信息,是进行语法分析、编译、执行的区域。SHARED_POOL_SIZE设置大小。由库缓存和数据字典缓存组成。

1)库缓存。缓存最近被解释并执行过的SQL语句、PL/SQL程序代码正文、编译后代码以及执行计划,以提高SQL、PL/SQL程序的执行效率

2)数据字典缓存区。保存最常使用的数据字典信息

•大型池:可选内存配置项。为需要大量缓存的操作提供内存空间。如果没有在SGA中创建大型池,一系列需要大量缓存的操作所需要的缓存空间将在共享池或PGA中分配,因而会影响共享池或PGA的使用效率。LARGE_POOL_SIZE设置大小

•Java池:可选内存配置项。提供对Java程序设计的支持

•流池:可选内存配置项,用于对流的支持

PGA

Oracle创建一个服务器进程的同时要为该服务器进程分配一个内存区,该内存区称为PGA。PGA是一个私有内存区,不能共享,每个服务器进程只能访问自己的PGA。系统同时为每个后台进程分配私有的PGA区。所有的服务器进程PGA和后台进程PGA大小的和,即为实例的PGA的大小。

PGA由以下四部分组成:

后台进程

数据库的后台进程随数据库实例的启动而自动启动,它们协调服务器进程的工作,优化系统的性能。以下是主要的后台进程:

DBWR数据库写入进程负责把数据高速缓冲区中的脏缓存块成批写入数据文件中永久保存,释放出更多的空闲缓存块,提高缓存命中率

LGWR日志写入进程负责把重做日志缓冲区的重做记录写入重做日志文件中永久保存。先写重做日志文件,后写数据文件

CKPT:执行检查点,完成以下操作:

1.更新控制文件与数据文件的头部,使其同步

2.触发DBWR进程,将脏缓存块写入数据文件

SMON:进行数据库实例恢复、回收不再使用的临时空间、将各个表空间的空闲碎片合并。在实例运行期间,它会被定期唤醒,检查是否有工作需要它完成。

PMON

•负责恢复失败的用户进程或服务器进程,并且释放进程所占用的资源

•清除非正常中断的用户进程留下的孤儿会话,回退未提交的事务,释放会话所占用的锁、SGA、PGA等资源

•监控调度进程和服务器进程的状态,如果它们失败,则尝试重新启动它们,并被占用的资源

ARCH:负责在日志切换后将已经写满的重做日志文件复制到归档目标,以防止写满的重做日志文件被覆盖

参考资料:《Oracle 11g 数据库基础教程(第2版》,孙风栋主编

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值