ORACLE表空间详解
表空间概念
ORACLE数据库被划分成称作为表空间的逻辑区域——形成ORACLE数据库的逻辑结构。
一个ORACLE数据库能够有一个或多个表空间,而一个表空间则对应着一个或多个物理的数据库文件,但一个数据库文件只能与一个表空间相联系。表空间是ORACLE数据库恢复的最小单位,容纳着许多数据库实体,如表、视图、索引、聚簇、回退段和临时段等。
每个ORACLE数据库均有SYSTEM表空间,这是数据库创建时自动创建的,用于存储系统的数据字典表、程序单元、过程、函数、包和触发器等。SYSTEM表空间必须总要保持联机,因为其包含着数据库运行所要求的基本信息(关于整个数据库的数据字典、联机求助机制、所有回退段、临时段和自举段、所有的用户数据库实体、其它ORACLE软件产品要求的表)。
表空间类型
永久性表空间:一般保存表、视图、过程和索引等的数据。
临时性表空间:只用于保存系统中短期活动的数据。
撤销表空间:用来帮助回退未提交的事务数据。
表空间作用
表空间的作用能帮助DBA用户完成以下工作:
1. 决定数据库实体的空间分配
2. 设置数据库用户的空间份额
3. 控制数据库部分数据的可用性
4. 分布数据于不同的设备之间以改善性能
5. 备份和恢复数据。
用户创建其数据库实体时,必须给予表空间中具有相应的权力,所以对一个用户来说,其要操纵一个ORACLE数据库中的数据,应该:
1. 被授予关于一个或多个表空间中的RESOURCE特权
2. 被指定缺省表空间
3. 被分配指定表空间的存储空间使用份额
4. 被指定缺省临时段表空间,建立不同的表空间,设置最大的存储容量。
操作示例
1. 创建表空间
语法:
CREATE TABLESPACE 表空间名 DATAFILE '数据文件路径' SIZE 大小 [AUTOEXTEND ON] [NEXT 大小] [MAXSIZE 大小];
说明:
[ ]里面内容可选项,数据文件路径中若包含目录需先创建
SIZE 为初始表空间大小,单位为K或者M
AUTOEXTEND 是否自动扩展,值为ON或OFF
NEXT 为文件满了后扩展大小
MAXSIZE 为文件最大大小,值为数值或UNLIMITED(表示不限大小)
示例:
CREATE TABLESPACE ts_test DATAFILE 'D:\oracle_tablespace\ts_test.dbf' SIZE 20M AUTOEXTEND ON;
2. 查询表空间
示例:
--管理员角色查看表空间 SELECT file_name, tablespace_name, bytes, autoextensible FROM dba_data_files WHERE tablespace_name = 'ts_test';
3. 修改表空间
语法:
ALTER TABLESPACE 表空间名 ADD DATAFILE '文件路径' SIZE 大小 [AUTOEXTEND ON] [NEXT大小] [MAXSIZE 大小];
示例:
ALTER TABLESPACE ts_test ADD DATAFILE 'D:\oracle_tablespace\ts_test2.dbf 'SIZE 5M AUTOEXTEND ON;
4. 删除表空间
语法:
--仅删除表空间 DROP TABLESPACE 表空间名; --删除表空间及数据文件 DROP TABLESPACE 表空间名 INCLUDING CONTENTS AND DATAFILES;
示例:
--仅删除表空间 DROP TABLESPACE ts_test; --删除表空间及数据文件 DROP TABLESPACE ts_test INCLUDING CONTENTS AND DATAFILES;