os:linux 2.6.32
db:oracle 11.2.0.4 rac
开发人员发现财务系统的一个存储过程不能编译,一点击编译就报错ORA-03113:通信通道的文件结束。
看到这个错误,我第一反应是plsql developer跟数据库之间的连接存在问题,建议开发将plsql developer中的连接全部重新断开,重新连接一次数据库,但是开发说错误依旧,然后dba运维接手处理该错误。
1、用alter命令在plsql developer工具和sqlplus工具编译也报错
2、将存储过程源码在sqlplus上尝试执行,还是报错
3、换个名字继续编译,报错
4、这个7445错误让我想起了之前遇到的一个类似问题:数据库alert日志中报告了一个错误洪水ORA-03137: TTC 协议内部错误: [12333] [253] [1] [253] [] [] [] [],大量的进程都报这个错误,当时查找出来的问题是因为开发在后台编译了某些对象,导致连接池中跟这些对象有关联的连接报错。这个7445的也类似,再联想到昨天进行过数据库用户权限回收,猜测这个错误也是由sql解析编译引起的。
5、根据错误信息Address not mapped to object猜测是内存中缓存的对象出了问题,编译过程中引用了内存中一个不存在或者已经失效的对象,而这个对象还不能刷出内存,每次编译或者改名字编译都报错。
6、对比call stack发现报错时的调用函数是kgldpo,这个应该是kgl+dpo也就是dependence object
kgldpo0()+1505 signal __sighandler()
db:oracle 11.2.0.4 rac
开发人员发现财务系统的一个存储过程不能编译,一点击编译就报错ORA-03113:通信通道的文件结束。
看到这个错误,我第一反应是plsql developer跟数据库之间的连接存在问题,建议开发将plsql developer中的连接全部重新断开,重新连接一次数据库,但是开发说错误依旧,然后dba运维接手处理该错误。
1、用alter命令在plsql developer工具和sqlplus工具编译也报错
2、将存储过程源码在sqlplus上尝试执行,还是报错
3、换个名字继续编译,报错
4、这个7445错误让我想起了之前遇到的一个类似问题:数据库alert日志中报告了一个错误洪水ORA-03137: TTC 协议内部错误: [12333] [253] [1] [253] [] [] [] [],大量的进程都报这个错误,当时查找出来的问题是因为开发在后台编译了某些对象,导致连接池中跟这些对象有关联的连接报错。这个7445的也类似,再联想到昨天进行过数据库用户权限回收,猜测这个错误也是由sql解析编译引起的。
5、根据错误信息Address not mapped to object猜测是内存中缓存的对象出了问题,编译过程中引用了内存中一个不存在或者已经失效的对象,而这个对象还不能刷出内存,每次编译或者改名字编译都报错。
6、对比call stack发现报错时的调用函数是kgldpo,这个应该是kgl+dpo也就是dependence object
kgldpo0()+1505 signal __sighandler()