undo表空間出現問題的幾種情況與處理

datapeng發表於2014-03-03

undo空間出現問題的處理

一、資料庫正常關閉immediate或normal
    ①、建立pfile並使用pfile啟動資料庫
        startup nomount
        create pfile= from spfile;
        shutdown abort
        startup mount restrict pfile=
    ②、嘗試恢復檔案
        select name,file#,status from v$datafile;
        recover datafile ;
    ③、建立新的undo表空間替換損壞的undo表空間
        alter database datafile offline drop;
        alter database open;
        CREATE UNDO TABLESPACE UNDOTBS2 DATAFILE '' SIZE 10M AUTOEXTEND ON RETENTION NOGUARANTEE;
        shutdown immediate;
    ④、修改pfile:
       undotablespace=UNDOTBS2
    ⑤、刪除損壞undo表空間並建立新的SPFILE  
        startup pfile=     
        drop tablespace UNDOTBS1 including contents and datafile;
        create spfile from pfile=''shshutdown immediate
        startup        
二、abort或crash       
    ①、建立pfile       
        startup nomount        
        create pfile= from spfile;
               
    ②、修改pfile       
        undo_tablespace='SYSTEM'       
        undo_management='MANUAL'       
        *._allow_resetlogs_corruption=true
        (注:允許在資料庫檔案SCN不一致的情況下啟動資料庫)
        *._corrupted_rollback_segments=(_SYSSMU1$,_SYSSMU2$,_SYSSMU3$,_SYSSMU4$,_SYSSMU5$,_SYSSMU6$,_SYSSMU7$,_SYSSMU8$,_SYSSMU9$,_SYSSMU10$)
        (注:允許在rollback segments損壞的情況下啟動資料庫)
         (注:rollback的名稱要與已經損壞的undo表空間的rollback segment號保持一致,不然導致無法刪除損壞的undo表空間)
    ③、使用修改後pfile啟動資料庫
        startup mount restrict pfile=''
    ④、修改損壞資料檔案狀態
        select name,file#,status from v$datafile;
        alter database datafile offline drop;
    ④、開啟資料庫
        alter database open;
    ⑤、並建立新的undo表空間並關閉資料庫
        CREATE UNDO TABLESPACE UNDOTBS3 DATAFILE '/u02/oracle/oradata/ora9i/undotbs03.dbf' size 10m autoextend on next 2m maxsize 3000m;
    ⑥、修改pfile
        undo_tablespace='UNDOTBS2'
        undo_management='AUTO'
    ⑦、啟動資料庫並刪除損壞undo表空間
        startup restrict pfile=
        修改損壞undo表空間狀態
        alter tablespace undotbs1 offline immediate;
        刪除損壞undo表空
        drop tablespace UNDOTBS1 including contents and datafile;
三、online
    ①、建立新的undo表空間
        CREATE UNDO TABLESPACE UNDOTBS2 DATAFILE '' SIZE 10M AUTOEXTEND ON RETENTION NOGUARANTEE;
    ②、改變預設undo表空間
        ALTER SYSTEM SET UNDO_TABLESPACE='';
    ③、刪除損壞undo表空間
        DROP TABLESPACE INCLUDING CONTENTS AND DATAFILE;
四、相關檢視:
    v$datafile
    v$rollname
    v$rollstat
    v$tablespace
    dba_rollback_segs
    dba_data_files
    dba_talbespaces
    dba_segments

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29371470/viewspace-1098685/,如需轉載,請註明出處,否則將追究法律責任。

相關文章