http://www.orafaq.com/forum/t/48150/2/
Verify package STANDARD is valid and owned by SYS.
1) Check the status of the package STANDARD using:
connect sys/<password>
SQL> SELECT * FROM DBA_OBJECTS WHERE OWNER = 'SYS'
AND OBJECT_NAME = 'STANDARD';
If you find the status is 'INVALID' then:
SQL> ALTER PACKAGE STANDARD COMPILE;
You may also find that a number of other packages are in 'INVALID'
state. They should ALL be (re)compiled.
If you find STANDARD does not exist then:
Verify "$ORACLE_HOME/rdbms/admin/standard.sql" exists.
If this file does not exist then:
You probably did not install PL/SQL.
You must use the Installer to install PL/SQL.
If the file does exist then:
Verify that your ORACLE_SID is set correctly:
SQL> connect sys/<password>
SQL> @$ORACLE_HOME/rdbms/admin/catproc.sql
2) Verify that STANDARD is owned by SYS:
SQL> SELECT * FROM DBA_OBJECTS WHERE OBJECT_NAME = 'STANDARD';
If OWNER != SYS then catproc.sql was not correctly executed
by SYS. You will have to drop these packages and rerun catproc
as SYS.
3) Try running "catalog.sql" and "catproc.sql" while
opening a spool file
to catch any errors that may have occurred.
Look for Errors like:
ORA-00604: error occurred at recursive SQL level 1
ORA-04031: unable to allocate 2192 bytes of shared memory ("shared pool,
","PROCEDURE$","KQLS heap","KQLS MEM BLOCK")
Create or Replace:
*
ORA-06553: PLS-213: package STANDARD not accessible
grant execute on STANDARD to public
ORA-04042: procedure, function, package, or package body does not exist
In this case, you would need to increase the "SHARED_POOL_SIZE" in the
"init<sid>.ora".
Then re-execute CATALOG and CATPROC.
Increasing "SHARED_POOL_SIZE" will allocate more resources and
allow the scripts to run successfully.
/
要先执行
@catalog
然后
@catproc