1、数据库由一个或多个表空间组成。

2、表空间由一个或多个数据文件组成,这些文件可以是文件系统中的cooked文件、原始分区(裸设备)、ASM或集群上的文件。

3、段(table、index等)由一个或多个区组成,段在表空间中,因为区可能分布在表空间中不同的数据文件上,所以段可能包含一个表空间上多个数据文件上的数据,另一般创建一个对象便会创建一个段,占用存储空间的每一个对象都会对应一个段,如创建一个表或索引,便会生成表段、索引段,另还会有

回滚段,临时段等。

4、区是文件中一个逻辑上连续分配的空间,区是ORACLE中最小的分配单元,但区所在的数据文件并不连续的,甚至是跨磁盘分区的,一般一个段至少有一个区,11G R2引入延迟段的概念,一个段创建好后并不会立即分配区,只有等对象大小超过其初始区时才会分配第二个或更多的区。

5、块是ORACLE中最小的磁盘操作IO单位,区是由连续分配的块组成的!创建表空间时可以指定块大小,也说明在同一个表空间里块大小是相同的,但不同的表空间有可能块大小不一样!每个块的块头包含一个事务表ITL,每个操作该块的事务都会在这个事务表中记录,当有新的事务要修改该块时会首先扫描ITL,如果有别的事务在修改该块想同的行,则此事务等待,另外ITL中记录了指向固定UNDO条目的指针,为了保证数据读一致性,select等查询会从通过扫描ITL来查询UNDO表空间保存此块旧值的具体位置。开始一个事务后,会在要修改的数据块的块头的事务表ITL里和UNDO段的回滚段的段头块的事务槽二个位置写上事务信息记录。


区管理:1、数据字典

     2、本地(local)(1)自动 (autoallocate)(2)统一(uniformsize)

CREATE TABLESPACE lmtbsb DATAFILE '/u02/oracle/data/lmtbsb01.dbf' SIZE 50M

EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128k;


段管理:1、MSSM 手动管理,采用位图管理段的存储空间,可手动设置freelists,pctused,pctfree等参数,

               2、ASSM 自动管理,采用FREELIST管理段的存储空间,只需设置pctfree参数

Specify AUTO if you want the database to manage the free space of segments in the tablespace using a bitmap. If you specify AUTO, then the database ignores any specification forPCTUSED, FREELIST, and FREELIST GROUPS in subsequent storage specifications for objects in this tablespace. This setting is called automatic segment-space management and is the default.


表空间管理:1、数据字典,在数据字典中管理表空间的分配,参数设置不恰当会产生磁片,

                       2、本地,在数据文件中使用位图来管理表空间分配,表空间所有区的分配情况保存在该表空间对应的数据文件的头部,优点:速度快,存储空间的分配和回收只是简单的改变数据文件中的位图,而不像数据字典管理方式需修改数据库,另外不会产生碎片!


表空间的管理原则:
1、创建多个表空间
       将数据字典与用户数据分别存放在不同的表空间中,避免同时访问一个表空间产生访问冲突
       将不同应用的数据存放在不同的表空间,保证各类应用数据的独立性。避免由于一个表空间脱机,导致多个应用程序受到影响。
       将不同表空间放在不同的硬盘上,均衡磁盘I/0操作。
       将UNDO数据与用户数据分别存储,防止由于硬盘损坏导致数据永久丢失。
       当一些表空间联机时,可以将另外的表空间设为脱机,提高数据库性能。
       为某种特殊用途专门设置一个表空间,比如频繁的更新操作,或者临时段的存储。专门设置的表空间可以优化表空间的使用效率。
由于某些操作系统对一个进程可以同时打开的系统文件数据具有限制,从而影响同时联机的表空间数量,尽量让表空间使用较少的数据文件。因此在创建表空间时,应当为表空间分配足够大的数据文件,或将数据文件设置为自动增长方式,而不要让一个表空间使用很多较小的数据文件。