最近在看ORACLE认证的147 SG最后一章dependencies的时候发现一个有意思的地方:
SG中对于Remote Dependencies有这么一段话:
The first time a recompiled remote subprogram is invoked by a local subprogram, you get an execution error and the local subprogram is invalidated; the second time it is invoked, implicit automatic recompilation takes place.
但是我在9.2.0.6环境下测试,结果有点不一样: 文中说的invoke只有在重开session再invoke, 才是文中结果. 但是若没有重开session, 结果却如下(我的测试是本地package调用远程package 更改远程的package spec, 导致远程pacakge body invalid):
第一次invoke: 返回错误信息, 说timestamp变掉
第二次invoke: 提示本地pacakge为invalid状态, 不能call(查看package body确实为invalid)
的三次: 本地pacakge中任何代码都不执行了, 也不返回任何错误(查看package已被recompile).
后面还做了其他一些case的测试, 也没有得出最终有规律的结果, 反正就是再一个session过程中, 远程package被改掉, 本地session试图多次调用远程的pacakge的时候会出现一些意想不到的奇怪结果.
[@more@]来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/767125/viewspace-995446/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/767125/viewspace-995446/