一、Oracle体系结构
ASP站长网数据库的体系结构是指数据库的组成、工作过程、以及数据库中数据的组织与管理机制,要了解Oracle数据库的体系结构,必须理解Oracle系统的主要组件和重要概念。
1、Oracle体系结构概述
Oracle体系结构包含一系列组件,如下图所示,图中显示了Oracle体系结构中的主要组件,包括实例、用户进程、服务器进程、数据文件及其他文件,如参数文件、口令文件和归档日志文件等。从图中可以看出,实例和数据库是Oracle数据库体系结构的核心组成部分,也是最重要的两个概念;DBA一个很重要的工作就是维护实例和数据库本身的正常工作。
Oracle数据库的体系结构和用户管理
1)实例
Oracle实例是后台进程和内存结构的集合,必须启动实例才能访问数据库中的数据。Oracle实例启动时,将分配一个系统全局区(SGA)并启动一系列Oracle后台进程。Oracle实例有两种类型:单进程实例和多进程实例,单进程Oracle实例使用一个进程执行Oracle的全部操作,在单进程环境下的Oracle实例仅允许一个用户可存取;多进程Oracle实例(又称多用户Oracle)使用多个进程来执行Oracle的不同部分,对于每个连接的用户都有一个进程。
2)数据库
数据库是数据的集合,物理上指存储数据库信息的一组操作系统文件,每个数据库有一个逻辑结构和物理结构。物理结构是指构成数据库的一组操作系统文件,主要由三种类型文件组成:数据文件、控制文件和重做日志文件。数据库的逻辑结构是指数据库数据的逻辑存储结构(如表空间、段)和模式对象(如表、视图等)。
3)可插拔数据库
从Oracle 12c版本开始,Oracle引入了可插拔数据库的概念,可插拔是为云计算而生。可插拔的结构由一个容器数据库(CDB)和若干个可组装数据库(PDB)组成,每个PDB对外可充当一个独立的数据库工应用程序使用,它可以包含自己的数据文件,但是所有的PDB共享CDB的控制文件以及日志文件。所谓的可插拔,意味着PDB可以像USB一样随时插入CDB中,不用了也可以随时拔下来。一个CDB中最多可以插入250个PDB,在PDB中,seedPDB为模板PDB,它为新创建的PDB提供模板,其他的PDB可以根据需要创建、删除。可插拔功能可以加速数据库的部署,给一个CDB打补丁就可以经所有的更新同步到其上的所有PDB中。
在Oracle 12c之前的版本中,实例和数据库只能是一对一或多对一(RAC,Real Application Clusters,实时应用集群)的关系,即只能是一个实例对应一个数据库,或者多个实例对应一个数据库。但在Oracle 12c版本中,通过引入CDB和PDB,一个实例可以对应多个可插拔数据库。
可插拔数据库的使用场景:
企业中有多个应用均需要使用Oracle数据库,他们仅使用非常少量的硬件资源,但是又不得不为他们创建多个实例;
一些不是特别重要的数据库,打包需要DBA花费大量的精力去维护;
为了更好的利用硬件资源以及减少管理开销,有必要将大量的部门级应用整合到少数几个Oracle关系型数据库中,以便部署和管理;
通过在一个集中化的平台部署多个数据库,同时又共享一个数据库实例,可以大大降低成本,即更少的实例损耗和耕地的存储技术。
如果在生产环境中只需要一个数据库,并不想使用可插拔数据库,可以在安装过程中取消勾选“创建为容器数据库”复选框,从而将安装一个普通数据库。
2、Oracle服务器
Oracle服务器它主要由实力和数据库文件组成,也就是常说的数据库管理系统(Database Management System,DBMS)。Oracle服务器的组成如下图:
Oracle数据库的体系结构和用户管理
Oracle服务器除了维护实例和数据库文件外,还在用户建立与服务器的连接时启动服务器进程并分配PGA.(Program Area,程序全全局区)。
3、Oracle存储结构
Oracle的存储结构分为物理结构和逻辑结构,这两种存储结构既相互独立又相互联系。如下图所示:
Oracle数据库的体系结构和用户管理
物理结构主要描述Oracle数据库的外部存储结构,即在操作系统中如何组织、管理数据。
逻辑结构主要描述Oracle数据库的内部存储结构,即从逻辑概念上描述在Oracle数据库中如何组织、管理数据。
1)Oracle物理结构
物理结构是Oracle数据库创建后使用的操作系统物理文件,Oracle数据库的物理文件分为以下两类:
(1)主要文件
①数据文件:数据文件(Data File)的扩展名通常是.dbf,是物理存储Oracle数据库数据的文件。
数据文件的特点:
每个数据文件只与一个数据库相联系;
一个表空间可包含一个或多个数据文件;
一个数据文件只能属于一个表空间;
②重做日志文件:重做日志文件(Redo Log File)的扩展名是.log,它记录了对数据的所有更改信息,并提供了一种数据恢复机制,确保在系统崩溃或其他意外出现后重新恢复数据库。
在Oracle数据库中,重做日志文件是成组使用的,每个重做日志文件组可以有一个或多个重做日志文件。在工作过程中,多个重做日志文件组之间循环使用,当一个重做日志文件组写满后,会转向下一个日志文件组。重做日志文件用于记录数据库变化,是用户的事务处理日志。
③控制文件:控制文件(Control File)的扩展名是.ctl,是一个二进制文件。控制文件中存储的信息很多,其中包括数据文件和重做日志文件的名称和位置。控制文件是数据库启动及运行所必须的文件。当Oracle读写数据时,要根据控制文件 的信息查找数据文件。
由于控制文件的重要性,一个数据库至少要有两份控制文件。Oracle 12c默认包含两个控制文件,各个控制文件内容相同,从而可以避免因为一个控制文件的损坏而导致无法启动数据库的情况出现。
控制文件中记录了以下关键信息:
数据文件的位置及大小;
重做日志文件的位置及大小;
数据库名称及创建时间;
日志序列号;
(2)其他文件
其他文件有参数文件、归档日志文件、口令文件等。
2)Oracle逻辑结构
数据库的逻辑结构是从逻辑的角度分析数据库的组成的。Oracle数据库的逻辑结构包括表空间、段、区、块和模式等。如图:
Oracle数据库的体系结构和用户管理
(1)表空间
每个Oracle数据库都是由若干个表空间构成的,用户在数据库中建立的所有内容都被存储到表空间中。一个表空间可以由多个数据文件,但一个数据文件只能属于一个表空间。与数据文件这种物理结构不同,表空间属于数据库的逻辑结构。
在每个数据库中,都有一个名为“SYSTEM”的表空间,即系统表空间,还会有SYSAUX、UNDO、USERS等表空间,这些都是在创建数据库时自动创建的。管理员可以创建自定义的表空间并分配给指定用户,也可以为表空间增加和删除数据文件。
表空间基本有以下三类:
①永久性表空间:一般保持基表、试图、过程和索引等的数据。SYSTEM、SYSAUX、USERS表空间是默认安装的;
②临时性表空间:只用于保存系统中短期活动的数据,如排序数据等;
③撤销表空间:用来帮助回退未提交的事务数据,已提交的数据在这里是不可以恢复的;
一般不需要创建临时性表空间和撤销表空间,除非要把他们转移到其他磁盘中以提高性能。
表空间的目的如下:
①对不同用户分配不同的表空间,对不同的模式对象分配不同的表空间,方便对用户操作和对模式对象的管理;
②可以将不同数据文件创建不同的磁盘中,有利于管理磁盘空间、提高I/O性能、备份和恢复数据等;
一般在完成Oracle系统的安装并创建Oracle实例后,Oracle系统自动建立SYSTEM、SYSAUX、USRS等多个表空间。
下面详细介绍一下SYSTEM表空间、SYSAUX表空间、TEMP表空间和TEMP表空间:
SYSTEM表空间:用于存放Oracle系统内部表和数据字典的数据,如表名、列名、用户名等。不建议将用户创建的表,索引等对象存放到SYSTEM表空间中。
SYSAUX表空间:作为SYSTEM的辅助表空间,用于存放各种数据库工具用户的数据;还用于存放各种模式的对象数据,如智能代理用户DBSNMP等,这些模式在数据库安装完成后就建立了相应的对象并都存放在SYSAUX表空间中。
USERS表空间:通常作为用户使用的表空间,可以在这个表空间上创建各种对象,如表、索引等。
TEMP表空间:Oracle系统用于存放临时数据的特殊表空间。比如:当操作中需要进行排序时,Oracle系统就将排序的数据临时存放在该表空间内。排序处理完成后即可释放排序数据所占用的空间,因此成为临时表空间。
除了Oracle系统默认创建的表空间外,用户可根据应用系统的模式及其所要存储的对象类型创建多个表空间,以区分用户数据和系统数据。