天天看點

undo表空間的切換,常識

常識 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;