环境:
操作系统 IBM AIX 6.1
oracle数据库版本 10.2.0。5
weblogic 版本 9.2
问题:
有功能程序调用存储过程A,但是存储过程A又调用存储过程B,现修改优化存储过程B的一个SQL语句(加暗示),修改后检查数据库失效对象,不存在失效对象。第二天用户使用对应功能时,报错,提示“无法找到对应的存储过程B或存储过程B失效“,再次检查还是不存在失效对象。然后手动重新编译存储过程B及存储过程A,因为是业务高峰期,编译较长时间编译完成,但是重新访问对应功能,依然报错“无法找到对应的存储过程B或存储过程B失效“,然后重启一个应用server,对应server上的功能访问不报错了,但是其他没重启的server上的功能还是报错,直到全部server重启后,应用通过F5地址访问才恢复正常。
1、修改单独的存储过程,不涉及多层调用的存储过程时,没发现必须重启server才生效的问题。
是涉及子存储过程修改必须要重新server才能生效吗?
正常的存储过程有变化,首次访问会自动编译,编译通过后后续应用访问都正常的?
2、存储过程内容变化,为什么跟应用server有关,是存在缓存吗?缓存在哪里?为什么需要重启生效?
谢谢!