###我所使用的系统为Linux AS 4U6数据库版本为10.2.0.1.0###
在这里,细说下表空间。
一个数据库可以有一个过多个表空间。
表空间是由一个或多个数据文件组成,里面存放了一个或多个段(segment)。
表空间以下面几种方式分类
1。按数据文件的类型分为
大文件表空间。
小文件表空间。
2。按管理方式分为
本地管理表空间
数据字典管理表空间
3。按类型分为
永久表空间
临时表空间
回滚段表空间
4。按存储的内容分为
系统表空间
*系统辅助表空间(SYSAUX TABLESPACE)
非系统表空间
先从文件类型看起。
按文件类型分为大文件表空间(bigfile tablespace)和小文件表空间(smallfile tablespace)
创建表空间的时候默认为小文件表空间(smallfile tablespace)。使用大文件表空间有如下好处:
1。在一个表空间里只有一个大的数据文件,以后不需要再去管理数据文件。
2。一个大的数据文件相当于1024个小的数据文件,这样一来,在一个块大小为32K时,整个数据库可以达到8EB。
--1EB=1024PB 1PB=1024TB 1TB=1024GB 1GB=1024MB 1MB=1024KB 1KB=1024B
3。使用一个大的数据文件可以代替多个小数据文件,这样对数据文件的管理就少多了。
4。当打开数据库,发生检查点,执行DBWR进程时使用大文件表空间会增强性能。使用大文件表空间需要注意的地方:
1。要使用在ORACLE的ASM(自动存储管理)的存储空间或者分散(striping)存储的LVM中,或者RAID阵列上。
--为了提高I/O速度。
2。不要把大文件表空间建立在不能分散(striping)存储的系统上。
3。不要把大文件表空间建立在没有空间(剩余空间少)的磁盘组上。
4。建立大文件表空间时不推荐建立在不能扩展的存储空间里。#大文件表空间只支持本地管理表空间(LMT)和本地段空间管理(ASSM)。
#在临时表空间与回滚段表空间,只能用手动段空间管理。
#自动扩展数据文件必须是起用的,而且最大文件大小必须是不限制。
#系统表空间和系统辅助(SYSAUX)表空间不能使用大文件表空间。
按管理方式看一下。
本地管理表空间:一种比较先进的管理扩展(extent)的方式。是用bitmap来管理表空间里的所有的extent。
当使用本地管理表空间时是使用6个块(从第三个到第八个)来标识整个表空间里的每一个扩展(extent)。
其中的每一位(bit)来表示每个扩展的状态。1为已被分配,0为可被分配。在本地管理表空间的方式里可以选择每个extent的大小是固定(Uniform)的或是自动的。
在自动管理,系统一般是刚开始一个extent8个block,然后逐渐增加。
固定大小为每个extent都是固定大小的,推荐使用。当使用本地管理表空间时还分为自动管理段(segment)空间和手动管理段空间。
##在临时表空间和回滚段表空间没有这个选项,只能使用手动管理段空间。
##关于这两种方式,在别的文档会详细讲到。字典管理表空间:这种方式是为了与之前版本兼容而提供的。不推荐使用
在这种方式下,关于扩展(extent)的分配,会分为如下几个参数来管理。
Initial Size:初始分配扩展(extent)的大小。
Next Size:第二个开始分配时的大小
Minimum Size:最小分配大小
Increment size (%):下一次分配时比先前增加多少
Minimum Number:最少个数
Maximum Number:最多个数系统表空间为本地管理方式的话,其他的表空间是不能使用字典管理的。
从字典管理表空间可以转到本地管理,但从本地管理不能转到字典管理。10G里是不能创建字典管理表空间的,只能倒入。
因此在这里不深入研究。
按类型看一下。
永久表空间:一般存储数据的表空间
系统表空间,普通用户使用的表空间都为永久表空间。
只要是要保留的数据,都得放在这里。永久表空间的状态有三种:读写,只读,脱机。
只有在永久表空间,才能配置ASSM管理模式。
可以设置记录日志模式。建立选yes,以便数据库出问题后进行恢复。可以设置为系统默认表空间。这样,创建用户时,没有指定默认表空间,就自动设置为系统默认表空间。
##设置默认表空间的命令:ALTER DATABASE DEFAULT TABLESPACE ;在永久表空间里,分系统表空间和非系统表空间。
系统表空间-存放数据字典等重要的表,一般用户是没有权限修改(或者访问)。
非系统表空间-普通用户用来存放数据的表空间。
临时表空间:一般用来排序时使用。
当进行排序时,PGA区域的资源会不够,这时候会使用临时表空间的空间来进行排序。
临时表空间里不存放实际的数据,所以,即使出了问题,也不需要恢复,而且,也不需要备份,因此也不需要记录日志。
临时表空间只能使是读写模式,而且只能为手动管理段空间模式。
可以设置为系统默认临时表空间。这样,创建用户时,没有指定默认临时表空间,就自动设置为系统默认临时表空间。
##设置默认表空间的命令:ALTER DATABASE DEFAULT TEMPORARY TABLESPACE ;回滚段表空间:用来存放修改中数据的原数据。
回滚段表空间是用来保证数据读一致性的。
或者当一个事务要回滚时,得把回滚段表空间的内容重新拿到原先的表里。##关于回滚段表空间会有单独的讲解。
这里简单的说明了一下表空间的分类,各个的特点等。
关于创建表空间的详细方式,请看"表空间创建SQL语句"