数据库版本:

SQL> select * from v$version;
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
PL/SQL Release 10.2.0.4.0 - Production
CORE    10.2.0.4.0      Production
TNS for HPUX: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production

组件CATPROC处于invalid状态
SQL> select * from dba_registry;

COMP_ID
------------------------------
COMP_NAME
------------------------------------------------------------------------------------------------------------------------------------[02:19:29]------------------
VERSION                        STATUS                 MODIFIED                NAMESPACE                      CONTROL
------------------------------ ---------------------- ----------------------- ------------------------------ -----------------------[02:19:29]-------
SCHEMA                         PROCEDURE                                                     STARTUP  PARENT_ID
------------------------------ ------------------------------------------------------------- -------- ------------------------------
OTHER_SCHEMAS
------------------------------------------------------------------------------------------------------------------------------------[02:19:29]------------------


ODM
Oracle Data Mining
10.2.0.4.0                     VALID                  12-AUG-2013 03:46:46    SERVER                         SYS
DMSYS                          VALIDATE_ODM


CATALOG
Oracle Database Catalog Views
10.2.0.4.0                     VALID                  12-AUG-2013 03:46:44    SERVER                         SYS
SYS                            DBMS_REGISTRY_SYS.VALIDATE_CATALOG


CATPROC
Oracle Database Packages and Types
10.2.0.4.0                    INVALID                12-AUG-2013 03:46:44    SERVER                         SYS
SYS                            DBMS_REGISTRY_SYS.VALIDATE_CATPROC
DBSNMP,OUTLN,SYSTEM


查找该组建相关的包:
SQL> set serveroutput on;
SQL> declare
 2  start_time date;
 3  end_time date;
 4  object_name varchar(100);
 5  object_id char(10);
 6  begin
 7  SELECT date_loading, date_loaded into start_time, end_time FROM registry$ WHERE
 8  cid = 'CATPROC';    
 9  SELECT obj#,name into object_id,object_name
10        FROM obj$
11        WHERE status > 1 AND
12              (ctime BETWEEN start_time AND end_time OR
13     mtime BETWEEN start_time AND end_time OR
14               stime BETWEEN start_time AND end_time) AND
15               ROWNUM <=1;                          
16  dbms_output.put_line('Please compile Invalid object '||object_name||'  
17  Object_id '||object_id );
18  EXCEPTION
19    WHEN NO_DATA_FOUND THEN
20       dbms_output.put_line('CATPROC can be validated now' );        
21  end;
22  /
Please compile Invalid object DBMS_SQLPA
Object_id 9662

找到无效对象:
SQL> select owner,object_id,object_name,OBJECT_TYPE from dba_objects where object_id=9662;

OWNER                           OBJECT_ID
------------------------------ ----------
OBJECT_NAME                                                                                                                      OBJ[02:29:29]ECT_TYPE
-------------------------------------------------------------------------------------------------------------------------------- ---[02:29:29]----------------
SYS                                  9662
DBMS_SQLPA

SQL> alter package dbms_sqlpa compile body;;                

Warning: Package Body altered with compilation errors.    

SQL> show error                                            
Errors for PACKAGE BODY DBMS_SQLPA:                        

LINE/COL ERROR                                            
-------- --------------------------------------------------
113/5    PL/SQL: SQL Statement ignored                    
118/44   PL/SQL: ORA-00904: "OTHER_XML": invalid identifier

发现编译该包的时候报错,出现在113行;由于系统包代码被oracle加密,可以使用halledba的工具fyunwrap解密;
查看该包113行内容为:

   INSERT INTO PLAN_TABLE
              (ID, POSITION, DEPTH, OPERATION, OPTIONS, OBJECT_NAME,
               CARDINALITY, BYTES, TEMP_SPACE, COST, IO_COST, CPU_COST,  
               TIME, PARTITION_START, PARTITION_STOP, OBJECT_NODE, OTHER_TAG,
               DISTRIBUTION, PROJECTION, ACCESS_PREDICATES, FILTER_PREDICATES,
               QBLOCK_NAME, OBJECT_ALIAS, OTHER_XML)
   (SELECT /*+ opt_param('parallel_execution_enabled', 'false') */

              ID, POSITION, DEPTH, OPERATION, OPTIONS, OBJECT_NAME,
              CARDINALITY, BYTES, TEMP_SPACE, COST, IO_COST, CPU_COST,  
              TIME, PARTITION_START, PARTITION_STOP, OBJECT_NODE, OTHER_TAG,
              DISTRIBUTION, PROJECTION, ACCESS_PREDICATES, FILTER_PREDICATES,
              QBLOCK_NAME, OBJECT_ALIAS, OTHER_XML
   FROM TABLE(SQL_PLAN));

检查plan_table:
SQL> select * from dba_objects where object_name='PLAN_TABLE';

OWNER                          OBJECT_NAME                    SUBOBJECT_NAME                  OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE
------------------------------ ------------------------------ ------------------------------ ---------- -------------- -------------[02:39:19]------
CREATED      LAST_DDL_TIM TIMESTAMP           STATUS  T G S
------------ ------------ ------------------- ------- - - -
SYS                            PLAN_TABLE                                                        236182         236182 TABLE
03-JAN-11    03-JAN-11    2011-01-03:11:25:24 VALID   N N N

PUBLIC                         PLAN_TABLE                                                          7700                SYNONYM
19-APR-09    19-APR-09    2009-04-19:22:11:18 VALID   N N N

SQL> @get_ddl                                                              

 CREATE TABLE "SYS"."PLAN_TABLE"                                      
  (    "STATEMENT_ID" VARCHAR2(30),                                      
       "TIMESTAMP" DATE,                                                  
       "REMARKS" VARCHAR2(80),                                            
       "OPERATION" VARCHAR2(30),                                          
       "OPTIONS" VARCHAR2(255),                                          
       "OBJECT_NODE" VARCHAR2(128),                                      
       "OBJECT_OWNER" VARCHAR2(30),                                      
       "OBJECT_NAME" VARCHAR2(30),                                        
       "OBJECT_INSTANCE" NUMBER(*,0),                                    
       "OBJECT_TYPE" VARCHAR2(30),                                        
       "OPTIMIZER" VARCHAR2(255),                                        
       "SEARCH_COLUMNS" NUMBER,                                          
       "ID" NUMBER(*,0),                                                  
       "PARENT_ID" NUMBER(*,0),                                          
       "POSITION" NUMBER(*,0),                                            
       "COST" NUMBER(*,0),                                                
       "CARDINALITY" NUMBER(*,0),                                        
       "BYTES" NUMBER(*,0),                                              
       "OTHER_TAG" VARCHAR2(255),                                        
       "PARTITION_START" VARCHAR2(255),                                  
       "PARTITION_STOP" VARCHAR2(255),                                    
       "PARTITION_ID" NUMBER(*,0),                                        
       "OTHER" LONG,                                                      
       "DISTRIBUTION" VARCHAR2(30),                                      
       "CPU_COST" NUMBER(*,0),                                            
       "IO_COST" NUMBER(*,0),                                            
       "TEMP_SPACE" NUMBER(*,0)                                          
  )  

另外一个正常库的plan_table表结构为
CREATE TABLE "SYS"."PLAN_TABLE"          
  (    "STATEMENT_ID" VARCHAR2(30),      
       "PLAN_ID" NUMBER,                  
       "TIMESTAMP" DATE,                  
       "REMARKS" VARCHAR2(4000),          
       "OPERATION" VARCHAR2(30),          
       "OPTIONS" VARCHAR2(255),          
       "OBJECT_NODE" VARCHAR2(128),      
       "OBJECT_OWNER" VARCHAR2(30),      
       "OBJECT_NAME" VARCHAR2(30),        
       "OBJECT_ALIAS" VARCHAR2(65),      
       "OBJECT_INSTANCE" NUMBER(*,0),    
       "OBJECT_TYPE" VARCHAR2(30),        
       "OPTIMIZER" VARCHAR2(255),        
       "SEARCH_COLUMNS" NUMBER,          
       "ID" NUMBER(*,0),                  
       "PARENT_ID" NUMBER(*,0),          
       "DEPTH" NUMBER(*,0),              
       "POSITION" NUMBER(*,0),            
       "COST" NUMBER(*,0),                
       "CARDINALITY" NUMBER(*,0),        
       "BYTES" NUMBER(*,0),              
       "OTHER_TAG" VARCHAR2(255),        
       "PARTITION_START" VARCHAR2(255),  
       "PARTITION_STOP" VARCHAR2(255),    
       "PARTITION_ID" NUMBER(*,0),        
       "OTHER" LONG,                      
       "DISTRIBUTION" VARCHAR2(30),      
       "CPU_COST" NUMBER(*,0),            
       "IO_COST" NUMBER(*,0),            
       "TEMP_SPACE" NUMBER(*,0),          
       "ACCESS_PREDICATES" VARCHAR2(4000),
       "FILTER_PREDICATES" VARCHAR2(4000),
       "PROJECTION" VARCHAR2(4000),      
       "TIME" NUMBER(*,0),                
       "QBLOCK_NAME" VARCHAR2(30),        
       "OTHER_XML" CLOB
发现明显表结构不一致;
对plan_table表重建或者rename;
重新运行编译脚本
@?/rdbms/admin/utlrp.sql
SQL> execute DBMS_REGISTRY_SYS.VALIDATE_CATPROC;

PL/SQL procedure successfully completed.

SQL> select * from dba_registry;

COMP_ID
------------------------------
COMP_NAME
------------------------------------------------------------------------------------------------------------------------------------[02:52:40]------------------
VERSION                        STATUS                 MODIFIED                NAMESPACE                      CONTROL
------------------------------ ---------------------- ----------------------- ------------------------------ -----------------------[02:52:40]-------
SCHEMA                         PROCEDURE                                                     STARTUP  PARENT_ID
------------------------------ ------------------------------------------------------------- -------- ------------------------------
OTHER_SCHEMAS
------------------------------------------------------------------------------------------------------------------------------------[02:52:40]------------------
CONTEXT
Oracle Text
10.2.0.4.0                     VALID                  13-AUG-2013 02:51:32    SERVER                         SYS
CTXSYS                         VALIDATE_CONTEXT


EXF
Oracle Expression Filter
10.2.0.4.0                     VALID                  13-AUG-2013 02:51:31    SERVER                         SYS
EXFSYS                         VALIDATE_EXF


RUL
Oracle Rules Manager
10.2.0.4.0                     VALID                  13-AUG-2013 02:51:32    SERVER                         SYS
EXFSYS                         VALIDATE_RUL


OWM
Oracle Workspace Manager
10.2.0.4.3                     VALID                  13-AUG-2013 02:51:31    SERVER                         SYS
WMSYS                          VALIDATE_OWM


ODM
Oracle Data Mining
10.2.0.4.0                     VALID                  13-AUG-2013 02:51:32    SERVER                         SYS
DMSYS                          VALIDATE_ODM


CATALOG
Oracle Database Catalog Views
10.2.0.4.0                     VALID                  13-AUG-2013 02:51:31    SERVER                         SYS
SYS                            DBMS_REGISTRY_SYS.VALIDATE_CATALOG


CATPROC
Oracle Database Packages and Types
10.2.0.4.0                     VALID                  13-AUG-2013 02:52:25    SERVER                         SYS
SYS                            DBMS_REGISTRY_SYS.VALIDATE_CATPROC
DBSNMP,OUTLN,SYSTEM    

再次检查发现catproc组建状态已经被修复