批量編譯資料庫中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 物件(轉)編譯物件
- 資料庫-批量更新資料庫
- 12、Oracle中的其它資料庫物件Oracle資料庫物件
- SQLServer批量新增資料庫SQLServer資料庫
- C++編譯SQLite資料庫以及如何使用加密資料庫SQLCipherC++編譯SQLite資料庫加密
- Ibatis批量更新資料(mysql資料庫)BATMySql資料庫
- [Python]批量編譯pyc檔案Python編譯
- Mingw GCC 編譯OpenCV報錯: Project files may be invalidGC編譯OpenCVProject
- MySQL資料庫遷移與MySQL資料庫批量恢復MySql資料庫
- Oracle獲取資料庫中的物件建立語句Oracle資料庫物件
- Leptonica在VS2010中的編譯一,編譯它依賴於庫編譯
- GBase 如何批量清空某資料庫中部分表的資料?資料庫
- cmake編譯指定自己編譯的庫路徑編譯
- 乾貨好文:分散式資料庫DDL的編譯與執行分散式資料庫編譯
- sysbench 多種測試資料庫一起編譯資料庫編譯
- 【YashanDB資料庫】YAS-02143 invalid username/password, login denied資料庫
- 利用實體bean物件批量資料傳輸處理Bean物件
- Sql Server 資料庫學習-常用資料庫 物件SQLServer資料庫物件
- PG資料庫定時任務:PgAgent編譯安裝使用資料庫編譯
- 通過 POI 將資料庫中的資料上傳至 OSS 物件儲存資料庫物件
- C++物件模型:編譯分析C++物件模型編譯
- ORACLE編譯失效物件小結Oracle編譯物件
- JDBC連線批量處理資料入庫JDBC
- NodeJs批量require資料夾中的所有檔案NodeJSUI
- R語言批量提取excel當中的資料R語言Excel
- 如何建立最簡單的 ABAP 資料庫表,以及編碼從資料庫表中讀取資料 (上)資料庫
- MYSQL中的DDL(用來操縱資料庫物件的語言)1MySql資料庫物件
- 通過shell指令碼批量操作mysql資料庫指令碼MySql資料庫
- 異構資料庫間批量表快速複製資料庫
- FFmpeg編譯Android使用的so庫編譯Android
- 6.12php對資料庫的刪除和批量刪除PHP資料庫
- python批量統計Oracle資料庫的空間使用量PythonOracle資料庫
- 資料庫主要物件及事務資料庫物件
- 編譯lua動態庫編譯
- 生產資料庫、開發資料庫、測試資料庫中的資料的區分資料庫
- 批量新建資料夾並命名的辦法 如何批量新建很多資料夾
- 物件代理資料庫:大資料時代下的應需之作物件資料庫大資料
- 如何將資料庫中json格式的列值對映到java物件的屬性中資料庫JSONJava物件
- [譯]物件組合中的寶藏(軟體編寫)(第十三部分)物件