zoukankan      html  css  js  c++  java
  • ORACLE稀有错误代码的阐发与经管(二)

      源头:网海拾贝  




    ORA-01578:Oracle data block corrupted(file # num,block # num)

    孕育发作缘由:当ORACLE访谒一个数据块时,因为1、硬件的I/O错误;2、操作细碎的I/O错误或缓冲效果;3、内存或paging问
    题;4、ORACLE试图访谒一个未被花式化的细碎块失落败;5、数据文件部门溢出等上述几种环境的一种惹起了逻辑坏块大概
    物理坏块,这时就会报ORA-01578的错误。

    经管步履办法:因为ORACLE只要在访谒到无效果的数据文件时才会报错,以是报错的工夫有大概会比实践失落足的工夫要晚,如
    果ORA-01578失落足信息提醒数据坏块指向的是用户本人的数据文件,则用以下步履办法来经管:


    如果经由历程上面的SQL语句查出的坏块泛起有索引上,则只需重修索引即可

    SQL>Select owner,segment_name,segment_type from dba_extents where file_id=<F> and <B> between block_id and
    block_id blocks-1;(<F>和<B>别离是ORA-01578报出的坏块泛起的文件号和块号)


    如果坏块呈而今表上,先用以下语句阐发可否为永世性坏块(倡始多执行一两次,有助于判别数据坏块是永世性的(硬盘
    上的物理坏块)还是随机性的(内存或硬件错误惹起)):

    SQL>Analyze table <table_name> validate structure cascade;

    执行该命令后,大概会泛起以下的效果:

    ORA-01578:与原先错误信息有相反的参数,为永世性的物理或逻辑坏块;与原先错误信息有不同的参数,大概与内存,
    page space和I/O设置配备铺排有关。

    如果用户有此表的最新备份,那么最好是用此备份来恢复此表,大概操纵event 10231来取出坏块以外的数据:

    <1>.先封闭数据库

    <2>.编辑init<sid>.ora文件,插足:

    event=”10231 trace name context forever,level 10”

    <3>.startup restrict

    <4>.创立一个临时表:SQL>create table errortemp as select * from error;(error是坏表的表名)

    <5>.把event从init<sid>.ora文件中删失落侧重起数据库

    <6>.rename坏表,把临时表rename成坏表的表名

    <7>.创立表上的INDEX等

    如果ORA-01578失落足信息提醒数据坏块指向的是数据字典大概是回滚段的话,你应该立即与ORACLE公司讨论,配合探究一个
    好的经管步履办法。

    这里所讲的经管步履办法只是角力计较稀有的一种,一些更为具体的经管步履办法可以搜检一下ORACLE的阻截经管手册,那里面有浞及
    操纵ROWID步履办法来取出坏块以外的数据的步履办法,这里就不引见了。

    响应的英文如下:

    Cause:The given data block was corrupted,probably due to program errors

    Action:Try to restore the segment containing the given data block,This may involve dropping the segment
    and recreating it,If there is a trace file,report the messages recorded in it to customer support.


    ORA-01628:max # of extents num reached for rollback segment num

    孕育发作缘由:这种错误往常为一个回滚段和一个表空间曾经达到MAXEXTENTS参数设置的极限。要看重的是这个MAXEXTENTS不
    是该回滚段或表空间的硬件极限,硬件极限取决于数据库建即刻在init.ora文件中指定的DB_BLOCK_SIZE参数的值。

    经管步履办法:操纵SQL命令ALTER TABLESPACE…STORAGE(MAXEXTENTS XXXX)来增加 MAXEXTENTS,此中“XXXX”值必需年夜于
    错误信息中所指的数值,但不克不及年夜于LARGEST MAXEXTENT的值,如果曾经达到了LARGEST MAXEXTENT VALUE,经管的步履办法就
    是重新创立较年夜的规模尺寸,操纵带有选项COMPRESS=Y的Export对象导出表,如果表空间有可用空间,先给表做一个备
    份,用alter tablespace tablespace_name调动其名字,然后再装载表回数据库。

    搜检其错误泛起的处所,如果呈而今回滚段或索引上,那么必需将其删除侧重修,如果呈而今临时表空间,修正临时表空
    间的存储字段,便可经管这个效果。

    一个报错例子如下:

    ORA-1628:max # extents 50 reached for rollback segment RBS_1

    响应的英文如下:

    Cause: An attempt was made to extend a rollback segment that already has reached its maximum size or space
    could not be allocated in the data dictionary to contain the definition of the object.

    Action:If possible,increase the value of either the MAXEXTENTS or PCTINCREASE initialization parameters or
    find the data dictionary table lacking space and alter the storage parameters,as described in the Oracle8
    Server Administrator’s Guide.




    版权声明: 原创作品,准许转载,转载时请务必以超链接形式标明文章 原始来由 、作者信息和本声明。否则将究查执法责任。

  • 相关阅读:
    minecraft我的世界汇总网站
    扫雷网页版
    扫雷模型(非完全一样)
    设计模式-策略模式
    hadoop(2)hadoop配置
    hadoop(1)入门
    Openssl
    加密解密
    信息安全通信
    Web
  • 原文地址:https://www.cnblogs.com/zgqjymx/p/1975881.html
Copyright © 2011-2022 走看看