Oracle損壞資料塊的處理與恢復

2022-04-04 01:52:13 字數 1046 閱讀 9705

一、    沒有備份的情況下:

在這種情況下肯定會造成資料的丟失,在這種情況下應採取將資料匯出然後重見表在進行匯入的方法,來盡量恢復損壞資料塊中的資料,但是在有壞塊的情況下是不允許匯出的,如下命令:

exp test/test file=t.dmp tables=t;

匯出命令在執行中會報ora-01578錯誤,在這錯誤提示中會提示那個檔案號的檔案以及這個檔案中的哪個塊被損壞,如:ora—01578:oracle 資料塊損壞(檔案號 4,塊號 35)

針對以上的提示首先查詢那些物件被損壞:

select tablespace_name,segment_type,owner,segment_name

from dba_extents

where file_id=4 and 35 between block_id and block_id+blocks-1;

如果被損壞的塊是索引,通常可以通過索引重建來解決,如果損壞的是資料(segment_type為table),那麼通過設定如下內部事件使得exp操作跳過壞塊。

alter session set events=』10231 trace name context forever,level 10』;

然後重新執行匯出命令,匯出相關的表,然後執行drop table命令刪除相關表,之後重見表最後匯入資料。

二、    使用rman進行恢復:

首先要存在rman的最新備份集,然後執行如下命令:

rman>backup validate datafile 2;檢查2號資料檔案是否存在壞塊

執行查詢:select * from v$database_block_corruption where file#=2;

如果2號檔案存在壞塊的化,那麼將在結果集中有所顯示,會顯示損壞的塊號,根據顯示結果執行如下命令進行恢復:

rman>blockrecover datafile 2 block 14 from backupset;

該命令執行後即可恢復壞塊,並且不會造成資料丟失,但是要求資料庫必須要執行在歸檔模式下,否則rman無法發揮作用,而且通過rman做過最新的資料庫備份。

Oracle損壞資料塊的處理與恢復

一 沒有備份的情況下 在這種情況下肯定會造成資料的丟失,在這種情況下應採取將資料匯出然後重見表在進行匯入的方法,來盡量恢復損壞資料塊中的資料,但是在有壞塊的情況下是不允許匯出的,如下命令 exp test test file t.dmp tables t 匯出命令在執行中會報ora 01578 錯誤...

Oracle資料塊損壞恢復總結

oracle資料塊損壞恢復總結 在恢復前使用dbv命令檢查資料檔案是否存在壞塊 dbv file d oracle oradata mydb ronly.dbf blocksize 8192 檢視資料壞塊所在資料檔案號及塊號可以對錶進行一次全表掃瞄,如 select count from table...

HDFS 資料塊損壞

由斷電或其它原因引起的hdfs服務不正常或者塊損壞 一 檢查hdfs的檔案的健康狀態hdfs fsck 二 檢視損壞的塊以及檔案的對應關係hdfs fsck list corruptfileblocks 三 解決辦法 資料可以從其它地方找到 比如mysql 將資料重新重新整理乙份到hdfs上 hdf...