Oracle中的表空间
表空间是什么?
Oracle数据库包含逻辑结构和物理结构。
数据库的物理结构是指构成数据库的一组操作系统文件。
数据库的逻辑结构是指描述数据组织方式的一组逻辑概念及它们之间的关系。
表空间是数据库数据库逻辑结构的一个重要组件。表空间可以存放各种应用对象,如表、索引。而每个表空间由一个或多个数据文件组成。
表空间的分类
1.永久性表空间:
一般保存表、视图、过程和索引等的数据。SYSTEM、SYSAUX、USERS、TEMP表空间是默认安装的。
2.临时性表空间:
只用于保存系统中短期活动的数据,如排序数据等。
3.撤销表空间:
用来帮助回退未提交的事务数据,已提交了的数据在这里是不可以恢复的。一般不需要键临时和撤销表空间,除非把他们转移到其
他磁盘中以提高性能。
表空间的作用
1.对不同用户分配不同的表空间,对不同的模式对象分配不同的表空间,方便对用户数据的操作,对模式对象的管理。
2.可以将不同数据文件创建到不同的磁盘中,有利于管理磁盘空间,有利于提高I/O性能,有利于备份和恢复数据库。
Oracle 系统自动建立的表空间
一般在完成Oracle系统的安装并创建Oracle实例后,Oracle系统会自动建立多个表空间。
1.SYSTEM 表空间
SYSTEM表空间用于存放 Oracle系统内部表和数据字典的数据,如表名、列名、用户名等。不建议将用户创建的表、索引等对象存放到 SYSTEM表空间中。
2.SYSAUX表空间
SYSAUX表空间用于存放 Oracle系统内部的常用样例用户的对象。SYSAUX表空间一般不存储用户的数据,由 Oracle系统内部自动维护。
3.撤销表空间
撤销表空间用于存放撤销信息的表空间。当我们对数据库表的数据进行增加、删除、修改时,Oracle系统自动使用撤销表空间来临时存放修改前的数据。当
所做的修改操作完成并提交后,Oracle系统可根据需要保留修改前数据时间长短来释放撤销表空间的部分空间。一般在创建 Oracle实例后,Oracle系统自动
创建一个名字为“UNDOTBS1”的撤销表空间。
4.USERS 表空间
USERS表空间是 Oracle建议用户使用的表空间,可以在这个表空间上创建各种对象,如创建表、索引等。Oracle的基本样例用户 SCOTT的对象就存放在
USERS表空间中。
5.TEMP 表空间
TEMP表空间是 Oracle系统用于存放临时数据的特殊表空间。例如,当操作中需要进行排序时,Oracle系统就将排序的数据临时存放在该表空间内。排序处
理完成后即可释放排序数据所占用的空间,因此称之为临时表空间。
创建表空间
CREATE TABLESPACE tablespacename
DATAFILE
'filename' [SIZE integer [K | M]] [,...]
[AUTOEXTEND [OFF | ON]];
解释:
tablespacename是需创建的表空间名称。
filename是数据文件存放的路径和名称。
integer是你自己输入的一个数字,指定文件的大小,K是千字节大小,M是兆字节大小。
...(省略号)是指定组成表空间的另一个数据文件。创建表空间时可指定多个数据文件,每个数据文件之间用,(逗号)分割。
AUTOEXTEND用来启动或禁用数据文件的自动扩展,ON是空间使用完毕会自动扩展,OFF是不自动扩展。设置为OFF可能会出现表空间剩余容量
为0的情况,使数据不能存储到数据库中。
例:如下,创建一个名为tp_hr的表空间,有两个数据文件,自动扩展大小,初始大小是30M(兆)。
CREATE TABLESPACE tp_hr
DATAFILE
'd:\data\tp_hr01.dbf' SIZE 30M,
'd:\data\tp_hr02.dbf' SIZE 30M AUTOEXTEND ON;
查看表空间
SELECT file_name,tablespace_name,bytes,autoextensible
FROM dba_data_files
WHERE tablespace_name='tp_hr'; --根据表空间名称查询
调整表空间大小
方法一:更改数据文件的大小
ALTER DATABASE DATAFILE
'D:\DATA\tp_hr01.dbf' --指定文件路径
RESIZE 80M; --指定大小
方法二:向表空间内添加数据文件
ALTER TABLESPACE tp_hr --指定表空间的名称
ADD DATAFILE
'E:\DATA\tp_hr02.DBF' SIZE 20M --指定文件路径和大小
AUTOEXTEND ON; --自动扩展
删除表空间
方式1:
DROP TABLESPACE tp_hr; --删除名为tp_hr的表空间,但是这个语法只是将表空间和数据库的“联系”删除了,不会删除实际的数据文件。
方式2:
DROP TABLESPACE tp_hr INCLUDING CONTENTS; --删除名为tp_hr的表空间,并且把数据文件也删除掉。
(注意:删除表空间之前最好对数据库进行备份。)