熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL語言 >> 正文

表中出現Block錯誤的恢復方法及具體步驟[2]

2013-11-13 12:38:34  來源: SQL語言 

  ()確定發生壞塊的數據庫對象

  SELECT tablespace_name
  segment_type
  owner
  segment_name
  FROM dba_extents
  WHERE file_id =
  AND between block_id AND block_id+blocks;

  ()決定修復方法

  假如發生壞塊的對象是一個索引那麼可以直接把索引DROP掉後再根據表裡的記錄進行重建假如發生壞塊的表的記錄可以根據其它表的記錄生成的話那麼可以直接把這個表DROP掉後重建假如有數據庫的備份則恢復數據庫的方法來進行修復假如表裡的記錄沒有其它辦法恢復那麼壞塊上的記錄就丟失了只能把表中其它數據壞上的記錄取出來然後對這個表進行重建

  ()用Oracle提供的DBMS_REPAIR包標記出壞塊

  exec DBMS_REPAIRSKIP_CORRUPT_BLOCKS();

  ()使用Create table as select命令將表中其它塊上的記錄保存到另一張表上

  create table corrupt_table_bak
  as
  select * from corrupt_table;

  ()用DROP TABLE命令刪除有壞塊的表

  drop table corrupt_table;

  ()用alter table rename命令恢復原來的表

  alter table corrupt_table_bak
  rename to corrupt_table;

  ()假如表上存在索引則要重建表上的索引

[]  []  


From:http://tw.wingwit.com/Article/program/SQL/201311/16299.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.