Oracle 無備份情況下undo檔案損壞處理
SQL> select ename,sal from scott.emp where deptno=10;
ENAME SAL
---------- ----------
CLARK 2450
KING 5000
MILLER 1300
SQL> show undo
SP2-0158: unknown SHOW option "undo"
SQL> show parameter undo
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDOTBS2
SQL> create undo tablespace undotbs3 datafile '/u01/oracle/oradata/ora10g/undotbs03.dbf' size 20M;
Tablespace created.
SQL> alter system set undo_tablespace=undotbs3;
System altered.
開新會話 產生事務
SQL> select XIDUSN,XIDSLOT,XIDSQN,name from v$transaction;
XIDUSN XIDSLOT XIDSQN NAME
---------- ---------- ---------- --------------------------------------------------
9 0 300
SQL> select segment_name,tablespace_name,file_id from dba_rollback_segs where segment_id=9;
SEGMENT_NAME TABLESPACE_NAME FILE_ID
------------------------- --------------- ----------
_SYSSMU9$ UNDOTBS3 2
SQL> ! rm -rf /u01/oracle/oradata/ora10g/undotbs03.dbf
SQL> shut abort 也可以不停庫 使用alter database datafile 2 offline;來觸發資料庫認識到資料檔案損壞
再使用alter database create datafile 2;這樣不用停庫 事務最後能保持住.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 285212672 bytes
Fixed Size 1218992 bytes
Variable Size 83887696 bytes
Database Buffers 197132288 bytes
Redo Buffers 2973696 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 2 - see DBWR trace file
ORA-01110: data file 2: '/u01/oracle/oradata/ora10g/undotbs03.dbf'
SQL> select FILE#,checkpoint_change#,recover, fuzzy from v$datafile_header;
FILE# CHECKPOINT_CHANGE# REC FUZ
---------- ------------------ --- ---
1 513395 NO YES
2 0
3 513395 NO YES
4 513395 NO YES
5 513395 NO YES
6 513395 NO YES
6 rows selected.
SQL> select FILE#,status,CHECKPOINT_CHANGE#,name from v$datafile;
FILE# STATUS CHECKPOINT_CHANGE# NAME
---------- ---------- ------------------ --------------------------------------------------
1 SYSTEM 513395 /u01/oracle/oradata/ora10g/system01.dbf
2 ONLINE 513572 /u01/oracle/oradata/ora10g/undotbs03.dbf
3 ONLINE 513395 /u01/oracle/oradata/ora10g/sysaux01.dbf
4 ONLINE 513395 /u01/oracle/oradata/ora10g/users01.dbf
5 ONLINE 513395 /u01/oracle/oradata/ora10g/mytest01.dbf
6 ONLINE 513395 /u01/oracle/oradata/ora10g/undotbs02.dbf
6 rows selected.
SQL> set line 110
SQL> select status,CHECKPOINT_CHANGE#,name,creation_change# from v$datafile;
STATUS CHECKPOINT_CHANGE# NAME CREATION_CHANGE#
---------- ------------------ -------------------------------------------------- ----------------
SYSTEM 513395 /u01/oracle/oradata/ora10g/system01.dbf 9
ONLINE 513572 /u01/oracle/oradata/ora10g/undotbs03.dbf 513571
ONLINE 513395 /u01/oracle/oradata/ora10g/sysaux01.dbf 6609
ONLINE 513395 /u01/oracle/oradata/ora10g/users01.dbf 10566
ONLINE 513395 /u01/oracle/oradata/ora10g/mytest01.dbf 459576
ONLINE 513395 /u01/oracle/oradata/ora10g/undotbs02.dbf 492642
6 rows selected.
依據控制檔案的資訊 重建這個檔案
SQL> alter database create datafile '/u01/oracle/oradata/ora10g/undotbs03.dbf';
Database altered.
SQL> select FILE#,checkpoint_change#,recover, fuzzy from v$datafile_header;
FILE# CHECKPOINT_CHANGE# REC FUZ
---------- ------------------ --- ---
1 513395 NO YES
2 513571 YES NO
3 513395 NO YES
4 513395 NO YES
5 513395 NO YES
6 513395 NO YES
6 rows selected.
select * from v$recover_file;file;
FILE# ONLINE ONLINE_ ERROR CHANGE# TIME
---------- ------- ------- -------------------- ---------- ---------
2 ONLINE ONLINE 513571 25-FEB-11
SQL>
需要 5號日誌進行恢復
SQL> select hxfil FILENUMBER,fhsta STATUS,fhscn SCN,fhrba_Seq SEQUENCE from x$kcvfh;
FILENUMBER STATUS SCN SEQUENCE
---------- -------------- ---------------- ----------
1 8196 513395 5
2 0 513571 5
3 4 513395 5
4 4 513395 5
5 4 513395 5
6 4 513395 5
6 rows selected.
SQL> recover datafile 2;
Media recovery complete.
SQL> alter database open;
Database altered.
SQL> select FILE#,checkpoint_change#,recover, fuzzy from v$datafile_header;
FILE# CHECKPOINT_CHANGE# REC FUZ
---------- ------------------ --- ---
1 533737 NO YES
2 533737 NO YES
3 533737 NO YES
4 533737 NO YES
5 533737 NO YES
6 533737 NO YES
6 rows selected.
SQL> 資料庫shut abort過 事務被回退
SQL> select ename,sal from scott.emp where deptno=10;
ENAME SAL
---------- ----------
CLARK 2450
KING 5000
MILLER 1300
SQL>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29523859/viewspace-2681885/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 沒有備份的情況下處理undo損壞
- undo 檔案損壞
- Oracle-無備份情況下,如何手動恢復控制檔案Oracle
- undo表空間檔案丟失恢復(3)--無備份無redo的情況下恢復
- undo表空間檔案丟失恢復(4)--無備份無recover的情況下恢復
- 資料庫在沒有備份的情況下的資料檔案損壞的恢復資料庫
- undo表空間檔案丟失恢復(2)--無備份有redo的情況下恢復
- UNDO表空間損壞的處理
- undo檔案丟失或損壞
- RMAN備份時候檔案壞塊的處理
- 【Oracle】Current online Redo 和 Undo 損壞的處理方法Oracle
- undo表空間損壞的處理過程
- Oracle 無備份情況恢復ocr和olrOracle
- ORACLE-00600 4194 斷電undo損壞處理過程Oracle
- 全備份情況下,刪除控制檔案及恢復
- 批處理檔備份oracleOracle
- 備份&恢復之十三:損壞全部控制檔案
- 沒有備份的情況下如何處理logical & physical corrupt blockBloC
- UNDO 表空間檔案損壞的恢復
- 備份&恢復之十二:損壞單個控制檔案
- 磁碟損壞造成RMAN備份檔案有壞塊的恢復案例
- sysaux表空間檔案損壞的處理(zt)UX
- Undo和Current Online Redo損壞的處理方法
- Current online Redo 和 Undo 損壞的處理方法
- Oracle聯機日誌檔案丟失或損壞的處理方法Oracle
- Oracle塊損壞恢復(有rman備份)Oracle
- 非系統資料檔案損壞,rman備份恢復
- 備份與恢復--資料檔案損壞或丟失
- 處理塊損壞
- oracle10g rac 表決盤損壞、ocr損壞處理Oracle
- ORACLE聯機日誌檔案丟失或損壞的處理方法(轉)Oracle
- Oracle聯機日誌檔案丟失或損壞的處理方法 (轉)Oracle
- 無處不在的Oracle資料庫控制檔案備份Oracle資料庫
- Oracle 11.2.0.4.4 ADG 備庫資料檔案壞塊處理Oracle
- 備份&恢復之五:歸檔模式下丟失或損壞一個資料檔案模式
- 故障分析 | MySQL 備份檔案靜默損壞一例分析MySql
- Oracle RMAN備份中對壞塊(corrupt block)的處理OracleBloC
- coreldraw檔案丟失(損壞)的恢復處理辦法