1

我们有一组使用 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 中解决这个问题的能力是他们现在堵住的漏洞?

4

1 回答 1

0

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

于 2013-10-07T20:40:54.640 回答