数据库笔记我爱编程

第一部分 - 背景 - 5 - Oracle 的体系结构

2017-03-16  本文已影响130人  板蓝根plank

Oracle 基于客户 - 服务器结构。Oracle 服务器由 数据库 (原始数据加上日志和控制文件)和 实例(服务器上负责存取数据库的进程和系统内存)组成。一个实例仅能与一个数据库相连。数据库由 逻辑结构物理结构 组成,逻辑结构如数据库模式,物理结构包括形成 Oracle 数据库的文件。

Oracle 的逻辑数据库结构

在逻辑层,Oracle 包含表空间模式数据块 以及 区间 / 段

表空间

一个 Oracle 数据库被划分为若干个逻辑存储单元,称为表空间(tablespace)。可以用表空间将相关的逻辑结构组织在一起。例如,表空间会把一个应用程序的所有对象组织在一起,以简化某些管理操作。

每个 Oracle 数据库都包含一个名为 SYSTEM 的表空间,它是在创建数据库时自动生成的。SYSTEM 表空间通常会包含整个数据库的系统目录表(在 Oracle 中,称为 数据字典)。一个小型数据库可能只需要一个 SYSTEM 表空间,但最好在创建一个表空间,用以与数据字典分开存放用户数据,从而减少字典对象和模式对象因同名数据文件带来的冲突。

一个创建表空间的语句:

CREATE TABLESPACE user_data
DATAFILE 'DATA3.ORA' SIZE 100K
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO;

然后可以通过如下语句将表与指定的表空间相连:

CREATE TABLE PropertyForRent (propertyNo VARCHAR2(5) NOT NULL, ...)
TABLESPACE user_data;

如果在创建新表时没有指定表空间,则会用到创建用户账户时与用户相连的默认空间。

用户、模式和模式对象

用户(有时称为用户名)是数据库中定义的一个名称,他可以连接或访问对象。模式 是模式对象的一个命名集合,如表、视图、索引、簇集和过程,它与特定的用户相连。模式和用户的概念有助于 DBA 管理数据库的安全。

为了对数据库进行存取,用户必须首先运行一个数据库应用程序(如 Oracle Forms 或 SQL*Plus),然后用数据库中已经定义的一个用户名来连接。在创建一个数据库用户时,将会相应地为该用户创建一个同名的模式。在默认状态下,一旦用户与数据库相连接,用户就可以对模式中的所有对象进行存取。因为用户只与同名模式相连,所以 “用户” 和 “模式” 这两个词可以互换(注意,表空间与模式之间不存在任何关系:在统一模式中的对象可以放在不同的表空间中,一个表空间也可以保存不同模式中的对象)。

数据块、区间和段

数据块 是 Oracle 可使用,或者说可分配的最小存储单元。一个数据块与物理磁盘空间中一定数量的字节相对应。可以在创建 Oracle 数据库时设置数据块的大小。数据块大小可以是操作系统中块大小的倍数(须在系统的最大操作范围内),这样可以避免不必要的 I/O 操作。数据块的结构如下:

逻辑数据库空间的第二个层次称为 区间(extent)。区间是一定数量的连续数据块,用来存储某种特定类型的信息。区间之上的层次就是段。段是区间的集合,用来存储某个逻辑结构。例如,每个表的数据都存在他自己的数据段中,而每个索引的数据则存在它自己的索引段中。当某个段的现有的区间已满时,就由 Oracle 动态地分配新空间。因为区间是根据需要分配的,所以包含在段中的区间在磁盘上可能连续也可能不连续。

Oracle 数据块、区间和段之间的关系

Oracle 的物理数据库结构

Oracle中主要的物理数据库结构是数据文件、重做日志文件和控制文件。

数据文件

每个 Oracle 数据库都有一个或多个物理数据文件。逻辑数据库结构(如表和索引)中的数据是以数据文件这样的物理形式存储的。一个或多个数据文件形成一个表空间。最简单的 Oracle 数据库可能只有一个表空间和一个数据文件。更复杂的数据库可能会包含四个表空间,每个表空间中有两个数据文件,因此总共有八个数据文件。

重做日志文件

每个 Oracle 数据库都有一个由两个(或更多)重做日志文件所构成的集合,它记录了对数据进行的所有更改,其目的是便于以后的恢复。某个故障可能使得修改了的数据未能永久的写入数据文件,那么可从重做日志中获取这个修改,从而防止丢失工作。

控制文件

每个 Oracle 数据库都有一个控制文件,它包含了所有其他文件(这些文件都参与了数据库的组成)的一个列表,例如,数据文件和重做日志文件。为了更好地对数据进行保护,最好有多个控制文件(可以将多个副本写入多个设备中)。同样,最好也保存多个重做日志文件的副本。

Oracle 实例

Oracle 实例由 Oracle 进程和对数据库中的信息进行存取所需的共享内存组成,其中,Oracle 使用共享内存对数据和索引进行高速缓存,并对共享程序代码进行存储。共享内存可以划分为不同的内存结构,其中最基本的就是系统全局区(System Global Area, SGA)和程序全局区(Program Global Area,PGA)。

Oracle 体系结构

在前面的描述中大多使用了 “进程” 这个词,目前一些系统会在实现中用线程取代进程。

上一篇 下一篇

猜你喜欢

热点阅读