数据库结构和空间管理 一个ORACLE数据库是数据的集合,被处理成一个单位。
一个ORACLE数据库有一个物理结构和一个逻辑结构。
物理数据库结构physical database structure是由构成数据库的操作系统文件所决定。
每一个ORACLE数据库是由三种类型的文件组成:数据文件、日志文件和控制文件。
数据库的文件为数据库信息提供真正的物理存储。
逻辑数据库结构是用户所涉及的数据库结构。
一个ORACLE数据库的逻辑结构由下列因素决定: l 一个或多个表空间 l 数据库模式对象即表、视图、索引、聚集、序列、存储过程 逻辑存储结构如表空间dataspace、段segment和范围将支配一个数据库的物理空间如何使用。
模式对象schema object用它们之间的联系组成了一个数据库的关系设计。
1 物理结构 1 数据文件 每一个ORACLE数据库有一个或多个物理的数据文件data file。
一个数据库的数据文件包含全部数据库数据。
逻辑数据库结构如表、索引的数据物理地存储在数据库的数据文件中。
数据文件有下列特征: l 一个数据文件仅与一个数据库联系。
l 一旦建立,数据文件不能改变大小 l 一个表空间数据库存储的逻辑单位由一个或多个数据文件组成。
数据文件中的数据在需要时可以读取并存储在ORACLE内存储区中。
例如:用户要存取数据库一表的某些数据,如果请求信息不在数据库的内存存储区内,则从相应的数据文件中读取并存储在内存。
当修改和插入新数据时,不必立刻写入数据文件。
为了减少磁盘输出的总数,提高性能,数据存储在内存,然后由 ORACLE后台进程DBWR决定如何将其写入到相应的数据文件。
2 日志文件 每一个数据库有两个或多个日志文件redo log file的组,每一个日志文件组用于收集数据库日志。
日志的主要功能是记录对数据所作的修改,所以对数据库作的全部修改是记录在日志中。
在出现故障时,如果不能将修改数据永久地写入数据文件,则可利用日志得到该修改,所以从不会丢失已有操作成果。
日志文件主要是保护数据库以防止故障。
为了防止日志文件本身的故障,ORACLE允许镜象日志mirrored redo log,以致可在不同磁盘上维护两个或多个日志副本。
日志文件中的信息仅在系统故障或介质故障恢复数据库时使用,这些故障阻止将数据库数据写入到数据库的数据文件。
然而任何丢失的数据在下一次数据库打开时,ORACLE自动地应用日志文件中的信息来恢复数据库数据文件。
3 控制文件 每一ORACLE数据库有一个控制文件control file,它记录数据库的物理结构,包含下列信息类型: l 数据库名; l 数据库数据文件和日志文件的名字和位置; l 数据库建立日期。
为了安全起见,允许控制文件被镜象。
每一次ORACLE数据库的实例启动时,它的控制文件用于标识数据库和日志文件,当着手数据库操作时它们必须被打开。
当数据库的物理组成更改时,ORACLE自动更改该数据库的控制文件。
数据恢复时,也要使用控制文件。
2 逻辑结构 数据库逻辑结构包含表空间、段、范围extent、数据块和模式对象。
1 表空间 一个数据库划分为一个或多个逻辑单位,该逻辑单位称为表空间TABLESPACE。
一个表空间可将相关的逻辑结构组合在一起。
DBA可利用表空间作下列工作: l 控制数据库数据的磁盘分配。
l 将确定的空间份额分配给数据库用户。
l 通过使单个表空间在线或离线,控制数据的可用性。
l 执行部分数据库后备或恢复操作。
l 为提高性能,跨越设备分配数据存储。
数据库、表空间和数据文件之间的关系如下图所示: Database SYSTEM DATA Tablespace Tablespace DTATAFILE1 (2MB) DATAFILE2 (2MB) DATAFILE3 (2MB) Driver1 Driver2 。
每个数据库可逻辑划分为一个或多个表空间 。
每一个表空间是由一个或多个数据文件组成,该表空间物理地存储表空间中全部逻辑结构的数据。
DBA可以建立新的表空间,可为表空间增加数据文件或可删除数据文件,设置或更改缺省的段存储位置。
每一个ORACLE数据库包含有一个名为SYSTEM的表空间,在数据库建立是自动建立。
在该表空间中总包含有整个数据库的数据字典表。
最小的数据库可只需要SYSTEM表空间。
该表空间必须总是在线。
表和存储的PL/SQL程序单元过程、函数、包和触发器的全部存储数据是存储在SYSTEM表空间中。
如果这些PL/SQL对象是为数据库建的,DBA在SYSTEM表空间中需要规划这些对象所需要的空间。
表空间利用增加数据文件扩大表空间,表空间的大小为组成该表空间的数据文件大小的和。
DBA可以使ORACLE数据库中任何表空间除SYSTEM表空间外在线ONLINE或离线OFFLINE。
表空间通常是在线,以致它所包含的数据对数据库用户是可用的。
当表空间为离线时,其数据不可使用。
在下列情况下,DBA可以使其离线。
。
使部分数据不可用,而剩余的部分允许正常存取 。
执行离线的表空间后备 。
为了修改或维护一应用,使它和它的一组表临时不可用。
包含有正在活动的回滚段的表空间不能被离线,仅当回滚段不正在使用时,该表空间才可离线。
在数据字典中记...