-
回滚表空间是一个特殊的表空间,回滚表空间只能用于存放回滚段。不能在回滚表空间创建其他数据库对象(如表、索引)。每个数据库可有零个或者多个回滚表空间。但是,只能有一个活动的回滚表空间。
-
SYSTEM回滚段是特殊的回滚段,它存在于SYSTEM表空间,SYSTEM回滚段用于回滚系统事务。非系统事务只能交由非系统回滚段来处理。因此,除了系统回滚表空间外,每个数据库应该另外创建一个回滚表空间。
一、创建回滚表空间
SQL> create undo tablespace hbk_undotbs datafile '/u01/app/oraData/undoTbs/hbk_undotbs.dbf' size 10M reuse autoextend on;
Tablespace created.
reuse表示重用已经存在的数据文件
autoextend on表示数据文件自动扩展
二、回滚表空间自动管理
作为DBA,需要了解oracle的新特性,在oracle 9i以后,引入了回滚段自动管理的概念,只需要修改相关配置参数实现,这样回滚段的创建、删除等工作都由oracle自动完成。
在这里我们创建另外一个回滚表空间hbk_undotbs_auto
SQL> create undo tablespace hbk_undotbs_auto datafile '/u01/app/oraData/undoTbs/hbk_undotbs_auto' size 10M reuse autoextend on;
Tablespace created.
关闭数据库
SQL > shutdown immediate
并修改配置参数文件/u01/app/oracle//product/11.2.0/db_1/dbs/initorcl.ora,增加两个参数。
undo_management=auto
undo_tablespace=hbk_undotbs_auto
为了以后数据库启动使用采用回滚表空间自动管理,我们创建spfile,因为startup默认使用spfile
SQL> create spfile='/u01/app/oracle/product/11.2.0/db_1/dbs/spfileorcl.ora' from pfile='/u01/app/oracle//product/11.2.0/db_1/dbs/initorcl.ora';
File created.
启动数据库
SQL> startup
三、删除回滚表空间
跟普通的表空间删除相似
--删除空的表空间,但是不包含物理文件
drop tablespace tablespace_name;
--删除非空表空间,但是不包含物理文件
drop tablespace tablespace_name including contents;
--删除空表空间,包含物理文件
drop tablespace tablespace_name including datafiles;
--删除非空表空间,包含物理文件
drop tablespace tablespace_name including contents and datafiles;
--如果其他表空间中的表有外键等约束关联到了本表空间中的表的字段,就要加上CASCADE CONSTRAINTS
drop tablespace tablespace_name including contents and datafiles CASCADE CONSTRAINTS;
但是有一个注意点,不能删除数据库当前正在使用的回滚表空间。如果要删除数据库正在使用的回滚表空间,只能把数据库切换到另外一个回滚表空间。
四、回滚表空间的切换
可以创建多个回滚表空间,但是同时只能有一个回滚表空间被使用,在删除回滚表空间的时候就涉及到切换问题
显示数据库当前正在使用的回滚表空间
SQL> show parameter undo_tablespace
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_tablespace string hbk_undotbs_auto
这也说明我们的自动管理回滚表空间生效了
把数据库正在使用的回滚表空间切换到hbk_undotbs
SQL> alter system set undo_tablespace=hbk_undotbs scope=both;
System altered.
scope=both表示这种修改是永久的,并且立即生效。
再次查询,可以看到已经切换了
SQL> show parameter undo_tablespace
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_tablespace string HBK_UNDOTBS
五、回滚表空间增加数据文件
跟普通表空间增加数据文件类似
alter tablespace tablespace_name add datafile '数据文件路径' size 5M autoextend on next 1M maxsize unlimited;
六、查看数据库的所有回滚表空间
UNDO一定要大写,回滚表空间在dba_tablespaces视图的contents字段存储为UNDO
SQL> select tablespace_name from dba_tablespaces where contents='UNDO';
TABLESPACE_NAME
------------------------------
UNDOTBS1
HBK_UNDOTBS
HBK_UNDOTBS_AUTO