一、表空间概念
1、数据库与表空间
表空间是数据库的逻辑存储空间,用户存放数据库的对象,一个数据库可以由多个表空间来构成。
2、表空间与数据文件
表空间是由一个或多个数据文件构成的。数据文件的位置和大小可以由用户自定义。所存储的表、数据库中的一些其他对象,都是存放在表空间的数据库文件中。
二、表空间的分类
1、永久表空间
数据库中需要永久存储化的对象,如:表、视图、存储过程等这些对象。
2、临时表空间
主要用于存放数据库操作过程中,中间执行的过程。当执行结束之后,存放的内容就会被自动释放,不进行永久性的保存。
3、UNDO表空间
用于保存事务所修改数据的旧值(被修改之前的数据),如:对一张表进行修改时,它会对修改之前的信息进行保存,这样可以对数据进行回滚(撤销操作)。
三、表空间作用
1、SYSTEM
主要用于存放“sys”用户的表、视图和存储过程等数据对象。被称为“系统表空间”。
2、SYSAUX
system表空间的辅助表空间,例如存放一些报告信息等
3、UNDOTBS1
用于存储撤销类信息的表空间。
4、TEMP
用于存储SQL语句处理表的临时表空间
5、USERS
属于一个永久性表空间,主要用于存储数据库用户创建的数据库对象,与“SYSTEM”表空间类似
四、查看用户的表空间
1、dba_tablespaces
数据字典
2、user_tablespaces
数据字典
3、dba_users数据字典
4、user_users数据字典
五、设置用户的默认或临时表空间
ALTER USER username
DEFAULT | TEMPORARY
TABLESPACE tablespace_name
例如:设置system的默认或临时表空间
alter user system
default tablespace system;
select default_tablespace,temporary_tablespace from dba_users where username='SYSTEM';
六、创建表空间
CREATE [TEMPORARY] TABLESPACE
tablespace_name
TEMPFILE | DATAFILE ‘xx.dbf’SIZE xx
1、永久表空间
conn system/Oracle12c
create tablespace test1_tablespace
datafile 'test1file.dbf' size 10m;
2、临时表空间
create temporary tablespace temptest1_tablespace
tempfile 'tempfile1.dbf' size 10m;
3、查看所创建的永久表空间
desc dba_data_files
select file_name from dba_data_files
where tablespace_name ='TEST1_TABLESPACE';
4、查看所创建的临时表空间
desc dba_temp_files
select file_name from dba_temp_files
where tablespace_name ='TEMPTEST1_TABLESPACE';
七、修改表空间
1、修改表空间的状态
(1)设置联机或脱机状态
ALTER TABLESPACE tablespace_name
ONLINE | OFFLINE;
修改永久表空间的状态为“脱机状态”
alter tablespace test1_tablespace
offline;
修改永久表空间的状态为“联机状态”
alter tablespace test1_tablespace
online;
(2)设置只读或可读写状态
需处于“联机”状态修改,默认的联机状态为“READ WRITE”状态
ALTER TABLESPACE tablespace_name
READ ONLY | READ WRITE;
修改永久表空间的状态为“只读状态”
alter tablespace test1_tablespace
read only;
修改永久表空间的状态为“读写状态”
alter tablespace test1_tablespace
read write;
2、查看表空间的状态
select status
from dba_tablespaces
where tablespace_name = 'TEST1_TABLESPACE';
(1)查看联机或脱机状态
(2)查看只读或可读写状态
八、修改数据文件
1、增加数据文件
ALTER TABLESPACE tablespace_name
ADD DATAFILE ‘xx.dbf’SIZE xx;
添加:
alter tablespace test1_tablespace
add datafile 'test2_file.dbf' size 10m;
查看:
select file_name from dba_data_files
where tablespace_name ='TEST1_TABLESPACE';
2、删除数据文件
ALTER TABLESPACE tablespace_name
DROP DATAFILE ‘filename.dbf’
删除数据文件需注意,不能删除表空间创建时的第一个数据文件,如需删除,需要删除表空间
alter tablespace test1_tablespace
drop datafile 'test2_file.dbf';
九、删除表空间
DROP TABLESPACE
tablespace_name [INCLUDING CONTENTS]
如果只是需要删除表空间,不需要删除数据文件不需要添加INCLUDING CONTENTS
如果需要删除表空间和数据文件需要添加INCLUDING CONTENTS
drop tablespace test1_tablespace including contents;