表空间用于存放数据库对象(如表、索引等)。一个数据库逻辑上由一个或者多个表空间组成。表空间由一个或者多个数据文件(物理结构)组成。数据库对象实际上存放在数据文件中,数据文件是数据的物理载体。表空间的尺寸是组成这个表空间的所有数据文件的尺寸之和。 数据库中有以下类型的表空间:永久表空间(常规表空间)、临时表空间、回滚表空间。
1、创建表空间
CREATE TABLESPACE userdb DATAFILE ‘F:/NEWDB\ZDB\userdata1’ SIZE 200M AUTOEXTEND ON NEXT 20M MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO DEFAULT;
注:
EXTENT MANAGEMENT LOCAL表示这是一个本地管理的表空间。使用位图对区进行管理,是oracle推荐使用的方式。
SEGMENT SPACE MANAGEMENT AUTO DEFAULT标识使用段的自动管理,使用位图来管理段中的数据块。
一个数据库有多个数据文件。每个数据文件都是一个操作系统文件。数据文件是真正存放数据库的数据。数据库中的表(table)、索引(indexes)的数据,物理上存放在数据文件中。一个数据文件有多个操作系统块组成。一个数据文件只能属于一个表空间,一个数据文件只能属于一个数据库。数据文件可以被设置成自动扩展,当文件上的空间使用完以后,它可以根据需要自动扩展。
2、 扩展表空间
增加表空间中数据文件的大小
ALTER DATABASE DATAFILE ‘d:\new\product1’ RESIZE 1000M;
将数据文件设置成自动扩展
ALTER DATABASE DATAFILE ‘d:\new\product’ AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED;
往表空间中增加数据文件
ALTER TABLESPACE userdb ADD DATAFILE ‘d:\new\p2.ora’ SIZE 100M;
3、 表空间离线\在线
表空间离线的三种方式:
NORMAL:常规离线方式,会执行校验点(checkpoint),是一种比较安全的方式。
ALTER TABLESPACE userdb OFFLINE NORMAL;
TEMPORARY:数据文件有错误时,应使用这种方式。
ALTER TABLESPACE userdb OFFLINE TEMPORARY;
IMMEDIATE:离线数据文件,但是不会产生校验点,表空间重新在线时,需要执行恢复。
ALTER TABLESPACE userdb OFFLINE IMMEDIATE.;
使表空间在线
ALTER TABLESPACE userdb ONLINE;
注意:SYSTEM表空间不能离线,并且表空间离线具有一定的风险性。
4、 表空间重命名
ALTER TABLESPACE userdb RENAME TO userdb2;
注意:
不能重命名SYSTEM、SYSAUX表空间
如果表空间离线或者表空间中有数据文件离线,表空间不能被重命名。
5、 使表空间只读\读写
ALTER TABLESPACE userdb READ ONLY;
ALTER TABLESPACE userdb READ WRITE;
6、 删除表空间
删除表空间必须具有DROP TABLESPACE权限。如果表空间中有内容,必须使用选项INCLUDING CONTENTS.
DROP TABLESPACE userdb [INCLUDING CONTENTS AND DATAFILES]
7、 大文件表空间
CREATE BIGFILE TABLESPACE biguserdb DATAFILE ‘F:\NEWDB\ZDB\userdata! SIZE 50G;
8、 表空间加密
加密算法:3DES168、AES128、AES192、AES256.
CREATE TABLESPACE securespace DATAFILE ‘F:\NEWDB\ZDB\userdata1’ SIZE 100M ENCRYPTION USING ‘AES256’ DEFAULT STORAGE(ENCRYPT);
9、 其他
查询数据库中表空间
SELECT TABLESPACE_NAME FROM DBA_TABLESPACE;
查询表空间的数据文件
SELECT FILE_NAME FROM DBA_DATA_FILES WHERE TABLESPACE_NAME=’SYSTEM’;
查询创建表空间的sql语句
SELECT DBMS_METADATA.GET_DDL(‘TABLESPACE’, ‘SYSTEM’) FROM DUAL;