这个专题讲一些日常运维的异常处理

1. 现象

开发人员找说应用连接不上,报ORA-01555错误

2. 原因查找

2.1 查看undo使用率等情况

第一反应当然是查询是否undo表空间不足

通过如下命令查询

SELECT round(((SELECT (NVL(SUM(bytes), 0))FROM dba_undo_extents

WHERE tablespace_name =

(select value from v$parameter

where lower(name) = 'undo_tablespace')

AND status IN ('ACTIVE', 'UNEXPIRED')) * 100) /

(SELECT SUM(bytes) FROM dba_data_files

WHERE tablespace_name =

(select value from v$parameter

where lower(name) = 'undo_tablespace')), 2) PCT_INUSE

FROM dual

使用率很低,而且数据库重启过,我们暂时排除

2.2 检查表的情况

我们首先执行手动执行该语句,在sqlplus中运行也是报错

在plsql中执行显示value error

字段是clob字段,看来这就是原因了,是由于clob字段损坏导致

因为CLOB字段的undo信息是存储在clob块中的,其保留策略通过PCTVERSION(百分比) 和RETENTION(时间)字段控制

2.3 检查clob损坏情况

我们通过如下语句查询该clob字段是否有损坏

将替换成value error的字段名

将替换成该字段所在的表名

set serverout on

exec dbms_output.enable(100000);

declare

page number;

len number;

c varchar2(10);

charpp number := 8132/2;

begin

for r in (select rowid rid, dbms_lob.getlength () len

from ) loop

if r.len is not null then

for page in 0..r.len/charpp loop

begin

select dbms_lob.substr (, 1, 1+ (page * charpp))

into c

from

where rowid = r.rid;

exception

when others then

dbms_output.put_line ('Error on rowid ' ||R.rid||' page '||page);

dbms_output.put_line (sqlerrm);

end;

end loop;

end if;

end loop;

end;

/

这时我们查出来有三行,我们记住其rowid

2.4 跟踪01555错误

我们可以利用如下语句对该错误进行跟踪,当发生错误时alert日志会有记录并生成trace文件

alter system set events '1555 trace name errorstack level 3';

2.5 expdp排查clob损坏的行

如果在导出的话,clob字段损坏会导致失败,这时我们可以使用如下参数跳过指定的行

expdp \"/ as sysdba\" tables="ISUGDP"."TEXT_FOR_ECP" directory=DROPZONE dumpfile=table.dmp logfile=table.log QUERY=\"WHERE rowid NOT IN \(SELECT CORRUPTED_ROWID FROM CORRUPTED_ROWS\)\"

3. 解决方法

知道了原因后,如果这几行数据很重要,则需要别的恢复手段将其恢复(RMAN)

如果不需要这几行数据我们可以将其删除

delete from table where rowid='AAAV1RAAEAAD5dGAAC';

之后问题解决

4. 参考连接

django oracle clob,记一次clob字段损坏导致的01555错误相关推荐

  1. 关于字段超长导致的插入错误的提示信息(value too long for type character varying)

    关于字段超长导致的插入错误的提示信息 背景 你们肯定遇到过这样的错误,跑的程序需要插入或更新一张表,值的长度超过字段最大限制而报错.要如何定位是哪个字段长度过小导致的? 方法 1.先要获取错误信息 最 ...

  2. oracle 精度异常01438,序列值超过字段精度导致ORA-01438

    业务前台报错插入工单失败:ORA-01438 ORA-01438: 值大于此列指定的允许精确度 后来和业务人员确认是一个number(a,b)类型的字段,这个字段引用了一个sequence,而这个se ...

  3. Oracle 中LONG RAW BLOB CLOB类型介绍

    说明: RAW: 未加工类型,可存储二进制数据或字节符 LONG: 可变长的字符串数据,最长2G,LONG具有VARCHAR2列的特性,可以存储长文本一个表中最多一个LONG列[不建议使用] LONG ...

  4. oracle数据库的blob和clob类型,是什么意思和区别

    BLOB和CLOB都是大字段类型,BLOB是按二进制来存储的,而CLOB是可以直接存储文字的.其实两个是可以互换的的,或者可以直接用LOB字段代替这两个.但是为了更好的管理ORACLE数据库,通常像图 ...

  5. java clob http传送_JAVA CLOB作为参数传给ORACLE后台

    工作中遇到了个小问题,有这样的SQL   SELECT * FROM STUDENS WHERE ID  IN (:1,:2,:3,.....:1000);   这里面的参数个数是动态变化的, 由用户 ...

  6. oracle的clob赋值_Oracle中Clob类型处理解析 (转)

    最近利用NHibernate映射类型为Clob字段在插入数据时发现当字符的字节数(一个半角字符一个字节,一个全角字符两个字节)在2000-4000之间时报错(ORA-01461:仅可以插入LONG列的 ...

  7. clob mybatis_spring + mybatis 存取clob

    存的时候会比较麻烦,需要使用select for update的方式更新数据,如果原来没有这一条数据,还需要先新增,新增的时候需要将clob字段存为oracle.sql.CLOB.empty_lob( ...

  8. oracle表修改语句,Oracle的常用修改表及字段的语句

    单行注释:-- 多行注释:/* */ Oracle中修改表结构 增加字段 ALTER TABLE table_name ADD column_name data_type; 删除字段 ALTET TA ...

  9. SQLSERVER和ORACLE批量处理表名和字段名大写

    在sql移植到oracle过程中,都会遇到表名和字段名大写的问题,因为在oracle中默认表名和字段名都是大写的,虽然可以通过使用双引号的方式进行操作,如select * from "tes ...

最新文章

  1. LeetCode 674. Longest Continuous Increasing Subsequence--python,Java,C++解法
  2. soundex mysql_MySQL SOUNDEX()用法及代码示例
  3. 【评论】为什么我的工资最低!
  4. Scala概述及学习Scala的优势
  5. iOS 关于集成融云IM的一些常用方法
  6. 前端学习(325):javascript历史
  7. Drupal常用开发工具(一)——Devel模块
  8. Django Python Web应用程序框架简介
  9. JavaScript 用typeof来判断是否是对象的弊端
  10. CentOS 7.0安装配置Vsftp服务器
  11. 网页设计作业作品成品HTML5+CSS大作业——简单的程序员个人博客(7页) 大学个人博客网页制作教程 表格布局网页模板
  12. android车牌识别方法,基于Android、iOS系统的移动端车牌识别技术,实现高效、准确地录入...
  13. 一个泛型句柄类--C++模板和泛型编程--c++ primer
  14. 浪曦struts2学习笔记1
  15. 医院门诊管理系统之信息管理
  16. java导入ldif文件
  17. R语言使用lm函数构建多元回归模型(Multiple Linear Regression)、并根据模型系数写出回归方程、使用resid函数或者residuals计算出模型的残差值
  18. 国内云计算的下半场机遇在哪里?
  19. Explorer经常出错重启是什么原因?
  20. 由十多位架构师打造的《面试突击核心讲》到底有多强?肝完金三银四稳了。

热门文章

  1. Leetcode 相关资料
  2. 【小项目关键技术五】控制全彩 WS2812 灯环/灯带
  3. 【Python】调用百度云API驾驶行为分析 Driver Behavior
  4. 【Matlab 图像】开闭运算 imopen imclose
  5. 3.12 总结-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
  6. 稻盛和夫《活法》读后感
  7. 揭开雷达的面纱(科普)探测能力
  8. Apache Flink 官方文档--概览
  9. 关于sendmail报错“did not issue MAIL/EXPN/VRFY/ETRN during connection to
  10. mybatis association表关联与rowbounds共同使用时的异常及其解决方案