用ORACLE8i修復資料庫壞塊的三種方法
用ORACLE8i修復資料庫壞塊的三種方法 在進行SUN CLUSTER雙機切換、意外斷電或其它情況下,有時會發生共享盤MOUNT不上的情況,需要使用FSCK對共享盤進行修復。修復完成後,在資料庫啟動過程中,卻又出現"資料塊損壞,無法啟動資料庫"的現象,此時,可以根據不同的資料塊損壞型別,檢測並修復錯誤。在此介紹三種使用Oracle8i修復損壞資料塊的方法。
一、資料塊損壞,錯誤程式碼為ORA-01578
ORA-1115 I/O ERROR READING BLOCK
通常後跟ORA-737X錯誤與作業系統錯誤(如UNIX中的錯誤號5)
產生原因:
1. 硬體問題(磁碟控制器問題或磁碟問題)
2. 物理級的資料塊損壞(通常由前一原因造成)
3. 處理巨型檔案時,後跟錯誤程式碼ORA-7371
確定故障原因與恢復的方法:
1. 檢視alert.log檔案中其它ORA-1115錯誤的發生情況:
1) 如果指向不同磁碟的檔案,則是磁碟控制器的問題,檢視V$DATAFILE,有哪些檔案位於該控制器下,轉到第二步。
2) 如果指向相同磁碟的不同檔案,則是磁碟的問題,轉到第二步。
3) 如果指向同一個檔案,執行以下語句查詢檔名:
SELECT SEGMENT_NAME,SEGMENT_TYPE FROM DBA_EXTENTS WHERE FILE_ID= AND BETWEEN BLOCK_ID
AND BLOCK_ID+BLOCKS-1;
其中,檔案號與塊號是ORA-1115中指出的,如果該查詢持續指向某表或索引,則重建它們即可。
2. 如果檔案是SYSTEM表空間,或處於NOARCHIVELOG模式,關閉資料庫,轉到第四步。
3. 如果資料庫處於ARCHIVELOG模式,仍應關閉資料庫,如果不能關閉資料庫,則將相應的資料檔案離線:ALTER DATABASE DATAFILE '檔名' OFFLINE;
4. 試著將資料檔案拷貝到別的磁碟。
5. 如果拷貝失敗,則檔案將丟失。
6. STARTUP MOUNT;
7. 將資料檔案重新命名為成功拷貝到別的磁碟的檔名:
ALTER DATABASE RENAME FILE '老路徑檔名' TO '新路徑檔名';
8. ALTER DATABASE OPEN;
9. RECOVER DATAFILE 檔名;
ALTER DATABASE DATAFILE '檔名' ONLINE;
二、回滾段需要恢復
如果回滾段處於NEED RECOVERY狀態,需要執行以下步驟進行恢復:
1. 檢視所有聯機的表空間與資料檔案
2. 在init.ora檔案中加入event = "10015 trace name context forever,level 10",這將生
成一個追蹤檔案,其中含有事務與回滾的資訊。
3. 關閉並重新開啟資料庫。
4. 檢視TRACE檔案,應有error recovery tx(#,#) object #.TX(#,#),指出事務資訊,其中object #與sys.dba_objects中的object_id相同。
5. 使用以下查詢找出正在進行恢復的物件:
SELECT owner,object_name,object_type,status FROM dba_objects WHERE object_id=
一、資料塊損壞,錯誤程式碼為ORA-01578
ORA-1115 I/O ERROR READING BLOCK
通常後跟ORA-737X錯誤與作業系統錯誤(如UNIX中的錯誤號5)
產生原因:
1. 硬體問題(磁碟控制器問題或磁碟問題)
2. 物理級的資料塊損壞(通常由前一原因造成)
3. 處理巨型檔案時,後跟錯誤程式碼ORA-7371
確定故障原因與恢復的方法:
1. 檢視alert.log檔案中其它ORA-1115錯誤的發生情況:
1) 如果指向不同磁碟的檔案,則是磁碟控制器的問題,檢視V$DATAFILE,有哪些檔案位於該控制器下,轉到第二步。
2) 如果指向相同磁碟的不同檔案,則是磁碟的問題,轉到第二步。
3) 如果指向同一個檔案,執行以下語句查詢檔名:
SELECT SEGMENT_NAME,SEGMENT_TYPE FROM DBA_EXTENTS WHERE FILE_ID= AND BETWEEN BLOCK_ID
AND BLOCK_ID+BLOCKS-1;
其中,檔案號與塊號是ORA-1115中指出的,如果該查詢持續指向某表或索引,則重建它們即可。
2. 如果檔案是SYSTEM表空間,或處於NOARCHIVELOG模式,關閉資料庫,轉到第四步。
3. 如果資料庫處於ARCHIVELOG模式,仍應關閉資料庫,如果不能關閉資料庫,則將相應的資料檔案離線:ALTER DATABASE DATAFILE '檔名' OFFLINE;
4. 試著將資料檔案拷貝到別的磁碟。
5. 如果拷貝失敗,則檔案將丟失。
6. STARTUP MOUNT;
7. 將資料檔案重新命名為成功拷貝到別的磁碟的檔名:
ALTER DATABASE RENAME FILE '老路徑檔名' TO '新路徑檔名';
8. ALTER DATABASE OPEN;
9. RECOVER DATAFILE 檔名;
ALTER DATABASE DATAFILE '檔名' ONLINE;
二、回滾段需要恢復
如果回滾段處於NEED RECOVERY狀態,需要執行以下步驟進行恢復:
1. 檢視所有聯機的表空間與資料檔案
2. 在init.ora檔案中加入event = "10015 trace name context forever,level 10",這將生
成一個追蹤檔案,其中含有事務與回滾的資訊。
3. 關閉並重新開啟資料庫。
4. 檢視TRACE檔案,應有error recovery tx(#,#) object #.TX(#,#),指出事務資訊,其中object #與sys.dba_objects中的object_id相同。
5. 使用以下查詢找出正在進行恢復的物件:
SELECT owner,object_name,object_type,status FROM dba_objects WHERE object_id=
相關文章
- 修復資料庫壞塊之三資料庫
- Oracle資料庫壞塊修復Oracle資料庫
- 修復資料庫壞塊之五資料庫
- 修復資料庫壞塊之四資料庫
- 修復資料庫壞塊之二資料庫
- 修復資料庫壞塊之一資料庫
- 修復損壞的資料塊
- dataguard主庫壞塊的修復
- MySQL資料庫表損壞後的修復方法MySql資料庫
- InterBase資料庫檔案損壞的修復方法資料庫
- ORACLE中修復資料塊損壞Oracle
- PostgreSQL 恢復大法 - 恢復部分資料庫、跳過壞塊、修復無法啟動的資料庫SQL資料庫
- 利用RMAN修復資料檔案中的壞塊
- RMAN修復壞塊
- Oracle中匯出修復資料塊損壞Oracle
- Oracle中模擬修復資料塊損壞Oracle
- SQLite資料庫損壞及其修復探究SQLite資料庫
- 資料庫檔案壞塊損壞導致開啟時報錯的恢復方法資料庫
- 跳過Oracle資料庫壞塊方法Oracle資料庫
- MySQL資料庫InnoDB壞頁處理修復MySql資料庫
- 伺服器Oracle資料庫損壞修復伺服器Oracle資料庫
- oracle壞塊修復例項Oracle
- DBMS_REPAIR修復壞塊AI
- 資料庫壞塊Corrupt block的處理方法資料庫BloC
- SQL Anywhere db檔案損壞修復 DB檔案修復 DB資料庫修復SQL資料庫
- MYSQL資料表損壞的原因分析和修復方法MySql
- Oracle資料庫壞塊(corruption)-物理壞塊Oracle資料庫
- -轉載-使用Oracle9i的blockrecover新特性修復資料庫中的壞塊OracleBloC資料庫
- oracle壞塊的rowid方式修復Oracle
- Oracle資料庫備份與恢復的三種方法Oracle資料庫
- redo損壞修復啟動資料庫辦法資料庫
- 伺服器資料庫損壞能修復嘛伺服器資料庫
- Oracle日常問題-壞塊修復Oracle
- 織夢資料庫配置檔案資料庫損壞:嘗試修復資料庫資料庫
- 【資料庫資料恢復】Oracle資料庫檔案出現壞塊報錯的資料恢復案例資料庫資料恢復Oracle
- Oracle資料庫備份與恢復的三種方法(轉)Oracle資料庫
- pg 檔案塊損壞的修復措施。
- ORACLE資料庫壞塊的處理 (處理無物件壞快的方法)Oracle資料庫物件