Oracle日常問題-壞塊修復
Oracle 日常問題- 壞塊 修復
一:問題現象
(1)NC 進行收款結算時報錯 (ORA-01578)
(2) 資料備份日誌 (exp) 報錯:
(3) 資料庫警告日誌報錯:
二:問題原因
機房意外斷電,導致資料庫資料塊損壞;
三:基本資訊
(1) 資料庫伺服器作業系統:
(2) 資料庫版本
四:檢視資料檔案號及名稱
select file_id , tablespace_name , file_name , bytes / 1024 / 1024 from dba_data_files order by 1 ;
五:透過DBV 檢查檔案是否有壞塊
(1) 檢查 nnc_index01.dbf 檔案
dbv file='/oradata/nc/nnc_index01.dbf'
結論file_id=6(nnc_index01.dbf),block=196373,643867,459202 出現三個索引壞塊
(2) 檢查 nnc_index02.dbf 檔案
dbv file='/oradata/nc/nnc_index0 2 .dbf'
結論:file_id=8(nnc_index02.dbf),block=169072 出現一個索引壞塊
(3) 檢查 nnc_data01.dbf 檔案
dbv file='/oradata/nc/nnc_ data 01.dbf'
結論:file_id=5(nnc_data01.dbf) 無壞塊
(4) 檢查 nnc_data02.dbf 檔案
dbv file='/oradata/nc/nnc_ data 0 2 .dbf'
結論:file_id=7(nnc_data02.dbf),block=336465 出現一個資料壞塊
(5) 檢查 nnc_user01.dbf 檔案
dbv file='/oradata/nc/nnc_ user 01.dbf'
......
(6) 檢查 nnc_undotbs01.dbf 檔案
dbv file='/oradata/nc/nnc_ undotbs 01.dbf'
......
(7) 檢查 nnc_sysaux01.dbf 檔案
dbv file='/oradata/nc/nnc_ sysaux .dbf'
......
(8) 檢查 nnc_system01.dbf 檔案
dbv file='/oradata/nc/nnc_ system01.d bf'
......
六:檢視壞塊所屬段及型別
(1) 檢視 file=6(459202) 對應段型別及名稱
select tablespace_name, segment_type, owner, segment_name
from dba_extents
where file_id = 6
and 459202 between block_id and block_id + blocks - 1;
(2) ) 檢視 file=6(643867) 對應段型別及名稱
select tablespace_name, segment_type, owner, segment_name
from dba_extents
where file_id = 6
and 643867 between block_id and block_id + blocks - 1;
(3) 檢視 file=6(1963727) 對應段型別及名稱
select tablespace_name, segment_type, owner, segment_name
from dba_extents
where file_id = 6
and 1963727 between block_id and block_id + blocks - 1;
(4) 檢視 file=8(169072) 對應段型別及名稱
select tablespace_name, segment_type, owner, segment_name
from dba_extents
where file_id = 8
and 169072 between block_id and block_id + blocks - 1;
(5) 檢視 file=7( 336465 ) 對應段型別及名稱
select tablespace_name, segment_type, owner, segment_name
from dba_extents
where file_id = 7
and 336465 between block_id and block_id + blocks - 1;
七:恢復之前需要先備份損壞資料塊對應的表
透過exp 備份不能直接備份出有壞塊的表,需要設定內部事件
ALTER SYSTEM SET EVENTS='10231 trace name context forever,level 10';
透過expdp 備份可以直接跳過壞塊;
八:檢視資料庫備份
歸檔模式,並且有rman 備份,有前兩天的 Rman 全備以及全備到今天的所有歸檔日誌;
恢復方式:基於資料塊的Rman 恢復
(1) 恢復 datafile=7 的所有壞塊
RMAN>backup validate datafile 7;
select * from v$database_block_corruption where file#=4;
RMAN>blockrecover datafile 7 block 336465 from backupset;
驗證壞塊位置
進行恢復
RMAN>blockrecover datafile 7 block 336465;
檢查是否恢復成功
(2) 恢復 datafile=6 的所有壞塊
RMAN>backup validate datafile 6;
select * from v$database_block_corruption where file#=6;
RMAN>blockrecover datafile 6 block 459202 , 643867, 1963727 ;
驗證壞塊位置
進行恢復
檢查是否恢復成功
(3) 恢復 datafile=8 的所有壞塊
RMAN>backup validate datafile 8;
RMAN> blockrecover datafile 8 block 169072 ;
驗證壞塊位置
進行恢復
檢查是否恢復成功
歡迎關注我的微信公眾號"IT小Chen",共同學習,共同成長!!!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29785807/viewspace-2675850/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle壞塊修復例項Oracle
- Oracle資料庫壞塊修復Oracle資料庫
- RMAN修復壞塊
- oracle壞塊的rowid方式修復Oracle
- ORACLE中修復資料塊損壞Oracle
- Oracle壞塊修復處理實驗Oracle
- 利用oracle9i blockrecover 修復ORA-01578壞塊問題OracleBloC
- oracle 壞塊問題急救Oracle
- Oracle_UNDO壞塊測試和修復(BBED)Oracle
- Oracle中匯出修復資料塊損壞Oracle
- Oracle中模擬修復資料塊損壞Oracle
- DBMS_REPAIR修復壞塊AI
- Oracle壞塊問題總結Oracle
- Oracle壞塊問題處理Oracle
- dataguard主庫壞塊的修復
- 修復損壞的資料塊
- oracle壞塊問題的解決Oracle
- 修復資料庫壞塊之五資料庫
- 修復資料庫壞塊之四資料庫
- 修復資料庫壞塊之三資料庫
- 修復資料庫壞塊之二資料庫
- 修復資料庫壞塊之一資料庫
- 使用dbms_repair修復塊損壞AI
- pg 檔案塊損壞的修復措施。
- oracle 壞塊問題 ora-01578Oracle
- oracle壞塊問題及解決辦法Oracle
- 用ORACLE8i修復資料庫壞塊的三種方法Oracle資料庫
- 壞塊問題(摘抄總結)
- 記一次sysaux表空間壞塊修復UX
- 利用RMAN修復資料檔案中的壞塊
- Oracle塊損壞恢復(有rman備份)Oracle
- Backup And Recovery User's Guide-在不損壞塊的情況下嘗試修復恢復問題:階段2GUIIDE
- 伺服器Oracle資料庫損壞修復伺服器Oracle資料庫
- 驗證ADG的壞塊檢測和自動修復
- MySQL修復壞塊引數innodb_force_recovery的解釋MySql
- 如何處理Oracle資料庫中的壞塊問題(轉)Oracle資料庫
- oracle壞塊(二)Oracle
- Oracle資料庫壞塊(corruption)-物理壞塊Oracle資料庫