成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

Oracle損壞數(shù)據(jù)塊的處理與恢復

瀏覽:5日期:2023-11-23 17:20:24

一、;沒有備份的情況下:

在這種情況下肯定會造成數(shù)據(jù)的丟失,在這種情況下應采取將數(shù)據(jù)導出然后重見表在進行導入的方法,來盡量恢復損壞數(shù)據(jù)塊中的數(shù)據(jù),但是在有壞塊的情況下是不允許導出的,如下命令:

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

導出命令在執(zhí)行中會報ORA-01578錯誤,在這錯誤提示中會提示那個文件號的文件以及這個文件中的哪個塊被損壞,如:ORA—01578:ORACLE 數(shù)據(jù)塊損壞(文件號 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;

如果被損壞的塊是索引,通常可以通過索引重建來解決,如果損壞的是數(shù)據(jù)(segment_type為table),那么通過設置如下內(nèi)部事件使得Exp操作跳過壞塊。

Alter session set events=’10231 trace name context forever,level 10’;

然后重新執(zhí)行導出命令,導出相關的表,然后執(zhí)行Drop Table命令刪除相關表,之后重見表最后導入數(shù)據(jù)。

二、;使用Rman進行恢復:

首先要存在Rman的最新備份集,然后執(zhí)行如下命令:

RMAN>backup validate datafile 2;檢查2號數(shù)據(jù)文件是否存在壞塊

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

如果2號文件存在壞塊的化,那么將在結果集中有所顯示,會顯示損壞的塊號,根據(jù)顯示結果執(zhí)行如下命令進行恢復:

RMAN>blockrecover datafile 2 block 14 from backupset;

該命令執(zhí)行后即可恢復壞塊,并且不會造成數(shù)據(jù)丟失,但是要求數(shù)據(jù)庫必須要運行在歸檔模式下,否則RMAN無法發(fā)揮作用,而且通過RMAN做過最新的數(shù)據(jù)庫備份。