ORA-01578: 处理一例。

来源:互联网 发布:新倩女幽魂for mac 编辑:程序博客网 时间:2024/05/08 20:36

警告日志里出现错误:

Errors in file /u01/app/oracle/diag/rdbms/r92cfdb/r92cfdb/trace/r92cfdb_smon_22972.trc  (incident=361333):

ORA-01578: ORACLE data block corrupted (file # 11, block # 2186414)

ORA-01110: data file 11: '/u01/app/oracle/oradata/r92cfdb/SEARCH_DATA_1.dbf'

偿试恢复:

SQL> select * from v$database_block_corruption;


     FILE#     BLOCK#     BLOCKS CORRUPTION_CHANGE# CORRUPTIO
---------- ---------- ---------- ------------------ ---------
        11    2186414          1                  0 FRACTURED
-bash-3.2$ rman target / 


Recovery Manager: Release 11.2.0.4.0 - Production on Tue Mar 10 03:10:00 2015


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


connected to target database: R92CFDB (DBID=1492361450)


RMAN> blockrecover datafile 11 block 2186414;


Starting recover at 10-MAR-15
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=5066 device type=DISK


RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 03/10/2015 03:10:35
RMAN-06026: some targets not found - aborting restore
RMAN-06023: no backup or copy of datafile 11 found to restore

看看是什么对象损坏了吧:

SQL> SELECT tablespace_name, segment_type, owner, segment_name
  2      FROM dba_extents
  3    WHERE file_id = &fileid
  and &blockid between block_id AND block_id + blocks - 1;  4  
Enter value for fileid: 11
old   3:   WHERE file_id = &fileid
new   3:   WHERE file_id = 11
Enter value for blockid: 2186414
old   4:   and &blockid between block_id AND block_id + blocks - 1
new   4:   and 2186414 between block_id AND block_id + blocks - 1




TABLESPACE_NAME                SEGMENT_TYPE       OWNER
------------------------------ ------------------ ------------------------------
SEGMENT_NAME
--------------------------------------------------------------------------------
SEARCH_DATA                    INDEX              SEARCHSYS
DR$EQ$DOC_PATH_IDX$X

还是是索引,

既然不能恢复,删除重新建立吧:

set long 9999

 select dbms_metadata.get_ddl('INDEX','DR$EQ$DOC_PATH_IDX$X','SEARCHSYS') from dual;



  CREATE INDEX "SEARCHSYS"."DR$EQ$DOC_PATH_IDX$X" ON "SEARCHSYS"."DR$EQ$DOC_PATH
_IDX$I" ("TOKEN_TEXT", "TOKEN_TYPE", "TOKEN_FIRST", "TOKEN_LAST", "TOKEN_COUNT")


  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS COMPRESS 2
  STORAGE(INITIAL 5242880 NEXT 52428800 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "SEARCH_DATA"

问题解决。


0 0
原创粉丝点击