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