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;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章