批量編譯資料庫中invalid的物件
採用資料泵進行全庫匯出/匯入,完成後發現資料庫中有大量的無效物件
SQL> select count(*), object_type from user_objects where status = 'INVALID' group by object_type;
COUNT(*) OBJECT_TYPE
---------- -------------------
126 PROCEDURE
18 PACKAGE BODY
40 TRIGGER
39 VIEW
16 FUNCTION
oracle提供一個指令碼,可以按照順序/依賴關係重新編譯所有失效物件,
該指令碼為$ORACLE_HOME/rdbms/admin/utlrp.sql,要求以sysdba使用者登入
[oracle@rac03 admin]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Mon Feb 21 15:18:01 2011
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> @utlrp.sql
TIMESTAMP
--------------------------------------------------------------------------------
COMP_TIMESTAMP UTLRP_BGN 2011-02-21 15:18:14
DOC> The following PL/SQL block invokes UTL_RECOMP to recompile invalid
DOC> objects in the database. Recompilation time is proportional to the
DOC> number of invalid objects in the database, so this command may take
DOC> a long time to execute on a database with a large number of invalid
DOC> objects.
DOC>
DOC> Use the following queries to track recompilation progress:
DOC>
DOC> 1. Query returning the number of invalid objects remaining. This
DOC> number should decrease with time.
DOC> SELECT COUNT(*) FROM obj$ WHERE status IN (4, 5, 6);
DOC>
DOC> 2. Query returning the number of objects compiled so far. This number
DOC> should increase with time.
DOC> SELECT COUNT(*) FROM UTL_RECOMP_COMPILED;
DOC>
DOC> This script. automatically chooses serial or parallel recompilation
DOC> based on the number of CPUs available (parameter cpu_count) multiplied
DOC> by the number of threads per CPU (parameter parallel_threads_per_cpu).
DOC> On RAC, this number is added across all RAC nodes.
DOC>
DOC> UTL_RECOMP uses DBMS_SCHEDULER to create jobs for parallel
DOC> recompilation. Jobs are created without instance affinity so that they
DOC> can migrate across RAC nodes. Use the following queries to verify
DOC> whether UTL_RECOMP jobs are being created and run correctly:
DOC>
DOC> 1. Query showing jobs created by UTL_RECOMP
DOC> SELECT job_name FROM dba_scheduler_jobs
DOC> WHERE job_name like 'UTL_RECOMP_SLAVE_%';
DOC>
DOC> 2. Query showing UTL_RECOMP jobs that are running
DOC> SELECT job_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 2011-02-21 15:18:33
DOC> The following query reports the number of objects that have compiled
DOC> with errors (objects that compile with errors have status set to 3 in
DOC> obj$). If the number is higher than expected, please examine the error
DOC> messages reported with each object (using SHOW ERRORS) to see if they
DOC> point to system misconfiguration or resource constraints that must be
DOC> fixed before attempting to recompile these objects.
DOC>#
OBJECTS WITH ERRORS
-------------------
0
DOC> The following query reports the number of errors caught during
DOC> recompilation. If this number is non-zero, please query the error
DOC> messages in the table UTL_RECOMP_ERRORS to see if any of these errors
DOC> are due to misconfiguration or resource constraints that must be
DOC> fixed before objects can compile successfully.
DOC>#
ERRORS DURING RECOMPILATION
---------------------------
6
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15480802/viewspace-687613/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 重編譯 invalid 物件編譯物件
- 重編譯 invalid 物件(轉)編譯物件
- 編譯資料庫失效物件指令碼編譯資料庫物件指令碼
- Oracle EBS 重新編譯無效物件 invalid objectOracle編譯物件Object
- 資料庫中的重要物件資料庫物件
- Oracle查詢並批量編譯無效物件指令碼Oracle編譯物件指令碼
- 檢視資料庫中的物件資料庫物件
- 資料庫-批量更新資料庫
- 12、Oracle中的其它資料庫物件Oracle資料庫物件
- 批量刪除Oracle資料庫的資料Oracle資料庫
- SQLServer批量新增資料庫SQLServer資料庫
- 透過Pl/Sql developer 編譯資料庫物件報ORA-03114SQLDeveloper編譯資料庫物件
- C++編譯SQLite資料庫以及如何使用加密資料庫SQLCipherC++編譯SQLite資料庫加密
- Ibatis批量更新資料(mysql資料庫)BATMySql資料庫
- Oracle後設資料物件Invalid修復過程Oracle物件
- (轉)編譯Oracle中無效的物件的N中方法編譯Oracle物件
- ibatis對oracle資料庫的批量更新和批量插入的操作BATOracle資料庫
- [Python]批量編譯pyc檔案Python編譯
- oracle編譯物件失效Oracle編譯物件
- 編譯無效物件編譯物件
- 從Oracle資料庫中批量抓取Trigger指令碼的方法Oracle資料庫指令碼
- Oracle獲取資料庫中的物件建立語句Oracle資料庫物件
- mysql5.0資料庫原始碼編譯安裝MySql資料庫原始碼編譯
- ORACLE 資料庫分析,重新編譯失敗過程Oracle資料庫編譯
- 【MySQL】批量刪除mysql中資料庫中的表MySql資料庫
- MySQL資料庫遷移與MySQL資料庫批量恢復MySql資料庫
- python運算元據庫,批量插入資料庫資料Python資料庫
- 資料庫開發(19)基於物件的資料庫資料庫物件
- cmake編譯指定自己編譯的庫路徑編譯
- 乾貨好文:分散式資料庫DDL的編譯與執行分散式資料庫編譯
- oracle編譯無效物件Oracle編譯物件
- 資料庫批量插入這麼講究的麼?資料庫
- mysql5.5資料庫cmake原始碼編譯安裝MySql資料庫原始碼編譯
- sysbench 多種測試資料庫一起編譯資料庫編譯
- 關於庫的編譯編譯
- GBase 如何批量清空某資料庫中部分表的資料?資料庫
- 批量備份和還原資料庫資料庫
- Oracle批量建立、刪除資料庫表Oracle資料庫