http://hi.baidu.com/dbconsole/blog/item/1f46d189832220bb0e244463.html
Sql代碼
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiYWan5Sew92Yf52bjl2LcNXZnFWbp9CXt92YuUWelFmdhpmLl5WYyNWZlJnZvw1LcpDc0RHaiojIsJye.gif)
- SQL> startup
- ORACLE 例程已經啟動。
- Total System Global Area 588324464 bytes
- Fixed Size 454256 bytes
- Variable Size 293601280 bytes
- Database Buffers 293601280 bytes
- Redo Buffers 667648 bytes
- 資料庫裝載完畢。
- ORA-01122: 資料庫檔案 2 驗證失敗
- ORA-01110: 資料檔案 2: 'D:/ORACLE/ORADATA/JSYADC/UNDOTBS01.DBF'
- ORA-01200: 43520的實際檔案大小小于46720塊的正确大小
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 588324464 bytes
Fixed Size 454256 bytes
Variable Size 293601280 bytes
Database Buffers 293601280 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
ORA-01122: 資料庫檔案 2 驗證失敗
ORA-01110: 資料檔案 2: 'D:/ORACLE/ORADATA/JSYADC/UNDOTBS01.DBF'
ORA-01200: 43520的實際檔案大小小于46720塊的正确大小
主要是由于非正常關機或者磁盤損壞導緻undotbs01檔案損壞。
修改pfile中undo的相關資訊
*.undo_management='MANUAL'
*.undo_tablespace='SYSTEM'
以pfile啟動到mount狀态
Sql代碼
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiYWan5Sew92Yf52bjl2LcNXZnFWbp9CXt92YuUWelFmdhpmLl5WYyNWZlJnZvw1LcpDc0RHaiojIsJye.gif)
- SQL> startup mount pfile='/oracle/p1.ora'
- ORACLE instance started.
- Total System Global Area 303531576 bytes
- Fixed Size 742968 bytes
- Variable Size 285212672 bytes
- Database Buffers 16777216 bytes
- Redo Buffers 798720 bytes
- Database mounted.
- SQL>
SQL> startup mount pfile='/oracle/p1.ora'
ORACLE instance started.
Total System Global Area 303531576 bytes
Fixed Size 742968 bytes
Variable Size 285212672 bytes
Database Buffers 16777216 bytes
Redo Buffers 798720 bytes
Database mounted.
SQL>
檢視rollback segments資訊。
Sql代碼
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiYWan5Sew92Yf52bjl2LcNXZnFWbp9CXt92YuUWelFmdhpmLl5WYyNWZlJnZvw1LcpDc0RHaiojIsJye.gif)
- SQL> select segment_name,tablespace_name,status from dba_rollback_segs;
- SEGMENT_NAME TABLESPACE_NAME STATUS
- ------------------------------ ------------------------------ ----------------
- SYSTEM SYSTEM ONLINE
- _SYSSMU1$ UNDOTBS0 OFFLINE
- _SYSSMU2$ UNDOTBS0 OFFLINE
- _SYSSMU3$ UNDOTBS0 OFFLINE
- _SYSSMU4$ UNDOTBS0 OFFLINE
- _SYSSMU5$ UNDOTBS0 OFFLINE
- _SYSSMU6$ UNDOTBS0 OFFLINE
- _SYSSMU7$ UNDOTBS0 OFFLINE
- _SYSSMU8$ UNDOTBS0 OFFLINE
- _SYSSMU9$ UNDOTBS0 OFFLINE
- _SYSSMU10$ UNDOTBS0 OFFLINE
- SEGMENT_NAME TABLESPACE_NAME STATUS
- ------------------------------ ------------------------------ ----------------
- _SYSSMU11$ UNDOTBS0 NEEDS RECOVERY
- _SYSSMU12$ UNDOTBS0 NEEDS RECOVERY
SQL> select segment_name,tablespace_name,status from dba_rollback_segs;
SEGMENT_NAME TABLESPACE_NAME STATUS
------------------------------ ------------------------------ ----------------
SYSTEM SYSTEM ONLINE
_SYSSMU1$ UNDOTBS0 OFFLINE
_SYSSMU2$ UNDOTBS0 OFFLINE
_SYSSMU3$ UNDOTBS0 OFFLINE
_SYSSMU4$ UNDOTBS0 OFFLINE
_SYSSMU5$ UNDOTBS0 OFFLINE
_SYSSMU6$ UNDOTBS0 OFFLINE
_SYSSMU7$ UNDOTBS0 OFFLINE
_SYSSMU8$ UNDOTBS0 OFFLINE
_SYSSMU9$ UNDOTBS0 OFFLINE
_SYSSMU10$ UNDOTBS0 OFFLINE
SEGMENT_NAME TABLESPACE_NAME STATUS
------------------------------ ------------------------------ ----------------
_SYSSMU11$ UNDOTBS0 NEEDS RECOVERY
_SYSSMU12$ UNDOTBS0 NEEDS RECOVERY
從這裡面可以看到,_SYSSMU11$,_SYSSMU12$這兩個資料段need recovery,我們需要通過隐患參數_corrupted_rollback_segments,丢棄這兩個段。
在之前的pfile中,增減下列資訊
_corrupted_rollback_segments=(_SYSSMU11$,_SYSSMU12$)
Sql代碼
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiYWan5Sew92Yf52bjl2LcNXZnFWbp9CXt92YuUWelFmdhpmLl5WYyNWZlJnZvw1LcpDc0RHaiojIsJye.gif)
- SQL> startup restrict pfile='/oracle/p1.ora';
- ORACLE instance started.
- Total System Global Area 303531576 bytes
- Fixed Size 742968 bytes
- Variable Size 285212672 bytes
- Database Buffers 16777216 bytes
- Redo Buffers 798720 bytes
- Database mounted.
- Database opened.
- #Drop掉舊的undo表空間
- SQL> drop tablespace undotbs0 including contents;
- Tablespace dropped.
- #建立新的undo表空間
- SQL> create undo tablespace undotbs1 datafile '/oracle/oradata/oratest/undotbs1.dbf' size 150M autoextend on;
- Tablespace created.
- SQL> shutdown immediate;
- Database closed.
- Database dismounted.
- ORACLE instance shut down.
- SQL>
SQL> startup restrict pfile='/oracle/p1.ora';
ORACLE instance started.
Total System Global Area 303531576 bytes
Fixed Size 742968 bytes
Variable Size 285212672 bytes
Database Buffers 16777216 bytes
Redo Buffers 798720 bytes
Database mounted.
Database opened.
#Drop掉舊的undo表空間
SQL> drop tablespace undotbs0 including contents;
Tablespace dropped.
#建立新的undo表空間
SQL> create undo tablespace undotbs1 datafile '/oracle/oradata/oratest/undotbs1.dbf' size 150M autoextend on;
Tablespace created.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>
修改pfile
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
并删除_corrupted_rollback_segments=(_SYSSMU11$,_SYSSMU12$)
Sql代碼
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiYWan5Sew92Yf52bjl2LcNXZnFWbp9CXt92YuUWelFmdhpmLl5WYyNWZlJnZvw1LcpDc0RHaiojIsJye.gif)
- SQL> startup pfile='/oracle/p1.ora'
- ORACLE instance started.
- Total System Global Area 303531576 bytes
- Fixed Size 742968 bytes
- Variable Size 285212672 bytes
- Database Buffers 16777216 bytes
- Redo Buffers 798720 bytes
- Database mounted.
- Database opened.
- SQL> create spfile from pfile='/oracle/p1.ora';
- File created.
- SQL>