You can validate different components in the database by running the script $ORACLE_HOME/rdbms/admin/catpatch.sql via SQL*Plus:
spool catpatch.log
connect / as sysdba
shutdown immediate
startup migrate
@?/rdbms/admin/catpatch.sql
@?/rdbms/admin/utlrp.sql
SELECT comp_name, version, status
FROM dba_registry;
spool off
If you are on 10g Release 2, then perform:
connect / as sysdba
spool dictreload.log
startup restrict
alter system set shared_pool_size = 512M scope=spfile;
alter system set java_pool_size = 150M scope=spfile;
alter system set aq_tm_processes = 1 scope=spfile;
alter system set streams_pool_size = 10M scope=spfile;
alter system set cluster_database = false scope=spfile; -- If on RAC
shutdown immediate
startup upgrade
@?/rdbms/admin/catalog.sql
@?/rdbms/admin/catproc.sql
@?/rdbms/admin/catupgrd.sql
spool off
alter system set cluster_database = true scope=spfile; -- If on RAC
shutdown immediate
startup
@?/rdbms/admin/utlrp.sql
重新编译无效数据库组件