zoukankan      html  css  js  c++  java
  • 记录一次oracle的坑 ORA08103

    背景:程序正常运行中,突然技术支持人员反映数据库数据好久没有增加,于是乎各种排查问题,但是一直没有找到原因,由于代码比较久,也不是本人所写,更气的是居然用的是oracle数据库,并且是通过java代码调用存储过程。存储过程中包含了大量的逻辑。而java服务的日志也就少的可怜,根本无法排查出具体问题,唯一可以确认的是存储过程有问题。

    1.首先排查存储过程,从上到下依次看,一共二百多行的代码,花了一小时看了一遍,感觉没什么问题,于是又通过手动输入参数,通过plsql测试存储过程,也没什么问题。

    2.经历了第一步,感觉整个世界都不好了,于是开始拆解存储过程逻辑,将存储过程逻辑转移到java代码中(改写了半天),打印详细日志,每一句sql都打印日志。终于在一句insert处出现了问题,返回结果 内部错误。

    3.针对这张表,开始了有一个坑,

      a.  select * from tableName; 完全没有问题。

      b. select count(*) from tableName; 提示   ORACLE 报ORA-08103: 对象不再存在错误.

        wtf?什么情况??明明数据库用眼睛是可以看到这个表的,并且select *  是可以正常查询出数据的,难道是眼睛有问题?于是又开始了三次同样的sql,还是同意的结果,于是终于拿出了神器 google,google一圈发现都是说数据损坏,导致无法插入。

           c.  复制表咯。create table tableNameNew as select * from tableName;

      d. 删除原来的表 (本来想重命名的,但是重命名失败,于是直接删除)

      e.重命名新表名为旧表名。

    大功告成!!!!!!!!!!!!oracle线上使用检查会出现崩溃还有用户被锁定的情况,很崩溃。

  • 相关阅读:
    PNG文件格式具体解释
    opencv2对读书笔记——使用均值漂移算法查找物体
    Jackson的Json转换
    Java实现 蓝桥杯VIP 算法训练 装箱问题
    Java实现 蓝桥杯VIP 算法训练 装箱问题
    Java实现 蓝桥杯VIP 算法训练 单词接龙
    Java实现 蓝桥杯VIP 算法训练 单词接龙
    Java实现 蓝桥杯VIP 算法训练 方格取数
    Java实现 蓝桥杯VIP 算法训练 方格取数
    Java实现 蓝桥杯VIP 算法训练 单词接龙
  • 原文地址:https://www.cnblogs.com/chengzhihua/p/11543197.html
Copyright © 2011-2022 走看看