• 坏块修复 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日志也无报错了。

  • 相关阅读:
    字符串hash
    堆优化的最短路
    unordered_map 的火车头
    扩展欧几里得求ax+by=c的最小正整数解
    欧拉筛
    Codeforces Round 649 (Rated for Div. 2)D. Ehab s Last Corollary (图论+简单环)
    牛客SQL题解-找出所有员工具体的薪水salary情况
    牛客SQL题解-查找薪水变动超过15次的员工号emp_no以及其对应的变动次数t
    牛客SQL题解-查找所有已经分配部门的员工的last_name和first_name以及dept_no,也包括暂时没有分配具体部门的员工
    牛客SQL题解- 查找所有已经分配部门的员工的last_name和first_name
  • 原文地址:https://www.cnblogs.com/snaid/p/3873838.html
Copyright © 2020-2023  润新知