(一) 数据库文件系统
在 Oracle 中,可以用4 种文件系统机制存储数据。(一个数据库中可能包含下述所有类型文件)
·“Cooked”操作系统(OS)文件系统这些文件存放在OS的文件系统中。可以使用OS工具来移动文件。Cooked 文件系统通常也会缓存,这说明在你读写磁盘时,OS会为你缓存信息。
·原始分区(raw partitions,也称裸分区)
这不是文件,而是原始磁盘。不能用OS工具查看其内容。它们就是磁盘上的一些大扇区,上面没有任何文件系统。对Oracle来说,整个原始分区就是一个大文件。这与cooked 文件系统不同,cooked 文件系统上可能有几十个甚至数百个数据库数据文件。目前,只有极少数Oracle安装使用原始分区,因为原始分区的管理开销很大。原始分区不是缓冲设备,所完成的所有I/O 都是直接I/O,对数据没有任何OS 缓冲(不过,对于数据库来说,这通常是一个优点)。
·自动存储管理文件系统(Automatic Storage Management,ASM)
这是Oracle 10g Release 1 的一个新特性(标准版和企业版都提供了这个特性)。ASM是专门为数据库设计的文件系统。可以简单地把它看作一个数据库文件系统。
·集群文件系统
这个文件系统专用于RAC(集群)环境,看上去有些像由集群环境中多个节点(计算机)共享的cooked 文件系统。Oracle 集群文件系统(Oracle Cluster File System,OCFS)是Oracle在这个领域推出的一个新的文件系统,目前只能在Windows和Linux上使用。其他第三方开发商也提供了一些经认证的集群文件系统,也可以用于Oracle。集群文件系统让cooked 文件系统的优点延伸到了集群环境中。
(二) Oracle的存储体系
Oracle的存储体系总结如下:
(1) 数据库由一个或多个表空间(Tablespace)组成。
(2) 表空间由一个或多个数据文件组成。这些文件可以是文件系统中的cooked 文件、原始分区、ASM管理的数据库文件,或集群文件系统上的文件。表空间包含段(Segment)。
(3) 段(TABLE、INDEX 等)由一个或多个区段(Extent)组成。段在表空间中,但是可以包含这个表空间中多个数据文件中的数据。
(4) 区段是磁盘上一组逻辑连续的块(Block)。区段只在一个表空间中,而且总是在该表空间内的一个文件中。
(5) 块是数据库中最小的分配单位,也是数据库使用的最小I/O单位。
通常Oracle从磁盘读写的就是块。
一个数据库中允许有多种块大小,目的是为了可以在更多的情况下使用可传输的表空间。如果能传输表空间,DBA就能从一个数据库移动或复制格式化的数据文件,把它放在另一个数据库中。
数据库还有一个默认的块大小,即执行CREATE DATABASE命令时初始化文件中指定的大小。SYSTEM表空间总是使用这个默认块大小。
可以按非默认块大小创建其他表空间。在所有给定的表空间内部,块大小都是一致的。
(三) 表空间 Tablespace
tablespace是Oracle空间管理上的逻辑单位,实体上存放数据的是tablespace里面的Data File。
所以tablespace可以看成是Data File的群组。
tablespace可进一步分为段segments、区段extents和块blocks。
一个datafile只属于一个数据库的一个tablespace。
当数据库刚建立起来,系统会建立一个叫做SYSTEM的系统tablespace,存放SYS、SYSTEM等User重要的系统数据。
创建数据库后,需要创建一个表空间,例如USERS,然后
alter database default tablespace users;
给数据库指定一个默认表空间。(否则会使用SYSTEM作为默认表空间,这很不好)
如果我们建立Oracle User时,不指定默认的tablespace,
则此User则会以USERS作为默认表空间。
创建表格时,如果不指定所用的表空间,就会使用用户的默认表空间。
表空间类型
1)Permanent
一般我们创建的表空间都是Permanent表空间。
2)Undo
Undo tablespace是系统用的特殊的tablespace,
主要的功用是提供用户修改数据未c