I am getting the following error when doing a full export:
EXP-00008: ORACLE error 4045 encountered
ORA-04045: errors during recompilation/revalidation of SYS.DBMS_AQ_IMPORT_INTERNAL
ORA-06552: PL/SQL: Compilation unit analysis terminated
ORA-06553: PLS-905: object SYS.AQ$_SUBSCRIBERS is invalid
ORA-06508: PL/SQL: could not find program unit being called
ORA-06512: at line 1
ORA-06512: at "SYS.DBMS_SYS_SQL", line 1118
ORA-06512: at "SYS.DBMS_SQL", line 316
ORA-06512: at "SYS.DBMS_EXPORT_EXTENSION", line 84
ORA-06512: at "SYS.DBMS_EXPORT_EXTENSION", line 135
ORA-06512: at line 1
EXP-00000: Export terminated unsuccessfully
I have tried other suggestions involving running the catexp.sql (ran under sys) script, but to no avail. Can I import the SYS.AQ$_SUBSCRIBERS from another database that has no errors with a full export? What does the AQ$_SUBSCRIBER object hold? Any suggestions?!!!! TIA!!
I know nothing about this but here is what I dug up, maybe something will click.
The DBMS_AQ package provides an interface to the operational tasks of Oracle AQ. To use these programs, you must have been granted the new role AQ_USER_ROLE.
The subscriber list is used to enqueue a message to a list of subscribers for a given queue. You will call the DBMS_AQADM.QUEUE_SUBSCRIBERS function to obtain the subscript list for a queue. The subscripter list table type is, therefore, defined in the DBMS_AQADM package. As you can see, both of these table types are identical in structure; only their names differ.
The QUEUE_SUBSCRIBERS function returns the list of subscribers associated with the specified queue. This list is an index table, as shown in the header:
(queue_name IN VARCHAR2)
Parameters are summarized below:
queue_name Name of the queue
The following procedure encapsulates the steps needed to obtain this list and then display it:
CREATE OR REPLACE PROCEDURE showsubs (qname IN VARCHAR2)
/* Retrieve the list. */
sublist := DBMS_AQADM.QUEUE_SUBSCRIBERS (qname);
v_row := sublist.FIRST;
EXIT WHEN v_row IS NULL;
v_row := sublist.NEXT (v_row);
Now let's put the procedure to use. First of all, you can only associate a set of subscribers with a queue which supports multiple consumers. These steps are shown below:
17. Finish converting the catalog to a full ORACLE8 catalog by running cat8000.sql, usually located in the $ORACLE_HOME/rdbms/admin subdirectory on UNIX. Then run catalog.sql located in the same place. Finally, run catproc.sql to rebuild the PL/SQL and utility packages. If needed, also run any other "cat".sql scripts to install any purchased options as required.
Scripts run by CATPROC.SQL
All of these scripts are located in the $ORACLE_HOME/rdbms/admin directory or its equivalent on your platform. These scripts build virtually the entire set of Oracle utilities including PL/SQL.
Scripts run by catproc.sql are:
catprc.sql This creates data dictionary views for types, stored procedures, and triggers. This script must be run while connected to sys or internal.
catjobq This script creates the catalog views for the job queue. This script must be run while connected as SYS or INTERNAL.
catrpc This script creates internal views for RPC (Remote Procedural Calls). These views are needed only for databases with the procedural option that are accessed by remote databases. This script must be run as SYS.
dbmsstdx.sql This package provides kernel extensions to package standard. Routines in this package do not need to be qualified by the owner or package name, similar to the behavior of package 'standard'. This package mostly contains utility routines for triggers.
pipidl.sql This creates the package Portable IDL.
pidian.sql This creates the package Diana.
diutil.sql This creates Diana application routines.
pistub.sql This script generates the subprogram stub generator.
plitblm.sql This is PL/sql Index-TaBLe Methods Package for index-table operations. This package must be loaded by catproc.sql script. This file needs to be kept in sync with its .pls version (icd/plitblm.pls) currently.