一、数据库(Database)
“数据库”是磁盘上数据的集合,位于收集和维护相关信息的数据库服务器上的一个或多个文件中。数据库是由各种物理和逻辑结构组成,而表则是数据库中最重要的逻辑结构。
组成数据库的文件主要分成两类:数据库文件和非数据库文件。两者之间的区别在于存储何种数据。数据库文件包含数据和元数据,非数据库文件则包含初始参数和日志记录信息等。
二、实例(instance)
Oracle数据库存储在服务器的磁盘上,而Oracle实例(instance)则存在于服务器的内存中。Oracle实例由一个大型内存块和大量后台进程组成;该内存块分配在系统全局区域(System Global Area,SGA)中,后台进程在SGA和磁盘上的数据库文件之间交互。
在Oracle RAC中,多个实例将使用同一个数据库(采用ASM方式搭建RAC)虽然共享数据库的实例可能在同一服务器上,但最可能的是这些实例位于不同服务器上,这些服务器通过高速互连进行连接,并且访问驻留在专门的、支持RAID的磁盘子系统上的数据库。
三、Oracle数据库逻辑存储结构
下面严格的说应该是Oracle数据库中的数据文件的逻辑存储结构。
Oracle数据库中的数据文件被分组到一个或多个表空间(tablespace)中,在每个表空间中,逻辑数据库结构(如表和索引)都是片段,被进一步细分为“盘区”(extent)和“块”(block)。一个表空间由多个段组成,一个段都一个或多个盘区组成,1个盘区由一个或多个数据块组成。
1、块(block)
块(block)也称为数据库,是Oracle数据库中最小的存储单元。块的大小是数据库内给定表空间中特定数量的存储字节。
块通常是操作系统块的几倍大。Oracle初始参数DB_BLOCK_SIZE指定默认的块大小,不重新创建数据库,就不能改动大小。最多可为数据库中的其他表空间定义4个块大小,而SYSTEM、SYSAUX和任何临时表空间中的块大小必须为DB_BLOCK_SIZE的值。
Oracle的测试都是使用8KB块执行,除非经过全面性能测试,否则推荐为所有表空间使用8KB块大小。
2、盘区(extent)
盘区(extent)是Oracle数据库中比块(block)高一个级别的逻辑分组,比段(segment)低一个级别。它由一个或多个数据库块组成。它是为数据库中特定类型对象(表或索引)分配的特定数量的块。盘区是一次分配的最少的块的数量。
3、段(segment)
段(segment)是Oracle中比盘区(extent)高一个级别的逻辑分组。段是一组盘区,这组盘区组成了被Oracle视为一个单位的数据库对象,如表和索引。整个段必须包含在一个表空间中。每个段只代表一种类型的数据库对象,Oracle数据库中有四中类型的段:数据段(非分区表和分区表的每个分区)、索引段、临时段和回滚段。
Oracle 12C安装的时候最少会创建两个表空间:SYSTEM表空间和SYSAUX表空间。Oracle 12c默认安装创建6个表空间。