ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 9.管理表空间和数据文件(笔记)

9.管理表空间和数据文件(笔记)

原创 Linux操作系统 作者:tonykorn97 时间:2006-04-14 00:00:00 0 删除 编辑

9.管理表空间和数据文件

表空间时数据库的逻辑组成部分,从物理上说,数据库数据存放在数据文件中,从逻辑上说,数据库数据存放在表空间(Table Space)中,表空间是由一个或者多个数据文件组成的.通过使用表空间,可以有效地部署不同类型的数据,加强数据管理,从而提高数据库运行性能.



表空间(Table Space)

表空间用于逻辑组织数据库数据,数据库逻辑上是由一个或多个表空间组成,而表空间物理上是由一个或多个数据文件组成的.表空间由以下作用.

通过表空间可以控制数据库所占用的磁盘空间.

通过表空间可以控制用户所占用的空间配额.

通过表空间,DBA可以将不同类型数据部署到不同位置,一方面可以提高I/O性能,另一方面有益于备份和恢复等管理操作!


数据文件(data file)

数据文件是表空间的物理组成部分,表空间与数据文件是一对多的关系,并且一个数据文件只能属于一个表空间.需要注意,一旦将数据文件追加到某个表空间后,就不能删除该数据文件了,要删除数据文件,只能删除其所属表空间.

数据文件使用原则如下:

1,大数据文件优于大量小数据文件

2,用CREATE DATABASE命令建立数据库时,使用永久参数MAXDATAFILES可以指定在控制文件中为数据文件预留的空间.默认值为32,通过重新建立控制文件可以修改永久参数的设置.

3,初始化参数DB_FILES限制了数据库可以同时打开的最大数据文件个数,如果数据文件个数达到了该参数限制,那么将无法建立新的数据文件.

4,从性能角度考虑,应该将数据文件和重做日志部署到不同磁盘,因为重做日志的I/O操作非常频繁,所有应将重做日志放到数据最快的磁盘设备上.


段(Segment)

段用于存储特定逻辑对象的所有数据,它是由一个或多个区组成的,当建立表,索引或簇时,oracle会为这些对象分配段,以存放它们的数据信息.并且段名与对象名完全不同.


表段(数据段):用于存放表的数据.当建立表EMP时,oracle会自动分配数据段EMP,并且表EMP的所有数据都存放在段EMP中!


索引段:用于存放索引的数据.当建立索引IND_ENAME时,oracle会自动分配索引段IND_ENAME


UNDO段:用于存放事务所修改数据的旧值.


临时段:用于存放排序操作所产生的临时数据.当执行排序操作时,如果临时数据超过排序区(SORT_AREA_SIZE)尺寸.则会将临时数据暂时存放到临时段,


区(Extent)

区由相邻的数据块组成,是oracle进行空间分配的逻辑单位,并且一个区只能唯一地属于一个数据文件.建立段时,oracle至少要为其分配一个区,当段不足以容纳新数据时,oracle会自动扩展该段,并且为其增加一个区.例如,当建立表EMP时,oracle会建立段EMP(假定初始尺寸为5M),当数据占满5M空间后,oracle会扩展段EMP,并为其分配一个区,以容纳更多数据.


Oracle 块

Oracle块也称为数据块,时oracle在数据文件上执行I/O操作的最小单位,取值一般为2K,4K,6K,8K,16K,32K等.假定数据块尺寸为2k,某用户执行语句SELECT * FROM EMP WHERE EMPNO=7788,返回数据仅仅为100个字节,那么服务器进程将2K数据到数据高速缓存,而不是100字节.

建立表空间

从10g开始,当数据库管理员执行CREATE DATABASE命令建立数据库时,oracle不仅会建立SYSTEM表空间,还会建立辅助表空间SYSAUX.

SYSTEM表空间:用于存放数据字典和SYSTEM回滚段.其管理方法类似于其他表空间,但数据库管理员不能修改SYSTEM表空间的名称,不能删除SYSTEM表空间,也不能使SYSTEM表空间脱机.

SYSAUX表空间:用于存放各种oracle产品和特征的信息.其管理方法类似于其他表空间. 但数据库管理员不能修改SYSAUX表空间的名称,不能删除SYSAUX表空间. SYSAUX表空间使10g的新特性.

当执行CREATE DATABASE 命令建立数据库时,除了可以建立SYSTEM和SYSAUX表空间,还可以建立UNDO表空间和默认临时表空间.为了简化表空间管理并提供性能.oracle建议将不同类型的数据部署到不同表空间上,因此,建立了数据库后,还应该建立其他表空间!

如:专门存放表段的数据表空间,存放索引的索引表空间,存放UNDO段的UNDO表空间,存放临时段的临时表空间,还可以建立存放应用工具表空间和存放LOB段数据的LOB表空间.


建立普通表空间使用CREATE TABLESPACE

建立大文件表空间使用CREATE BIGFILE TABLESPACE

建立UNDO表空间使用CREATE UNDO TABLESPACE

建立临时表空间时CREATE TEMPORARY TABLESPACE命令

建立本地管理表空间

本地管理(Local Managed)是oracle database 10g的默认空间管理方法.使用本地管理表空间时,oracle使用位图维护空闲区的信息.本地管理表空间由以下优点:


避免了递归的空间管理操作.在字典管理表空间上的分配和释放区会导致访问UNDO段和数据字典基表,而在本地管理表空间上的分配和释放区只需要修改其数据文件的相应位图值


降低了数据字典基表上的冲突.因为本地管理表空间的空闲空间记录被记录在数据文件位图上,所以分配和释放区不需要访问数据字典基表.


不需要合并空间碎片.本地管理表空间会自动跟踪并合并相邻空闲空间,而字典管理表空间则需要定期合并空间碎片.


建立本地管理表空间时,不能指定DEFAULT STORAGE 和 MINIMUM EXTENT子句.

西门举例说明建立本地管理表空间的方法.

1,使用UNIFORM选项指定区尺寸.

UNIFORM选项用于指定使用相同尺寸管理表空间,区默认尺寸为1M.如果指定其他尺寸,需要指定SIZE选项.示例如下:

CREATE TABLESPACE user01 DATAFILE ‘D:demouser01.dbf’

SIZE 2M UNIFORM SIZE 128K;

执行上面命令后,会建立名为USER01的表空间,该表空间的空间管理方式为本地管理,区尺寸为128k.

2,使用AUTOALLOCATE

AUTOALLOCATE选项用于指定区尺寸由系统自动分配.使用该选项时,用户不能指定区尺寸.

CREATE TABLESPACE user02 DATAFILE ‘D:demouser02.dbf’ SIZE 2M AUTOALLOCATE;

该表空间管理方式为本地管理,取尺寸由系统自动分配.


建立字典管理表空间

字典管理表空间(Dictionary-Managed Tablespace)是为了与早期的版本兼容而保留的空间管理特制.使用字典管理方式时,区由数据字典进行管理.需要注意,如果其他表空间要采用字典管理的方式,那么要求SYSTEM表空间必须采用字典管理方式.如果要建立字典管理表空间,必须指定EXTENT MANAGEMENT DICTIONARY选项.

CREATE TABLESPACE user03 DATAFILE ‘d:demousers.dbf’

SIZE 5M EXTENT MANAGEMENT DICTIONARY

DEFAULT STORAGE(

INITIAL 20K NEX 20K

MINEXTENTS 2 MAXEXTENTS 50

PCTINCREASE 50);

执行上述命令后,建立名为USER03的表空间,该表空间的空间管理方式为字典管理,区尺寸按照存储参数进行分配,EXTENT AMNAGEMENT DICTIONARY用于指定空间管理采用字典管理方式,DEFAULT STORAGE用于指定默认存储参数,INITIAL用于指定为段所分配的第一个区的尺寸,NEXT用于指定为段所分配的第二个区的尺寸. MINEXTENTS用于指定为段所分配的最小区个数,MAXEXTENTS用于指定段可占用的最大区个数,PCTINCREASE用于指定从第三个区开始每个区比前一个区尺寸所增长的百分比.


大文件表空间是10g的新特性,它只能包含一个数据文件,但其数据瓦那机的尺寸可达到4G个数据块.如果数据块尺寸为8K,那么大文件表空间的数据文件尺寸最大可以达到32T字节;如果数据块尺寸为32K,那么大文件表空间的数据文件最大尺寸可以达到128T字节.

大文件表空间的优点:

一个oracle数据库最多可以包含64K的数据文件,使用大文件表空间,可以显著地提高oracle数据库的存储能力.

大文件表空间可以监听oracle数据库的数据文件个数.


当建立大文件表空间时,不能指定EXTENT MANAGEMENT DICTIONARY和SEGMENT SPACE MANAGEMENT MAUNAL选项,并且只能指定一个数据文件.

CREATE BIGFILE TABLESPACE big_tbs DATAFILE ‘d:demobig.dbf’ SIZE 100G;

该表空间的管理方式为本地管理,区尺寸由系统自动分配.


UNDO表空间用于存储UNDO段,该表空间只能使用本地管理方式.需要注意,在UNDO表空间上不能建立永久对象(表,索引和簇).当执行CREATE DATABASE建立数据库时,可以建立UNDO 表空间,并且DBA可以使用该UNDO表空间来管理UNDO数据,但对于混合系统来说,使用多个UNDO表空间更加有利,建立了数据库后,使用CREATE UNDO TABLESPCE命令可以建立UNDO表空间.建立UNDO表空间时只能指定DATAFILE和EXTENT MANAGEMENT LOCAL选项.

CREATE UNDO TTABLESPACE undotbs2 DATAFILE ‘d:demoundotbs2.dbf’ SIZE 10M;

建立临时表空间(CREATE TEMPORARY TABLESPACE)

1,建立本地管理临时表空间,建立临时管理表空间时,使用UNIFORM选项可以指定区尺寸.需要注意,当建立临时表空间时,不能指定AUTOALLOCATE选项.

CREATE TEMPORARY TABLESPACE temp01

TEMPFILE ‘D:demotemp01.dbf’ SIZE 5M

UNIFORM SIZE 256k;


建立大文件临时表空间

从10g开始,允许使用CREATE BIGFILE TEMPORARY TABLESPACE命令建立只包含一个临时文件的大文件临时空间.

CREATE BIGFILE TEMPORARY TABLESPACE TEMP02

TEMPFILE ‘D:demotemp02.dbf’ SIZE 5M;

该表空间只能包含一个临时文件,并且其空间管理方式为本地管理.


使用临时表空间组

临时表空间组是多个临时表空间的集合,它使得一个数据库用户可以使用多个临时表空间,临时表空间组是oracle database 10g新增加的特性.它具有以下特点.

临时表空间组至少包含一个临时表空间

临时表空间组不能与任何表空间同名.

当指定数据库的默认临时表空间或用户的临时表空间时,可以直接指定临时表空间组.

使用临时表空间时,

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/312079/viewspace-245223/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论