oracle数据表空间管理
概述
oracle数据库使用块,区,段,表空间对数据进行管理。
块是oracle数据的存储基础,是数据存储的最小单位。这里数据库块比不等同与操作系统中磁盘的块。oracle的块可以通过DB_BLOCK_SIZE指定数据库块的大小。
区:可以理解为若干个连续的块,区是oracle分配空间的最小单元。
段:指的是代表一个对象的一组分区,这个对象指的是一个表,一个索引或者其他对象等等。
表空间:表空间逻辑上由一组段构成,一个表空间中可以包含一个或多个数据文件。
oracle中表空间通常有以下几种类型:
Sytem表空间
Sysaux表空间
undo表空间
临时表空间
数据表空间
2 数据表空间管理
2.1 创建表空间
create tablespace test02 datafile '/oradata/data/test01.dbf' size 500M
extent management local
autoallocate 500M
segment space management auto;
以上的语句含有两方面的意思oracle的1)表空间位本地管理2)区大小管理方式为自动管理
1)
extent management local :指定表空间中区的管理方式为本地管理。oracle表空间信息管理方式主要分为字典管理方式和本地表空间管理
字典管理(DMT):
oracle将表空间信息维护在oracle的数据字典中,空闲空间被记录在SYS.FET$表中,已使用空间记录在SYS.UET$表。
创建语句如下:
EXTENT MANAGEMENT DICTIONARY
本地表空间(LMT):
oracle将以位图方式管理数据文件的表空间中那些块空闲那些块已被占用。表空间的位图信息存储在表空间的一个数据文件文件中。自从oracle9i开始oracle默认表空间管理方式为本地管理。相比较于DMT,LMT具有以下优势:
1.减少了递归空间管理
本地管理表空间是自己管理分配,而不是象字典管理表空间需要系统来管理空间分配,本地表空间是通过在表空间的每个数据文件中维持一个位图来跟踪在此文件中块的剩余空间及使用情况。并及时做更新。这种更新只对表空间的额度情况做修改而不对其他数据字典表做任何update操作,所以不会产生任何回退信息,从而大大减少了空间管理,提高了管理效率。同时由于本地管理表空间可以采用统一大小分配方式(UNIFORM),因此也大大减小了空间管理,提高了数据库性能。
2.系统自动管理extents大小或采用统一extents大小
本地管理表空间有自动分配(AUTOALLOCATE)和统一大小分配(UNIFORM)两种空间分配方式,自动分配方式(AUTOALLOCATE)是由系统来自动决定extents大小,而统一大小分配(UNIFORM)则是由用户指定extents大小。这两种分配方式都提高了空间管理效率。
3.减少了数据字典之间的竞争
因为本地管理表空间通过维持每个数据文件的一个位图来跟踪在此文件中块的空间情况并做更新,这种更新只修改表空间的额度情况,而不涉及到其他数据字典表,从而大大减少了数据字典表之间的竞争,提高了数据库性能。
4.不产生回退信息
因为本地管理表空间的空间管理除对表空间的额度情况做更新之外不修改其它任何数据字典表,因此不产生回退信息,从而大大提高了数据库的运行速度。
5.不需合并相邻的剩余空间
因为本地管理表空间的extents空间管理会自动跟踪相邻的剩余空间并由系统自动管理,因而不需要去合并相邻的剩余空间。同时,本地管理表空间的所有extents还可以具有相同的大小,从而也减少了空间碎片。
6.减少了空间碎片
7.对临时表空间提供了更好的管理
2)
autoallocate 500M:分配区尺寸大小有oracle自动管理。oracle分配区的方式有自动分配和统一尺寸两种方式
自动分配(autoallocate ):
oracle默认的分配的方式,oracle自动管理区的大小,随着数据库的增长区的大小也会随着增长。数据库根据段的增长模式决定一个对象新区的尺寸的是多少。
统一尺寸(UNIFORM):
如果知道了对象的精确空间需求,则可以选择UNIFORM选项,相比于autoallocate,UNIFROM效率更高。分配区的尺寸规格通常为64k,1MB,64MB。
create tablespace test02 datafile 'oradata/data/test01.dbf' size 100m uniform size 1m;
创建统一尺寸的表空间
2.2增加表空间大小
通过新增数据文件来增加表空间
alter tablespace test02 add datafile 'oradata/data/test02.dbf' size 100m;
通过调整当前数据文件大小来增加表空间
alter database datafile 'oradata/data/test02.dbf' resize 1000m;
2.3删除表空间
1)简单的删除表空间
drop tablespace test02;
如果test02表空间中包含了表和索引,这种删除表空间的方式便会报错。
2)删除表空间和表空间中的内容但是数据文件不会被删除
drop tablespace test02 including contents;
3)删除表空间,表空间中的内容和数据文件
drop tablespace test02 including contents and datafiles;
4)如果其他表中存在指向表空间中表的引用完整性约束
drop tablespace test02 cascade constraints;
2.4表空间脱机
表空间脱机可以使表空间对用户暂时失效。如果表空间中一个数据文件包含错误,或者正在修改某个应用的代码往往都需要是表空间脱机
alter tablespace test02 offline normal;
除了normal外还有temporary和immediate选项
浙公网安备 33010602011771号