UNDO表空間下的資料檔案被誤刪除後的處理方法

bfc99發表於2014-02-25
UNDO表空間下的資料檔案被誤刪除後的處理方法:
操作前備份資料庫,以避免更大的損失。
思路:
1、把誤刪除的資料檔案offline
2、正常開啟資料庫後建立新的UNDO表空間及資料檔案
3、修改相應引數指向新的UNDO表空間
4、重新啟動資料庫驗證
5、刪除舊的UNDO表空間。


以下為我在虛擬機器上模擬的場景:在資料庫開啟的狀態下,用作業系統命令將undo表空間對應的唯一資料檔案改名,以模擬資料檔案被刪除的情況。
關閉資料庫
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
啟動資料庫,報錯,提示找不到undo表空間下的資料檔案/oradata/orcl/undotbs01.dbf
SQL> startup
ORACLE instance started.


Total System Global Area  536870912 bytes
Fixed Size                    2097624 bytes
Variable Size                  150998568 bytes
Database Buffers          377487360 bytes
Redo Buffers                    6287360 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 2 - see DBWR trace file
ORA-01110: data file 2: '/oradata/orcl/undotbs01.dbf'


將該資料檔案offline
SQL> alter database datafile 2 offline
  2  ;


Database altered.


正常開啟資料庫
SQL> alter database open;


Database altered.


顯示UNDO相關的引數
SQL> show parameter undo


NAME                                     TYPE         VALUE
------------------------------------ ----------- ------------------------------
undo_management                      string         AUTO
undo_retention                             integer         900
undo_tablespace                      string         UNDOTBS1
建立新的UNDO表空間
SQL> create undo tablespace undotbs2 datafile '/oradata/orcl/undotbs02.dbf' size 320M;


Tablespace created.


修改UNDO_TABLESPACE引數,指向新建立的UNDO表空間
SQL> alter system set undo_tablespace='undotbs2' scope=spfile;


System altered.
重新啟動資料庫
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.


SQL> startup  
ORACLE instance started.


Total System Global Area  536870912 bytes
Fixed Size                    2097624 bytes
Variable Size                  150998568 bytes
Database Buffers          377487360 bytes
Redo Buffers                    6287360 bytes
Database mounted.
Database opened.


SQL> select * from v$tablespace;


       TS# NAME                           INC BIG FLA ENC
---------- ------------------------------ --- --- --- ---
         0 SYSTEM                          YES NO  YES
         1 UNDOTBS1                          YES NO  YES
         2 SYSAUX                          YES NO  YES
         3 TEMP                           NO  NO  YES
         4 USERS                          YES NO  YES
         5 HRTBS                          YES NO  YES
         6 DEMO                           YES NO  YES
         8 UNDOTBS2                          YES NO  YES


8 rows selected.
確認UNDO_TABLESPACE引數已修改
SQL> show parameter undo


NAME                                     TYPE         VALUE
------------------------------------ ----------- ------------------------------
undo_management                      string         AUTO
undo_retention                             integer         900
undo_tablespace                      string         undotbs2


刪除舊的UNDO表空間
SQL> drop tablespace undotbs1; 


Tablespace dropped.

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

相關文章