问题现象
A 用户创建包 USER_A.PKG_1。
B 用户创建公共同义词 USER_B.PKG_1 指向 A 用户的 USER_A.PKG_1。
B 用户创建包 PKG_2,其中调用同义词 USER_B.PKG_1。
B 用户编译包 PKG_2 报错
-5559,PACKAGE does not exist。 示例如下。obclient > alter package PKG_2 compile package; ORA-00600: internal error code, arguments: -5559, PACKAGE 'USER_B.PKG_1' does not exist
适用版本
OceanBase 数据库 V2.x、V3.x 版本。
问题原因
OceanBase 数据库 BUG。resolve condition 的时候没有考虑 package name 可能是同义词的场景。
解决方法
升级至问题已修复版本。
目前已修复的版本包括 OceanBase 数据库企业版 V3.2.3 BP6 Hotfix1 (oceanbase-3.2.3.3-106010052022120116) 及后续版本、V3.2.4 (oceanbase-3.2.4.0-100000072022102819) 及后续版本。
不使用同义词。