UNDO表空間下的資料檔案被誤刪除後的處理方法
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.
操作前備份資料庫,以避免更大的損失。
思路:
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用中undo表空間資料檔案被誤刪
- oracle資料檔案被誤刪除後的災難處理方法Oracle
- oracle誤刪除表空間的資料檔案Oracle
- oracle 失誤刪掉資料檔案後,刪除表空間操作Oracle
- Oracle系統表空間剛新增的一個資料檔案誤刪除恢復處理Oracle
- 直接刪除undo及temp表空間檔案後的資料庫恢復一例資料庫
- undo 表空間滿了的處理方法
- 被誤刪的檔案正確處理方法,快速找回誤刪的檔案
- 誤刪資料庫資料檔案的處理方法資料庫
- 如何正確的刪除表空間資料檔案
- Oracle undo表空間爆滿的處理方法Oracle
- 刪除表空間和表空間包含的檔案
- 誤刪oracle資料庫表空間檔案Oracle資料庫
- 表空間資料檔案故障處理
- UNDO表空間資料檔案丟失處理(一)預備知識
- UNDO表空間資料檔案丟失處理(二)正常關閉資料庫資料庫
- 處理Linux刪除檔案後空間未釋放的問題Linux
- 刪除檔案後,磁碟空間沒有釋放的處理記錄
- UNDO表空間損壞的處理
- 非歸檔庫誤刪表空間後的資料恢復資料恢復
- undo表空間故障處理
- 刪除UNDO表空間並處理ORA-01548問題
- Oracle 刪除使用者、表空間、資料檔案、使用者下的所有表Oracle
- oracle刪除(釋放)資料檔案/表空間流程Oracle
- oracle中undo表空間丟失處理方法Oracle
- 刪除臨時表空間hang處理
- 錯誤新增表空間的資料檔案
- 非歸檔模式下資料檔案被誤刪的解決方法模式
- 歸檔模式下的表空間檔案無法用命令刪除模式
- 刪除表空間,資料檔案也刪除後,但作業系統層面上空閒空間不見增加。作業系統
- oracle 小議如何從表空間 刪除 資料檔案Oracle
- oracle 誤刪除的處理方法Oracle
- 解決linux下刪除檔案或oracle表空間後空間不釋放的問題LinuxOracle
- 關於丟失表空間資料檔案的處理方式
- undo表空間損壞的處理過程
- MySQL 5.7的表刪除資料後的磁碟空間釋放MySql
- Oracle 11g 表空間的誤刪除, 當前的控制檔案不識別該表空間Oracle
- 刪除資料庫表空間資料庫