zoukankan      html  css  js  c++  java
  • 如何检查数据是否有损坏数据块的问题

    ORA-01555: snapshot too old: rollback segment number  with name "" too small 
    ORA-22924: snapshot too old

    能是大字段的段中数据发生了损坏,可以根据以下步骤测试一下:

    1、先可以使用如下方法定位损坏的LOB值所在记录的rowid:

    create table tbl_corrupted_lob_tmp(corrupted_rowid rowid);  
      
    set concat off  
      
    declare  
      error_1555 exception;  
      pragma exception_init(error_1555,-1555);  
      num number;  
    begin  
      for cursor_lob in (select rowid r, ATTACHMENT_CONTENT from TOP_ATTACHMENT_CONTENT) loop  
        begin  
          num := dbms_lob.instr(cursor_lob.ATTACHMENT_CONTENT, hextoraw ('889911')) ;  
        exception  
          when error_1555 then  
            insert into tbl_corrupted_lob_tmp values (cursor_lob.r);  
            commit;  
        end;  
      end loop;  
    end;  
    /  


    2、根据tbl_corrupted_lob_tmp表中存储的rowid值找到出错记录的rowid

    3、将对应rowid的记录删除:

         delete top_attachment_content where rowid='xxxxxxx';

    4、重新导出数据。

  • 相关阅读:
    Redis 主从复制
    Redis 持久化
    Redis 的消息订阅/发布
    Redis 排序功能 -- SORT
    Redis 过期时间与缓存应用
    Redis 事务
    Redis 5种数据类型的常用命令
    Java 框架的核心 -- 反射
    类的加载和初始化 ---- new 一个对象时,在JVM 中的过程是什么
    了解spring
  • 原文地址:https://www.cnblogs.com/HondaHsu/p/3054416.html
Copyright © 2011-2022 走看看