我们使用OracleXE在CI服务器上运行了一组针对Oracle数据库的自动化测试。有些测试使用AQ$_JMS_TEXT_MESSAGE类型,如下所示:
msg SYS.AQ$_JMS_TEXT_MESSAGE;
BEGIN
msg := SYS.AQ$_JMS_TEXT_MESSAGE.construct;
msg.set_text(pMessage);在过去,我们使用了OracleXE 10g,但是我试图升级到XE11g,以匹配该数据库运行的普通Oracle服务器。不幸的是,我似乎无法在OracleXE 11g中启用这些类型。在使用它编译这些包时,我会遇到以下错误:
1797/5 PL/SQL: Statement ignored
1797/37 PLS-00302: component 'CONSTRUCT' must be declared
1798/5 PL/SQL: Statement ignored
1798/9 PLS-00302: component 'SET_TEXT' must be declared
1799/5 PL/SQL: Statement ignored默认情况下,OracleXE在10g中也没有安装这些类型,我们通过执行安装中找到的脚本来纠正这种情况:
RDBMS\ADMIN\prvtaqal.plb即使在OracleXE 11g中运行了该程序,类型仍然无法解析。我还搜索了与JMS相关的同一位置的其他文件的内容,发现了这两个文件:
RDBMS\ADMIN\dbmsaqad.sql
RDBMS\ADMIN\prvtaqji.plb安装这些也没有效果。
有人能在AQ$_JMS_TEXT_MESSAGE 11g中使用OracleXE类型并知道如何解决这个问题吗?或者,在XE10g中工作的能力是他们现在堵住的一个洞吗?
发布于 2013-10-07 20:40:54
我找到了解决这个问题的方法。我从旧的prvtaqal.plb 10g安装中复制了OracleXE脚本,并在OracleXE 11g实例中运行了这个脚本。类型是可用的,一切都是好的。
https://stackoverflow.com/questions/19147933
复制相似问题