常识
1。每个instance可以有多个UNDO TS,但是每个最少必须要有一个
2、在同一时间,只能有一个instance访问一个UNDO TS,正确
3、每个UNDO TS只属于一个instance,确切的说只属于一个UNDO进程
切换的步骤:
1新建
create undo tablespace UNDOTBS3 datafile '+DATA/scdb/datafile/undotbs3.dbf' size 2000m;
2切换
alter system set undo_tablespace=UNDOTBS3 scope=both;
在rac中以上那句会报错,但是其实也会改当前实例的默认undo表空间。
ERROR at line 1:
ORA-32008: error while processing parameter update at instance SCDB2
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-30013: undo tablespace 'UNDOTBS3' is currently in use
如果不想报错,应该用下面一句。
alter system set undo_tablespace=UNDOTBS3 sid=' 要修改的实例 ' ;
ALTER SYSTEM SET undo_tablespace='UNDOTBS1' SCOPE=BOTH SID='boss1';
用show parameter undo看看现在默认undo表空间有没有改
3删除
查询历史undo是否还有事务(包含回滚事务)
SELECT a.tablespace_name,a.segment_name,b.ktuxesta,b.ktuxecfl,
b.ktuxeusn||'.'||b.ktuxeslt||'.'||b.ktuxesqn trans
FROM dba_rollback_segs a, x$ktuxe b
WHERE a.segment_id = b.ktuxeusn
AND a.tablespace_name = UPPER('
undotbs3')
AND b.ktuxesta <> 'INACTIVE';
但是就算没有回滚事务也不能马上删除,必须看看回滚段情况
查询回滚段情况(原undo表空间的回滚段全部offline,可以删除相关表空间)
select tablespace_name,segment_name,status from dba_rollback_segs order by tablespace_name;
alter tablespace undotbs3 offline;
等一下再删
drop tablespace undotbs3 including contents and datafiles;