无法在OracleXE 11g中启用JMS类型 - 必须声明组件“CONSTRUCT”

时间:2013-10-02 22:35:42

标签: oracle11g oracle-xe

我们为使用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中解决它们现在插入的漏洞?

1 个答案:

答案 0 :(得分:0)

我找到了解决这个问题的方法。我从旧的OracleXE 10g安装中复制了prvtaqal.plb脚本,然后在OracleXE 11g实例中运行它。类型可用,一切都很好。