OracleDB入门1:体系结构--1存储体系
背景
银行数据库异地迁移,再次涉及到数据库的备份与恢复。其实之前已了解过oracle的相关体系结构,但没有自己作总结,导致今天恢复时又有点卡壳。因此,写下此文记录oracle的存储体系,包括物理存储体系和逻辑存储体系。
物理存储体系
ORACLE的物理存储体系指一堆实际存在的文件,如下所示,主要包括参数文件、控制文件、数据文件等。
参数文件(parameter file,pfile):
ORACLE中的参数文件是一个包含一系列参数以及参数对应值的操作系统文件,可以分为两种类型。它们是在数据库实例启动时候加载的,决定了数据库的物理结构、内存、数据库的限制及系统大量的默认值、数据库的各种物理属性、指定数据库控制文件名和路径等信息,是进行数据库设计和性能调优的重要文件。
初始化参数文件(Initialization Parameters Files),Oracle 9i之前,ORACLE一直采用PFILE方式存储初始化参数,该文件为文本文件。
服务器参数文件(Server Parameter Files),从Oracle 9i开始,Oracle引入了SPFILE文件,该文件为二进制格式,不能通过手工修改。
ORACLE实例启动时,先读取spfileXXX.ora(二进制)文件启动,若此文件不存在,则读取initT24APDB.ora(文本文件)。若还不存在,则读取oracle默认的init.ora文件进行启动。
文件路径默认为:$ORACLE_HOME/dbs。
控制文件(control file):
包含与数据库本身相关的数据,即物理数据库结构信息。这些文件对数据库至关重要。没有这些文件,就无法打开数据文件以访问数据库中的数据。
包含指向数据库其余部分的指针(包括重做日志文件,数据文件,归档日志文件等的位置),存储重要的***和时间戳,存储RMAN备份的详细信息。控制文件一旦受损,那实例会立马终止,一般对数据文件的保护采用多路复用机制,就是冗余多份在不同物理位置。
通过spfile可以查看ORACLE数据库的控制文件路径。
数据文件(data file):
包含数据库的用户或应用程序数据,以及元数据和数据字典。
联机重做日志文件(online redo log):
用于进行数据库的实例恢复。如果数据库服务器发生崩溃,但未丢失任何数据文件,那么实例便可使用这些文件中的信息恢复数据库。
归档重做日志文件(archive redo log)
ARCn进程将联机重做日志文件会备份归档到这类文件中去,归档日志文件保留了数据更改的完整历史信息。
逻辑存储体系
ORACLE逻辑存储系统用于描述oracle内部组织和管理数据的方式,如逻辑上将数据库划分为一个或多个表空间,表空间又包含各种段,等等。其结构如下图所示。
方案(schema)
schema是数据库用户拥有的数据库对象的集合。方案对象是直接引用数据库数据的逻辑结构。方案对象包括诸如表、视图、序列、存储过程、同义词、索引、集群和数据库链接等结构。通常,方案对象包括应用程序在数据库中创建的所有内容。具体来说,一个ORACLE用户对应一个schema。当你用命令:
CREATE USER ZAVIER IDENTIFIED BY "123456";
创建了一个USER,也就生成一个schema。
数据库(database)
数据库通过dbca命令创建或配置。一个实例可以有多个数据库,但每次只能load一个数据库。其区别为:
实例 instance = 进程 + 进程所使用的内存(SGA)
数据库 database = 物理操作系统文件或磁盘(disk)的集合(redo文件+control文件+data文件+临时文件)
表空间(tablespace)
数据库分为多个逻辑存储单元,这些单元称为“表空间”,用于将相关逻辑结构组合在一起。例如,表空间一般会将应用程序的所有对象分成一组,以简化一些管理操作。您可以使用一个表空间存放应用程序数据,使用另一个存放应用程序索引。如下命令可以创建表空间:
CREATE TABLESPACE ZAVIER_SPACE LOGGING DATAFILE '/mnt/data/orcl/ZAVIER_T24.dbf' SIZE 10G AUTOEXTEND ON NEXT 500M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO;
段segment、区extend、块block
数据库对象(例如表和索引)以段的形式存储在表空间中。每个段都包含一个或多个区。区由相邻的数据块组成,这意味着每个区只能存在于一个数据文件中。数据块是数据库中最小的I/O 单元。
数据库从操作系统(OS) 请求数据块集时,OS 会将数据块集映射到存储设备上的实际文件系统或磁盘块。因此,不必了解数据库中任何数据的物理地址。这还意味着可以在多个磁盘上条带化或镜像一个数据文件。
可以在创建数据库时设置数据块的大小。对大多数数据库而言,默认的8 KB 块大小是足够的。当数据库支持拥有大型表和索引的数据仓库应用程序时,最好设置较大的块大小。
当数据库支持执行随机读写的事务处理应用程序时,最好指定较小的块大小。块大小的最大值取决于OS。Oracle 块大小的最小值为2 KB,这个值很少使用。
小结:
- 段存在于表空间中;
- 段是区的集合;
- 区是数据库的集合;
- 数据库会映射到磁盘块;
总结
按照oracle官网说明,ORACLE设计物理存储结构与逻辑存储结构分离,使得对物理存储管理不会影响逻辑数据的访问。例如,可以对物理文件进行改名/改路径之类的。
Because physical and logical structures are separate, you can manage physical storage of data without affecting access to logical structures. For example, renaming a database file does not rename the tables stored in it.