翻译Oracle10g概念Concepts 第三章.docx

上传人:b****8 文档编号:29214794 上传时间:2023-07-21 格式:DOCX 页数:23 大小:310.98KB
下载 相关 举报
翻译Oracle10g概念Concepts 第三章.docx_第1页
第1页 / 共23页
翻译Oracle10g概念Concepts 第三章.docx_第2页
第2页 / 共23页
翻译Oracle10g概念Concepts 第三章.docx_第3页
第3页 / 共23页
翻译Oracle10g概念Concepts 第三章.docx_第4页
第4页 / 共23页
翻译Oracle10g概念Concepts 第三章.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

翻译Oracle10g概念Concepts 第三章.docx

《翻译Oracle10g概念Concepts 第三章.docx》由会员分享,可在线阅读,更多相关《翻译Oracle10g概念Concepts 第三章.docx(23页珍藏版)》请在冰豆网上搜索。

翻译Oracle10g概念Concepts 第三章.docx

翻译Oracle10g概念Concepts第三章

第二部分Oracle数据库体系结构

3表空间,数据文件,控制文件

本章讲解Oracle数据库中重要的逻辑数据库结构--表空间,以及组成表空间的物理数据文件。

本章包含以下主题:

●表空间,数据文件,控制文件简介

●表空间概述

●数据文件概述

●控制文件概述

3.1表空间,数据文件,控制文件简介

Oracle中表空间逻辑上存储数据,而表空间对应的数据文件物理存储数据。

图3-1说明了二者的关系。

图3-1数据文件和表空间

图3-1显示一个由两个数据文件组成的表空间。

数据文件是一种物理存储结构,由唯一一个表空间拥有。

表、索引等模式对象存储在数据文件中。

属于一个表空间的模式对象可以跨多个数据文件。

数据库、表空间、及数据文件关系密切,但是它们又具有以下重要区别:

●一个Oracle数据库是由一个或多个被称为表空间的逻辑存储单位构成的,这些表空间共同存储数据库的所有数据

●Oracle数据库的每个表空间由一个或多个被称为数据文件的物理文件构成,这些文件由运行的Oracle所在的操作系统管理。

●数据库的数据存储数据库每个表空间的数据文件中。

例如,一个最简单的Oracle数据库至少包含一个表空间及一个数据文件。

而另一个数据库可能有三个表空间,每个表空间由两个数据文件构成(即总共有六个数据文件)。

3.1.1Oracle管理文件

由Oracle管理文件避免了由DBA直接管理组成Oracle数据库的操作系统文件。

用户不必用文件名,而是以数据库对象的形式对文件进行管理操作。

Oracle内部使用标准文件系统接口来创建和删除以下各种数据库结构所需的文件:

●表空间(tablespace)

●重做日志文件(redologfile)

●控制文件(controlfile)

通过初始化参数,用户为一个特定类型的文件指定文件系统目录。

Oracle就可以据此自动地创建由Oracle管理的唯一的文件,并在不需要时将其删除。

另见:

●Oracle数据库管理员指南

●“自动存储管理”

3.1.2为数据库分配更多空间

表空间的容量等于构成此表空间的各个数据文件的容量。

而数据库的容量则等于构成此数据库的各个表空间的容量之和。

可以通过以下三种方式为数据库扩容:

●为表空间添加数据文件

●添加新的表空间

●增大数据文件的容量

当用户向已有表空间添加数据文件时,相当于为此表空间分配了更多的磁盘空间。

图3-2介绍了这种空间增长情况。

图3-2通过向表空间添加数据文件而为数据库扩容

图3-2显示使用一个SQL语句向表空间中添加数据文件:

ALTERTABLESPACEsystemADDDATAFILE'DATA2.ORA'。

表空间及数据库容量因添加的数据文件而增加

此外,用户还可以通过创建新的表空间(想当于至少向数据库中添加了一个数据文件)来扩大数据库容量。

见图3-3所示。

图3-3通过添加新的表空间而为数据库扩容

图3-3显示使用SQL语句添加一个新的表空间:

CREATETABLESPACEusersDATAFILE'DATA3.ORA'

扩大数据库的第三种方法是手工增大数据文件的容量或使表空间内的数据文件容量可以随需动态地增长。

用户可以为已有或新建的数据文件设置动态扩展属性。

见图3-4所示。

图3-4通过动态增大数据文件而为数据库扩容

图3-4显示使用SQL语句动态地增大数据库文件:

ALTERDATABASEDATAFILE'DATA3.ORAAUTOEXTENDONNEXT20MMAXSIZE1000M;

另见:

Oracle数据库管理员指南:

了解关于增大数据库容量的信息

3.2表空间概述

数据库是由一个或多个被称为表空间的逻辑存储单位构成。

表空间被分割成名为“段”的逻辑存储单位,段又可以继续划分为数据区间。

而数据区间是由一组连续的数据块构成。

本节包含以下与表空间相关的主题:

●大文件表空间

●SYSTEM表空间

●SYSAUX表空间

●撤销表空间

●默认临时表空

●使用多个表空间

●表空间内的空间管理

●多种数据块容量

●联机/脱机表空间

●只读表空间

●排序操作使用的临时表空间

●在数据库之间移动表空间

另见:

●第二章“数据块、区间、与段”了解关于段和区间的信息

●Oracle数据库管理员指南:

了解关于创建与配置表空间的详细信息

3.2.1大文件表空间

Oracle中可以创建大文件表空间。

这样Oracle数据库的表空间可以由一个单一的大文件构成,而不是若干个小数据文件。

使Oracle可以发挥64位系统的能力,创建、管理超大的文件。

在64位系统中,Oracle数据库的存储能力被扩展到了8EB(1EB=1024PB,1PB=1024TB,1TB=1024GB)。

使用Oracle管理文件,大文件表空间使数据文件对用户完全透明。

换句话说,用户只须针对表空间执行操作,而无须关心处于底层的数据文件。

使用大文件表空间,使表空间成为磁盘空间管理、备份和恢复等操作的主要单位。

使用大文件表空间,并与Oracle管理文件技术及自动存储管理技术相结合,通过消除增加新数据文件和维护众多文件的需求,进而简化数据文件管理工作。

系统默认创建的是小文件表空间,即Oracle表空间的传统类型。

SYSTEM和SYSAUX表空间类型在创建时总是使用系统默认类型。

大文件表空间仅支持本地管理的,且段空间自动管理的表空间。

但是有两个例外:

本地管理的撤销表空间和临时表空间,即使其段为手工管理,也可以使用大文件表空间。

一个Oracle数据库可以同时包含大文件和小文件表空间。

SQL语句执行时无需考虑表空间的类型,除非语句中显式地引用了数据文件。

创建一组临时表空间,使用户在需要时消费多个表空间的临时空间。

还可以指定表空间组为数据库默认的临时表空间。

当需要大量临时表空间进行排序操作时,大文件表空间是有用的。

3.2.1.1使用大文件表空间的优势

●大文件表空间可以显著地增强Oracle数据库的存储能力。

一个小文件表空间最多可以包含1024个数据文件,而一个大文件表空间中只包含一个文件,这个数据文件的最大容量是小数据文件的1024倍。

大文件表空间和小文件表空间的整体表空间能力是相同的。

然而,因为每个数据库最多可以使用64K数据文件,而大文件表空间的极限个数是小文件表空间的1024倍,因此使用大文件表空间时的总数据库容量比使用小文件表空间时高出三个数量级。

换言之,当一个Oracle数据库使用大文件表空间,且使用最大的数据块容量时(32K),其总容量可以达到8EB。

●在超大型数据库中使用大文件表空间减少了所需数据文件的数量。

也可以调整参数进而降低SGA空间关于数据文件的信息,以及控制文件的容量

●由于数据文件对用户透明,由此简化了数据库管理工作。

3.2.1.2使用大文件表空间时需要考虑的因素

●大文件表空间应该和自动存储管理或其它逻辑卷管理工具(logicalvolumemanager)配合使用,能够支持动态扩展逻辑卷和支持striping(数据跨磁盘分布)或RAID(独立磁盘冗余阵列)。

●避免在不支持striping的系统上使用大文件表空间,因为这将不利于并行执行及RMAN的并行备份。

●当表空间正在使用的磁盘组可能没有足够空间时,应避免使用大文件表空间。

且扩展表空间的唯一办法是在不同的磁盘组加入新的数据文件。

●不建议在不支持大文件的平台上使用大文件表空间,这会限制表空间的容量。

参考相关的操作系统文档了解其支持的最大文件容量。

●如果使用大文件表空间替代传统的表空间,数据库开启,checkpoints以及DBWR进程的性能会得到提高。

但是增加大文件的容量可能会增加恢复一个损坏的文件或创建一个新数据文件的时间。

另见:

Oracle数据库管理员指南:

了解关于创建、修改、管理大文件表空间的详细信息。

3.2.2SYSTEM表空间

每个Oracle数据库都包含一个名为SYSTEM的表空间,它在数据库创建时由Oracle自动创建。

只要数据库处于开启状态,SYSTEM表空间就一定是联机(online)的。

管理员可以创建本地管理的SYSTEM表空间,或将SYSTEM表空间管理的已有数据字典迁移为本地管理格式,以便发挥本地管理表空间的优势。

如果数据库中的SYSTEM表空间为本地管理的,那么此数据库中不能创建数据字典管理的表空间。

虽然用户可以通过可移动表空间(transportabletablespace)功能向其中添加数据字典管理的表空间,但这个表空间只能是只读的。

提示:

如果一个表空间是本地管理的,那么它不能回归为数据字典管理的。

3.2.2.1数据字典

SYSTEM表空间总是用于存储整个数据库的数据字典表。

数据字典表存储在datafile1中。

3.2.2.2PL/SQL程序结构描述

所有和PL/SQL程序单元(包括过程、函数、包及触发器)有关的数据都被保存在SYSTEM表空间中。

如果数据库包括很多程序单元,那么管理员必须为这些单元在SYSTEM表空间中提供足够的空间。

另见:

●Oracle数据库管理员指南:

了解如何创建SYSTEM表空间,以及如何将已有的数据字典管理的SYSTEM表空间转换为本地管理的

●“联机/脱机表空间”了解如何使SYSTEM表空间永久地处于联机状态

●第24章,“SQL、PL/SQLandJava”和第22章“Triggers”:

了解PL/SQL程序单元的空间占用情况。

3.2.3SYSAUX表空间

SYSAUX表空间是SYSTEM表空间的一个辅助性表空间。

Oracle中很多组件使用SYSAUX表空间作为默认的数据存储位置。

因此在10g数据库创建、或数据库升级时,一定会创建SYSAUX表空间。

●此外,SYSAUX表空间还被用来集中存储所有不应放在SYSTEM表空间的数据库元数据。

不论是依据模版建立的数据库(seeddatabase),还是用户定义的数据库,使用SYSAUX表空间可以减少默认创建的表空间数量。

●在正常的数据库操作中,不允许移除或重命名SYSAUX表空间。

SYSAUX表空间也不支持可移动表空间功能。

提示:

如果SYSAUX表空间失效,例如发生介质故障,那么有些数据库功能也会失效。

3.2.4撤销表空间

撤销表空间是一个特殊的表空间,只用于存储撤销信息。

用户不能在撤销表空间中创建其它段类型(例如表或索引)。

一个数据库中可以包含0个或多个撤销表空间。

在自动撤销管理模式下,每个Oracle实例有且仅有一个撤销表空间。

Oracle在撤销表空间内自动地创建和维护撤销段,对其中的撤销数据进行管理。

当事务内第一条DML语句运行时,系统就为其在当前撤销表空间中分配一个撤销段,同时也分配一个事务表。

在极少数情况下,如果实例没有指定撤销表空间,那么事务将使用系统的撤销段。

警告:

在创建第一个撤销表空间,且其联机之前,不要运行任何用户事务。

每个撤销表空间由一组撤销文件构成,且为本地管理的。

与其它表空间类型相似,撤销数据块在数据区间以组的形式存在,且每个数据区间的状态由位图表示。

在任意时间点上,一个数据区间可以被分配给一个事务表(被使用状态),也可以处于可用状态。

用户可以创建大文件撤销表空间。

另见:

“大文件表空间”

3.2.4.1创建撤销表空间

数据库管理员可以使用CREATEUNDOTABLESPACE语句单独创建撤销表空间,也可以在创建数据库创建同时通过CREATEDATABASE语句建立撤销表空间。

撤销表空间也使用一组数据文件存储数据。

与常规表空间一样,撤销表空间既可以用DROPTABLESPACE语句移除,其属性也可以通过ALTERTABLESPACE语句修改。

提示:

当撤销表空间正被实例使用,或者包含了事务恢复所需的撤销信息时,不能移除。

3.2.4.2分配撤销表空间

使用以下两种方法可以将撤销表空间分配给一个实例:

●在实例启动时。

用户可以在实例的初始化文件中指定一个撤销表空间,或指定由系统自动选择一个可用的撤销表空间。

●当实例运行时。

使用ALTERSYSTEMSETUNDO_TABLESPACE将当前活动的撤销表空间替换为另一个。

这种方式很少使用。

用户可以使用ALTERTABLESPACE语句向撤销表空间添加数据文件,以扩展撤销表空间的容量。

用户可以创建多个撤销表空间,以便切换使用。

用户也可以使用数据库资源管理器创建用户的撤销表空间使用配额。

用户还可以设定撤销信息的保存周期。

另见:

Oracle数据库管理员指南:

了解创建和管理撤销表空间的详细信息

3.2.5默认的临时表空间

如果SYSTEM表空间是本地管理的,当数据库创建时需至少定义一个默认的临时表空间。

本地管理的SYSTEM表空间不能作为默认的临时存储空间。

如果SYSTEM表空间由数据字典管理,且创建数据库时没有定义默认的临时表空间,那么Oracle将SYSTEM表空间作为默认的临时存储空间。

此时用户在ALERT.LOG文件中会发现一条警告:

建议创建默认的临时表空间,以后将会需要。

3.2.5.1如何指定默认的临时表空间

使用CREATEDATABASE语句创建数据库时,可以通过DEFAULTTEMPORARYTABLESPACE子句指定默认的临时表空间。

如果移除了所有默认的临时表空间,SYSTEM表空间将被用作默认的临时表空间。

可以创建大文件临时表空间。

大文件临时表空间使用临时文件代替数据文件。

提示:

不能将默认的临时表空间转为永久或脱机状态。

另见:

●Oracle数据库SQL参考:

了解如何定义、修改默认的临时表空间

●“大文件表空间”

3.2.6在数据库中使用多个表空间

一个非常小型数据库可能只需要使用SYSTEM;但是Oracle建议至少创建一个额外的表空间来存储用户数据,使之与数据字典信息分离。

这使用户在进行数据库管理操作时更灵活,并减少了由于数据字典对象与模式对象处于同一数据文件而导致的竞争(contention)。

用户可以利用多个表空间完成以下任务:

●控制数据库内数据的磁盘空间分配

●为数据库用户设定空间使用配额(quota)

●通过将个别表空间置于联机/脱机状态来控制数据的可访问性

●执行对数据库某部分的备份与恢复操作

●使数据存储可以跨多个设备,提升系统性能

数据库管理员可以对表空间进行以下操作:

●创建一个新的表空间

●为表空间添加数据文件

●设置或修改表空间内某段的默认段存储参数

●使一个表空间为只读(readonly)或可读写(read/write)

●将表空间设置为临时或永久

●重命名表空间

●移除表空间

3.2.7表空间内的空间管理

表空间在数据区间内分配空间。

Oracle采用两种方式监控表空间内空间的已用/可用情况:

●本地管理的表空间:

通过表空间管理数据区间

●数据字典管理的表空间:

通过数据字典管理数据区间

当用户创建表空间时,需要选择空间管理方式。

在此之后,还可以通过DBMS_SPACE_ADMINPL/SQL包改变管理方式。

提示:

当用户在创建表空间时没有指定数据区间的管理方式,默认使用本地管理。

另见:

“数据区间概述”

3.2.7.1本地管理的表空间

本地管理的表空间在每个数据文件中维护一个位图,记录此数据文件内数据块的状态(可用/占用),并据此管理表空间内的数据区间。

位图中的每一位代表一个或一组数据块。

当一个数据区间被分配或者被释放,Oracle改变位图的值,进而展示数据块新状态。

这些修改不会产生回滚信息,因为它们不会更新数据字典中的表(特殊情况除外,例如改变表空间的配额信息)。

本地管理的表空间与数据字典管理的表空间相比有如下优势:

●本地管理数据区间的分配,可以自动跟踪连续的可用空间[此处指数据块],避免了数据区间合并的需求。

●本地管理数据区间的分配,避免产生递归的空间管理操作。

在使用数据字典管理的表空间时,消耗或释放模式对象的数据区间可能会导致数据字典表或回滚段也产生消耗或释放空间的操作,即称为递归操作。

在本地管理状态下,每次分配的数据区间的容量可以由系统自动地决定。

此外,所有数据区间在本地管理表空间容量相同且可以覆盖对象存储参数。

在CREATETABLESPACE或CREATETEMPORARYTABLESPACE语句中使用LOCAL子句可以分别创建本地管理的永久表空间或临时表空间。

3.2.7.2本地管理的表空间中的段空间管理

通过CREATETABLESPACE语句创建一个本地管理的表空间时,使用SEGMENTSPACEMANAGEMENT子句来决定段内的可用/已用空间如何管理。

可选的方式有:

1、AUTO:

在这种设置下,Oracle使用位图管理段内的可用空间。

[注意此处的位图与本地管理的表空间使用的位图不一样]此处的位图,用于描述段内每个数据块是否有足够的可用空间来插入新数据。

随着数据块中可用空间的变化,它的新状态及时地反映到位图中。

Oracle使用位图可以更自动化地管理可用空间。

这种空间管理形式被称为自动段空间管理

本地管理的,且使用自动段空间管理的表空间,既可以被创建为小文件表空间(传统的),也可以是大文件表空间。

AUTO是默认值。

2、MANUAL:

在这种设置下,Oracle使用可用块列表(freelist)来管理段内的可用空间。

可用块列表记录了所有可以被用于插入新数据的数据块。

另见:

●Oracle数据库SQL参考:

查询语法

●Oracle数据库管理员指南:

了解更多关于自动段空间管理的信息

●“如何决定数据区间分配时的数量与容量”

●“排序操作使用的临时表空间”了解关于临时表空间的信息

3.2.7.3数据字典管理的表空间

如果用户的数据库是使用Oracle早期版本创建的,可能还在使用数据字典管理的表空间。

对于一个表空间,使用数据字典管理它的数据区间。

当发生数据区间的分配与回收时,Oracle会更新数据字典内相应的表。

Oracle也会存储数据字典表每次更新的回滚信息。

因为数据字典表与回滚段都是数据库的一部分,它们使用的空间如同其它数据一样,也必须进行空间管理操作。

3.2.8多种数据块容量

Oracle在数据库中支持多种数据块容量。

SYSTEM表空间使用标准数据块容量。

这个容量在数据库创建时被设定,可以为任何有效值。

通过DB_BLOCK_SIZE初始化参数,设定标准数据块容量。

合法的值(legitimatevalue)范围是2K到32K。

在初始化参数文件或服务器参数文件中,可以为数据缓存内的不同子缓存区设定不同的数据块容量。

子缓存区也可以在实例运行时配置。

此外还可以创建拥有不同数据块容量的表空间。

SYSTEM表空间及绝大多数表空间还是使用标准数据块容量。

提示:

表空间内一个分区对象的所有分区必须使用相同的数据块容量。

多种数据块容量主要用于从OLTP数据库向企业级数据仓库迁移表空间时使用。

这有助于在拥有不同数据块容量的数据库间迁移数据。

另见:

●“数据库缓存容量”

●“在数据库之间移动表空间”

●Oracle数据仓库指南:

了解如何在数据仓库环境中迁移表空间

3.2.9联机/脱机表空间

数据库管理员可以在数据库处于开启状态时,除SYSTEM表空间之外,任何表空间联机(可访问)或脱机(不可访问)。

SYSTEM表空间在数据库处于开启状态时总是联机状态,因为Oracle需要使用其中的数据字典。

表空间通常处于联机状态,以便数据库用户访问其中的数据。

但是数据库管理员可以在对表空间进行维护,备份或恢复操作时,令一个表空间脱机。

3.2.9.1令表空间脱机

当一个表空间脱机后,Oracle不允许任何后继SQL语句引用此表空间内的对象。

如果一个活动事务中的SQL语句正好在使用脱机状态表空间内的对象,其事务性也不会被破坏。

Oracle使用SYSTEM表空间内的延迟回滚段(deferredrollbacksegment)为此事务中已完成的SQL语句保存回滚信息。

当脱机表空间被重置为联机状态后,Oracle会在需要时应用这些回滚信息。

表空间联机或脱机时,SYSTEM表空间内的数据字典会进行记录。

如果用户关闭数据库时某个表空间处于脱机状态,那么这个表空间在数据库随后的装载、重打开后依旧保持脱机状态。

用户只能将一个表空间联机到创建它的数据库中,因为只有这个数据库的SYSTEM表空间中保存着与此表空间相关的必要的数据字典信息。

一个脱机的表空间不能被Oracle之外的工具打开或编辑。

因此脱机表空间不能被移动到其他数据库中。

当某些错误发生时,Oracle会自动地将相关的表空间从联机切换到脱机状态。

例如,当数据库写入进程(databasewriterprocess,DBWn)多次尝试向表空间的数据文件写入失败后,Oracle就会将此表空间切换到脱机状态。

此时尝试访问脱机表空间内数据表的用户将会得到错误信息。

如果是介质故障导致磁盘I/O失败,用户必须在处理故障后恢复受影响的表空间。

另见:

●“在数据库之间移动表空间”了解如何在数据库间移动联机表空间

●Oracle数据库工具:

了解关于数据传输工具的信息

3.2.9.2特殊情况下的表空间使用

用户可以将不同类型的数据分开存储在不同表空间中,可以为了多种程序把特定的表空间置于脱机。

其他表空间保持联机状态,且里面的信息仍可以被使用。

但是表空间脱机后也会导致特殊情况发生。

例如,有两个表空间分别用于存储表数据及索引数据,将出现以下问题:

●如果表空间包含的索引处于脱机状态,那么查询依旧可以访问表数据,因为对表数据的访问并不一定需要查询索引。

●如果表空间包含的表处于脱机状态,那么数据库中的表数据无法访问,因为访问数据需要表。

如果在联机表空间中,Oracle有足够信息来运行SQL语句,那么语句就将被执行。

如果相关信息必须从脱机的表空间中获得,那么语句将失败。

3.2.10只读表空间

只读表空间的主要目的是为了避免对静态、容量大的数据库进行备份和恢复操作。

Oracle不会更新只读表空间内的文件,因此这类表空间的文件可以放置在CD-ROM或WORM之类的只读介质上。

提示:

用户只能将一个表空间联机到创建它的数据库,因此只读表空间不适用于归档需求。

只读表空间不能被修改。

为了更新一个只读表空间,首先要使表空间可读/写。

更新表空间后,还可以将表空间恢复到只读状态。

因为只读表空间不能被修改,只要只读表空间没有置于可读写状态,就无需重复备份。

当用户需要恢复数据库时,没必要恢复只读表空间,原因同前所述。

另见:

●Oracle数据库管理员指南:

了解如何将表空间设置为只读或可读写模式

●Oracle数据库SQL参考:

了解如何使用ALTERTABLESPACE语句

●Oracle数据库备份与恢复高级用户指南:

了解更多关于数据库恢复的信息

3.2.11排序操作使用的临时表空间

用户为排序操作指定一个或多个专用的临时表空间,这可使排序操作所需的空间管理工作更高效。

这样做可以有效地消除频繁的排序空间分配与回收而造成的序

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 纺织轻工业

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1