我们为使用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,但我尝试升级到XE 11g以匹配此数据库运行的普通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
安装它们也没有效果。
有没有人能够在OracleXE 11g中使用AQ $ _JMS_TEXT_MESSAGE类型并知道如何解决这个问题?或者是否有能力在XE10g中解决它们现在插入的漏洞?
答案 0 :(得分:0)
我找到了解决这个问题的方法。我从旧的OracleXE 10g安装中复制了prvtaqal.plb脚本,然后在OracleXE 11g实例中运行它。类型可用,一切都很好。