ORA-01578錯誤的解決方法 ( 二)

paulyibinyi發表於2008-06-19

參見索引段壞塊錯誤的解決方法:

http://space.itpub.net/?uid-7199859-action-viewspace-itemid-475

 

今天下午 釋出資料庫伺服器在執行一個sql時 出現以下錯誤

ORA-01578: ORACLE data block corrupted (file # 6, block # 172469)
ORA-01110: data file 6: '/oradata/ora9i/tablespace01.dbf'
又是出現壞塊

趕緊用system使用者登入:

 select segment_type,owner||'.'||segment_name
from dba_extents
where 6 = file_id and 172469 between block_id and block_id+blocks -1;

   TABLE  TEST.TB_TEST

查出結果壞的是表段

我們可以設定內部事件,使exp跳過這些損壞的block
 SQL> ALTER SYSTEM SET EVENTS '10231 trace name context forever,level 10';
取消內部事件設定
 如果你在初始化引數中設定的,注視之
如果在命令列設定的
alter system set events='10231 trace name context off';

用exp匯出後 再刪除tb_test表 把沒損壞的再導回到資料庫中


另外種方法:建立一個臨時表tb_cashflow_log_tmp的表中除壞塊的資料都檢索出來

1.SQL>CREATE TABLE tb_test_tmp as select * from tb_test;

2.更名原表

SQL>alter table tb_test rename to tb_test _bak;

SQL>alter table tb_test _tmp to tb_test;

3、在tb_test上重新建立索引、約束、授權、trigger等物件

4、 利用表之間的業務關係,把壞塊中的資料補足。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7199859/viewspace-351886/,如需轉載,請註明出處,否則將追究法律責任。

相關文章