DOC>#######################################################################
DOC>
DOC>? The above PL/SQL lists theSERVER components in the upgraded
DOC>? database, along with theircurrent version and status.
DOC>
DOC>? Please review the statusand version columns and look for
DOC>? any errors in the spool logfile.? If there are errors in the spool
DOC>? file, or any components arenot VALID or not the current version,
DOC>? consult the Oracle DatabaseUpgrade Guide for troubleshooting
DOC>? recommendations.
DOC>
DOC>? Next shutdown immediate,restart for normal operation, and then
DOC>? run utlrp.sql to recompileany invalid application objects.
DOC>
DOC>#######################################################################
DOC>#######################################################################
2、 再次重启数据库
SQL> shutdown immediate? ? ? ? ? ? ?
SQL> startup
ORACLE instance started.
3、编译无效对象脚本utlrp.sql
utlrp.sql脚本可以在数据库运行的状态下执行以编译、数据库中的invalid对象,oracle建议在对数据库进行迁移、升级、降级后都运行一遍utlrp.sql以编译无效对象。
以sysdba登陆来执行脚本
[oracle@Oel_10 ~]$ sqlplus / as sysdba
SQL> @/opt/product/10.2.0/db_1/rdbms/admin/utlrp.sql
注:要写全脚本路径
TIMESTAMP
--------------------------------------------------------------------------------
COMP_TIMESTAMP UTLRP_BGN? 2012-11-2307:04:44
?
DOC>? The following PL/SQL blockinvokes UTL_RECOMP to recompile invalid
DOC>? objects in the database.Recompilation time is proportional to the
DOC>? number of invalid objectsin the database, so this command may take
DOC>? a long time to execute on adatabase with a large number of invalid
DOC>? objects.
DOC>
DOC>? Use the following queriesto track recompilation progress:
DOC>
DOC>? 1. Query returning thenumber of invalid objects remaining. This
DOC>? ? ? number shoulddecrease with time.
DOC>? ? ? ? SELECTCOUNT(*) FROM obj$ WHERE status IN (4, 5, 6);
DOC>
DOC>? 2. Query returning thenumber of objects compiled so far. This number
DOC>? ? ? shouldincrease with time.
DOC>? ? ? ? SELECTCOUNT(*) FROM UTL_RECOMP_COMPILED;
DOC>
DOC>? This script automaticallychooses serial or parallel recompilation
DOC>? based on the number of CPUsavailable (parameter cpu_count) multiplied
DOC>? by the number of threadsper CPU (parameter parallel_threads_per_cpu).
DOC>? On RAC, this number isadded across all RAC nodes.
DOC>
DOC>? UTL_RECOMP usesDBMS_SCHEDULER to create jobs for parallel
DOC>? recompilation. Jobs arecreated without instance affinity so that they
DOC>? can migrate across RACnodes. Use the following queries to verify
DOC>? whether UTL_RECOMP jobs arebeing created and run correctly:
DOC>
DOC>? 1. Query showing jobscreated by UTL_RECOMP
DOC>? ? ? ? SELECTjob_name FROM dba_scheduler_jobs
DOC>? ? ? ? ? WHERE job_name like 'UTL_RECOMP_SLAVE_%';
DOC>
DOC>? 2. Query showing UTL_RECOMPjobs that are running
DOC>? ? ? ? SELECTjob_name FROM dba_scheduler_running_jobs
DOC>? ? ? ? ? WHERE job_name like 'UTL_RECOMP_SLAVE_%';
DOC>#
?
PL/SQL procedure successfully completed.
?
?
TIMESTAMP
--------------------------------------------------------------------------------
COMP_TIMESTAMP UTLRP_END? 2012-11-2307:05:46
?
?
PL/SQL procedure successfully completed.
?
DOC> The following query reports thenumber of objects that have compiled
DOC> with errors (objects that compilewith errors have status set to 3 in
DOC> obj$). If the number is higherthan expected, please examine the error