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 を使用していましたが、このデータベースが実行されている通常の Oracle サーバーと一致するように XE 11g にアップグレードしようとしています。残念ながら、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 に関連する同じ場所にある他のファイルの内容も検索したところ、次の 2 つが見つかりました。

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 に答える