ORA-01578的處理

某天一臺數據庫測試機出現ORA-01578,雖說這是測試機但是這是客戶用的,隨便處理也不行,仔細研究一下。

ORA-01578: ORACLE data block corrupted (file # 2, block # 69449)
ORA-01110: data file 2: '/oracle/app/oradata/BOSS/sysaux01.dbf'


看看是在什麼對象上

SELECT SEGMENT_TYPE,OWNER||'.'||SEGMENT_NAME FROM DBA_EXTENTS WHERE file_id = 2 AND 69450 BETWEEN BLOCK_ID AND BLOCK_ID+BLOCKS -1;


用dbv看看能不能看到什麼情況
dbv file =/oracle/app/oradata/BOSS/sysaux01.dbf


[14:26:30 oracle@SXWG]/home/oracle>dbv file =/oracle/app/oradata/BOSS/sysaux01.dbf

DBVERIFY: Release 11.2.0.3.0 - Production on Wed Nov 6 14:26:35 2013

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

DBVERIFY - Verification starting : FILE = /oracle/app/oradata/BOSS/sysaux01.dbf

DBV-00200: Block, DBA 8458057, already marked corrupt


DBVERIFY - Verification complete

Total Pages Examined         : 256000
Total Pages Processed (Data) : 36210
Total Pages Failing   (Data) : 0
Total Pages Processed (Index): 36703
Total Pages Failing   (Index): 0
Total Pages Processed (Lob)  : 9340
Total Pages Failing   (Lob)  : 0
Total Pages Processed (Other): 26128
Total Pages Processed (Seg)  : 0
Total Pages Failing   (Seg)  : 0
Total Pages Empty            : 147619
Total Pages Marked Corrupt   : 1
Total Pages Influx           : 0
Total Pages Encrypted        : 0
Highest block SCN            : 55800797 (0.55800797)


尼瑪看不到什麼問題


看看可以直接rebulit不
14:33:18 sys@BOSS> alter index SYSMAN.MGMT_METRICS_RAW_PK REBUILD tablespace system online nologging; 
alter index SYSMAN.MGMT_METRICS_RAW_PK REBUILD tablespace system online nologging
*
ERROR at line 1:
ORA-28650: Primary index on an IOT cannot be rebuilt



用下面這句也看不到什麼情況
dbv file=/oracle/app/oradata/BOSS/sysaux01.dbf blocksize=8192



用這個檢查,也不知道什麼
RMAN> BACKUP CHECK LOGICAL VALIDATE DATAFILE 2;     

Starting backup at 06-NOV-13
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=575 device type=DISK
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00002 name=/oracle/app/oradata/BOSS/sysaux01.dbf
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03
List of Datafiles
=================
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
2    OK     1              147619       256017          55833984  
  File Name: /oracle/app/oradata/BOSS/sysaux01.dbf
  Block Type Blocks Failing Blocks Processed
  ---------- -------------- ----------------
  Data       0              36210           
  Index      0              36703           
  Other      0              35468 
  
  
  
想移表再重建索引,好像也不行
 alter table SYSMAN.MGMT_METRICS_RAW move tablespace system;
 
 alter table SYSMAN.MGMT_METRICS_RAW move tablespace system
                   *
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 2, block # 69449)
ORA-01110: data file 2: '/oracle/app/oradata/BOSS/sysaux01.dbf'



 
 看看在哪個列上
 select table_name,COLUMN_NAME from dba_ind_columns where index_name='MGMT_METRICS_RAW_PK';
 
 
 打算把它drop掉再建,先看看創建語句先。
 select dbms_metadata.get_ddl('INDEX','MGMT_METRICS_RAW_PK','SYSMAN') from dual;
 
 
   CREATE UNIQUE INDEX "SYSMAN"."MGMT_METRICS_RAW_PK" ON "SYSMAN"."MGMT_METRICS_RAW" ("TARGET_GUID", "METRIC_GUID", "KEY_VALUE", "COLLECTION_TIMESTAMP")
  PCTFREE 0 INITRANS 4 MAXTRANS 255 COMPUTE STATISTICS COMPRESS 3
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "SYSAUX"
  
  
  drop index SYSMAN.MGMT_METRICS_RAW_PK ;
  
尼瑪發現drop不了,主鍵約束
  
看看能不能把約束先drop了
  select CONSTRAINT_NAME,CONSTRAINT_type from dba_constraints where table_name='MGMT_METRICS_RAW';
  
尼瑪又不能drop
  alter table sysman.MGMT_METRICS_RAW drop constraint MGMT_METRICS_RAW_PK;
  
16:25:14 sys@BOSS> alter table sysman.MGMT_METRICS_RAW drop constraint MGMT_METRICS_RAW_PK;
alter table sysman.MGMT_METRICS_RAW drop constraint MGMT_METRICS_RAW_PK
*
ERROR at line 1:
ORA-25188: cannot drop/disable/defer the primary key constraint for index-organized tables or sorted hash cluster
  
想試試能不能把數據導出,再把用戶清了重導
  nohup exp sysman/oracle buffer=48000000 file=/data/backup/sysman.dmp log=/data/backup/sysman.log &
  
  nohup exp sysman/oracle buffer=48000000 file=/data/backup/sysman2.dmp log=/data/backup/sysman2.log tables=MGMT_METRICS_RAW &
  
  
事實證明這個也不行。。。




打算拷一個表的數據
  create table SYSMAN.MGMT_METRICS_RAW_COPY as select * from SYSMAN.MGMT_METRICS_RAW;
  
  
  create table SYSMAN.MGMT_METRICS_RAW_COPY tablespace system as select * from SYSMAN.MGMT_METRICS_RAW;
  
  16:48:04 sys@BOSS> create table SYSMAN.MGMT_METRICS_RAW_COPY tablespace system as select * from SYSMAN.MGMT_METRICS_RAW;
create table SYSMAN.MGMT_METRICS_RAW_COPY tablespace system as select * from SYSMAN.MGMT_METRICS_RAW
                                                                                    *
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 2, block # 69449)
ORA-01110: data file 2: '/oracle/app/oradata/BOSS/sysaux01.dbf'

尼瑪這都不行。。。


最後放個大招解決了

emca -deconfig dbcontrol db -repos drop
 emca -config dbcontrol db -repos create
發佈了33 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章