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

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

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

  錯誤示例:

  block corrupt 的log
  Current log# seq# mem# : /data/obs_db/obs_log/obs_redo_log
  ***
  Corrupt block relative dba: xff file= blocknum=
  Fractured block found during buffer read
  Data in bad block type: format: rdba:xff

  解決方法

  用Oracle的工具包

  首先需要用dbms_repaircheck_object先檢查一下然後再用dbms_repairfix_corrupt_blocks修復如果修復不了你可以用dbms_repairskip_corrupt_blocks

  具體過程的說明

  DBMS_REPAIRCHECK_OBJECT (
  schema_name IN VARCHAR
  object_name IN VARCHAR
  partition_name IN VARCHAR DEFAULT NULL
  object_type IN BINARY_INTEGER DEFAULT TABLE_OBJECT
  repair_table_name IN VARCHAR DEFAULT REPAIR_TABLE
  flags IN BINARY_INTEGER DEFAULT NULL
  relative_fno IN BINARY_INTEGER DEFAULT NULL
  block_start IN BINARY_INTEGER DEFAULT NULL
  block_end IN BINARY_INTEGER DEFAULT NULL
  corrupt_count OUT BINARY_INTEGER);
  DBMS_REPAIRFIX_CORRUPT_BLOCKS (
  schema_name IN VARCHAR
  object_name IN VARCHAR
  partition_name IN VARCHAR DEFAULT NULL
  object_type IN BINARY_INTEGER DEFAULT TABLE_OBJECT
  repair_table_name IN VARCHAR DEFAULT REPAIR_TABLE
  flags IN BINARY_INTEGER DEFAULT NULL
  fix_count OUT BINARY_INTEGER);
  DBMS_REPAIRSKIP_CORRUPT_BLOCKS (
  schema_name IN VARCHAR
  object_name IN VARCHAR
  object_type IN BINARY_INTEGER DEFAULT TABLE_OBJECT
  flags IN BINARY_INTEGER DEFAULT SKIP_FLAG);
  dbv

  你也可以用dbv工具看一下你現在其他的數據文件有沒有還有壞塊的

  dbv file=yourfilename

  具體的恢復方法

  在Oracle數據庫出現壞塊時Oracle會在警告日志文件(alert_SIDlog)中記錄壞塊的信息

  ORA: ORACLE data block corrupted (file # block # )
  ORA: data file : /oracle/oradata/V/oradata/V/usersdbf

  請注意<AFN>代表壞塊所在數據文件的絕對文件號代表壞塊是數據文件上的第幾個數據塊出現這種情況時應該首先檢查是否是硬件及操作系統上的故障導致Oracle數據庫出現壞塊在排除了數據庫以外的原因後再對發生壞塊的數據庫對象進行處理

[]  []  


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