ORA00603错误解决过程

今天在查看job运行情况时,发现一同步数据的job执行了很长时间,但也没有出现异常记录。手动执行之后出现ORA-00603错误,解决过程如下:

1.插入操作报ORA-00603错误,上网搜索说是temp空间不够,但实际用户所用的临时表空间不是系统的temp空间,而自定义的临时表空间大小也没超出,尝试添加datafile还是解决不了问题。
2.考虑到插入的语句是通过dblink访问远程数据库,可能存在数据量过大的原因,尝试只执行一条插入语句,然后就commit,但只执行一条commit语句也出错,而且程序一直处于停滞状态。
3.排除数据量过大的原因,因为有类似的表也是通过dblink同步远程数据,怀疑是个别表出问题了,于是注释对某个表的插入代码后程序通过,没有报错,锁定目标为表结构或数据出问题。
4.查看alert文件,发现如下错误:

Following on-commit snapshots not refreshed :IMS.V$AGENT_INCORRECT_INFO,看到这个信息就明白了。原来是materialized 视图在自动同步更新数据时失败,因为原表执行了大批量的插入操作,而且数据量较大。同时还要更新视图,导致数据写入堵塞。而materialized 视图是昨天才建立的,改成demand方式更新materialized视图即解决问题。

原文地址:https://www.cnblogs.com/shenba/p/1340866.html