4.7 数据库的物理结构

数据库中的数据在逻辑结构上是以表空间、段、区、数据块的形式组织的,而在物理上则表现为储存在磁盘上的文件。数据库的物理结构是指数据在操作系统中的的存储方式,是对用户可见的组织形式。数据库的物理结构包括数据文件、控制文件和重做日志文件,这三种文件是数据库正常运行所必需的。另外,数据库中还包括口令文件、参数文件、警告文件和跟踪文件等。

4.7.1 数据文件

顾名思义,数据文件是用来存储数据的。在数据文件中存储所有数据库对象的结构和数据,包括表、视图、索引、触发器、存储程序等数据库对象。用户对数据库的访问实际上就是对数据文件的访问,只不过这些文件不能由操作系统直接访问,而必须通过数据库服务器才能访问。

数据文件与一般的文件有所不同。一般的操作系统文件的初始大小可能比较小,随着文件中内容的增加,它的大小也随着增加,同样,它的大小也将随着内容的减少而减少,在任何时候,它的大小与其内容的多少是一致的。数据文件更像是一个空的容器,在创建数据文件时,就按照指定的大小分配了存储空间。在文件被写满之前,无论文件中包含多少数据,它的大小总是固定不变的。

既然数据文件是一种操作系统文件,它在磁盘上必然占用一定数量的操作系统块。在数据库服务器内部,数据读写的基本单位是数据块,一个数据块对应多个操作系统块。在数据库中读写一个数据块时,在操作系统中对应着对多个操作系统块的读写。

数据文件在逻辑上属于表空间,一个表空间可以包含一个或多个数据文件,而一个数据文件只能属于一个表空间。用户在创建数据库对象时,只能指定所属的表空间,而不能指定存储在哪个数据文件上。数据库对象被创建后,它的结构和数据就存储在一个或多个数据文件中。

随着数据库的运行,数据文件中的数据可能越来越多,并最终耗尽数据文件的存储空间。为了存储更多的数据,数据文件的存储空间必须能够扩展。Oracle提供了三种扩展数据文件存储空间的方法。第一种方法是在当前表空间中增加新的数据文件,新数据将被存储在新的数据文件中。第二种方法是手工扩展表空间中的数据文件,在原来的存储空间的基础上,增加一定数量的存储空间。第三种方法是激活数据文件的自动扩展功能,数据库服务器将自动为数据文件分配新的存储空间。