表空间和数据文件

从逻辑上读,数据存储在段中;从物理上讲,数据存储在数据文件中。表空间实体是二者的抽象,一个表空间可能包含多个段,并由多个数据文件组成。段和数据文件没有直接关系。数据文件可以作为文件系统中的文件存在,从10G版本开始,也可以作为自动存储管理(ASM)设备上的文件而存在。

5.1.1 ORACLE 数据存储模型

将逻辑存储与物理存储分开是关系数据库范例的必要部分。关系数据库表明:编辑人员只处理逻辑结构,而让数据库去管理物理结构的映射。这意味着,可以重新组织物理存储,也可以将整个数据库移动到完全不同的硬件和操作系统上,而应用程序将意识不到任何更改。



表空间实体消除了段与数据文件之间的多对多关系。一个表空间可以包含多个段,而且可以由多个数据文件组成。这意味着,一个段可以分布在多个数据文件中,而任一数据文件可以包含多个段的全部或一部分。

下面总结了这些段类型,按DBA关注的程序排序

TABLE   这些是包含数据行的堆结构的表。

INDEX  索引是键值的有序列表,相应的指针ROWID指向每行的物理位置。

TYPE2UNDO  这些是撤销段,存储数据的更改前版本,为了提供完整性,这些是必需的。

ROLLBACK  总有一个回滚段保护用于创建数据库的事务

TABLE PARTITION可以将表分成多个分区。如果这样的话,分区将成为一个个的段,而表本身完全不是段:仅以分区总和的形式存在。

INDEX PARTITION 默认方式下,一个索引在一个段中,但是也可以对索引进行分区。如果对表进行分区,通常也会对这些表上的索引进行分区。

LOBSEGMENT,LOBINDEX,LOB PARTITION 

CLUSTER 

NESTED TABLE 


5.1.3 文件存储技术

数据文件可以保存在四类设备上:本地文件系统,群集文件系统,原始设备和ASM磁盘组。

本地文件系统上的文件

群集文件系统上的文件

原始设备上的文件

ASM设备上的文件


5.2 创建和管理表空间

表空间是模式数据的仓库,包括数据字典(是SYS模式)。所有数据库都必须有SYSTEM表空间和SYSAUX表空间,在实际中,还有临时表空间和撤销表空间。在创建数据库时,通常已经创建了这4个表空间。此后,DBA可能为用户数据创建更多表空间,为撤销和临时数据创建更多表空间。

可以使用Enerprise Manager Database Control 创建表空间

也可以用SQL创建:

create smallfile tablespace "NEWTS"

datafile 'd:\app\oracle\oratada\orcl11g\newts01.dbf '

size 100M autoextend on next 10m maxsize 200m

logging

extent management local

segment space management auto

default nocompress


5.2.2 更改表空间

创建后对表空间的常见更改如下:

重命名

使其联机或脱机

标记为读写或只读

重调大小

更改警报阈值

1 重命名表空间及其数据文件

语法如下

alter tablespace tablespaceoldname  rename to tablespacenewname

2 使表空间联机或脱机

联机表空间或数据文件可供使用。而脱机表空间或数据文件以数据字典中的定义形式存在,控制文件无法使用。可能出现这样的情况。表空间处于联机状态,而其中一个或多个数据文件处于脱机状态。这种情况通常应该避免。使表空间脱机的语法如下:

alter tablespace tablespacename offline |  normal  |  immediate  |  temporary |

3 将表空间标记为只读

alter tablespace tablespacename [ read only |  read write ]

在将表空间标记为只读后,将不能使用DML语句来更改其中的任何对象,但是,可以删除它们。

使表空间只读对备份和还原有好处。ORACLE 了解到表空间内容不能更改,因此不需要重复备份它们。

4 重新调整表空间的大小

要重调表空间的大小,可以向其添加数据文件,也可以调整现有数据文件的大小。如果在创建文件时使用AUTOEXTENT语法。则可以根据需要自动向上重调数据文件的大小。否则,必须使用ALTER DATABASE 命令手动更改:

ALTER DATABASE DATAFILE  filename resize a[M|G|T]

如:alter database datafile '/oradata/user02.dbf' resize 10M;

只有文件系统上的空间足够大,向上的重调大小才能成功;只有文件中的空间尚未由分配给段的区间使用时,才能向下重调大小。

要向表空间添加另一个50MB大小的数据文件,主使用下列语法:

alter tablespace storedata

add datafile 'C:\oracle\oradata\orcl11g\storedata_03.dbf ' size 50M;

可以添加自动扩展子句,或在后面使用下列命令自动自动扩展;

alter database datafile ' C:\oracle\oradata\orcl11g\storedata_03.dbf ' autoextend on next 50m maxsize 2g;

这使得文件大小翻番,一次性增加50MB

5 更改警报阈值

实例的MMON进程实时地监视每个表空间的满度。如果表空间的满度超过一定限度,MMON将发生警报。默认方式下,如果表空间的满度超过80%,将发生警报:如果满度超过97%,将发出严重警报。可按多种方式来查看警报,但最简单的方法莫过于查看database control 的数据库主页。

5.2.3删除表空间

要删除表空间,请使用DROP TABLESPACE 命令,语法如下:

DROP TABLESPACE tablespacename  [ INCLUDING CONTENTS AND DATAFILES] ;

如果未指定INCLUDING CONTENTS 关键字,但表空间中包含任何对象,那么删除操作将失败。使用这些关键字指示ORACLE 首先删除对象,然后删除表空间。即便如此,在一些环境下同样失败,如果表空间包含的表与另一个表空间的表存在外键关系,而且此表是交表,则删除将失败。

如果未指定AND DATAFILES 关键字,则将删除表空间及其内容,但数据库文件仍保存在磁盘上。ORACLE将不了解它们位于何处,必须使用操作系统命令删除它们。

5.2.4 OMF

有了ORACLE管理的文件(ORACLE-MANAGED FILES,OMF),DBA将不必了解有关文件系统的任何知识。将以完全自动的方式完成数据库文件的创建。要启用OMF,请设置一部分或下列实例参数

DB_CREATE_FILE_DEST

DB_CREATE_ONLINE_LOG_DEST_1

DB_CREATE_ONLINE_LOG_DEST_2

DB_CREATE_ONLINE_LOG_DEST_3

DB_CREATE_ONLINE_LOG_DEST_4

DB_CREATE_ONLINE_LOG_DEST_5

DB_RECOVERY_FILE_DEST

DB_CREATE_FILE_DEST 参数指定所有文件的默认位置。DB_CREATE_ONLINE_LOG_DEST_n参数指定联机重做日志文件的默认位置。DB_RECOVERY_FILE_DEST调协归档重做日志文件和备份文件的默认位置。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值