zoukankan      html  css  js  c++  java
  • 坏块修复 ORA-00701

    很早之前写的一个小文档没事就发上来:

    刚接手一个小库准备rman全备一下结果报错说有一个坏块无法备份

    查看alert日志发现system表空间存在一个坏块

    Errors in file /u01/app/oracle/admin/sms/bdump/sms_j001_19329.trc:

    ORA-01578: ORACLE data block corrupted (file # 1, block # 33076)

    ORA-01110: data file 1: '/u01/app/oracle/oradata/sms/system01.dbf'

    定位33076号坏块前的extents中的内容

    select

    tablespace_name,segment_type,owner,segment_name

    from

    dba_extents

    where file_id=1

    and block_id<=33076

    and (block_id+blocks-1)>=33076

    /

    TABLESPACE_NAME    SEGMENT_TYPE         OWNER                SEGMENT_NAME

    --------------------           -------------------- -               -------------------                             --------------------

    SYSTEM               INDEX                SYS                  I_OBJAUTH2

    此坏块为一个索引中的块,删除重建。

    查找出坏块中索引的元数据留作备用

    SQL> SET LONG 2000

    SQL> select dbms_metadata.get_ddl('INDEX','I_OBJAUTH2','SYS') FROM DUAL;

    DBMS_METADATA.GET_DDL('INDEX','I_OBJAUTH2','SYS')

    --------------------------------------------------------------------------------

      CREATE INDEX "SYS"."I_OBJAUTH2" ON "SYS"."OBJAUTH$" ("GRANTEE#", "OBJ#", "COL#")

      PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS

      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)

      TABLESPACE "SYSTEM"

    SQL>

    重建索引,报错

    SQL> alter index I_OBJAUTH2 rebuild;

    alter index I_OBJAUTH2 rebuild;

               *

    ERROR at line 1:

    ORA-00701: object necessary for warmstarting database cannot be altered

    百度到eygle说的高水位上有些索引是可以通过rebuild来改变其位置的,但是在正常模式下,Oracle不允许rebuild这些索引;

             两种解决方案1.通过migrate模式。

                                         2.通过一个内部事件

    地址在这里http://www.eygle.com/archives/2007/02/ora_00701_warmstarting.html

    我采取第一种方法

    SQL> shutdown immediate

    Database closed.

    Database dismounted.

    ORACLE instance shut down.

    SQL>

    SQL> startup migrate

    ORACLE instance started.

    SQL> alter index I_OBJAUTH2 rebuild;

    Index altered.

    修改成功

    关库正常起库。

    rman备份成功,alert日志也无报错了。

  • 相关阅读:
    UVALive 5983 MAGRID DP
    2015暑假训练(UVALive 5983
    poj 1426 Find The Multiple (BFS)
    poj 3126 Prime Path (BFS)
    poj 2251 Dungeon Master 3维bfs(水水)
    poj 3278 catch that cow BFS(基础水)
    poj3083 Children of the Candy Corn BFS&&DFS
    BZOJ1878: [SDOI2009]HH的项链 (离线查询+树状数组)
    洛谷P3178 [HAOI2015]树上操作(dfs序+线段树)
    洛谷P3065 [USACO12DEC]第一!First!(Trie树+拓扑排序)
  • 原文地址:https://www.cnblogs.com/snaid/p/3873838.html
Copyright © 2011-2022 走看看