Oracle資料庫重建無效和不可用對象

來源:互聯網
上載者:User

Oracle資料庫重建無效和不可用對象

 無效和不可用對象

無效 PL/SQL 對象和不可用索引會對效能產生影響。無效 PL/SQL 對象必須先進行重編譯,然後才能使用。這需要在執行嘗試訪問 PL/SQL 程式包、過程或函數的第一個操作之前花費一段編譯時間。如果 PL/SQL 重編譯未成功,則操作會因發生錯誤而失敗。最佳化程式會忽略不可用索引。如果 SQL 陳述式效能的好壞取決於已標記為停用索引,則只有重建索引才能改善效能。

無效 PL/SQL 對象:可通過查詢資料字典查看 PL/SQL 對象的目前狀態。

可使用以下命令列尋找到無效 PL/SQL 對象:

SELECT object_name, object_type FROM DBA_OBJECTS

WHERE status = 'INVALID';

預設情況下,每 24 小時檢查一次“所有者的無效對象計數”度量。如果一個所有者的對象數超過兩個,就會發出預警。

如果尋找到 INVALID 狀態的 PL/SQL 對象,需要回答的第一個問題是“此對象曾經是 VALID 的嗎?”應用程式開發人員常常會忘記清除不起作用的代碼。如果 PL/SQL 對象因代碼錯誤而無效,則除了糾正該錯誤之外,沒有什麼別的方法。如果該過程在過去曾經有效,最近才變為無效,則可選擇以下兩種方法解決這個問題:

1.不做任何處理。如果需要,大多數 PL/SQL 對象在調用時會自動重新編譯。使用者在對象重新編譯時間會經曆短暫的延遲。(大多數情況下,這種延遲不十分明顯。)

2.手動重新編譯無效對象。

使用 Enterprise Manager 或通過 SQL 命令可手動重新編譯無效的 PL/SQL 對象

ALTER PROCEDURE HR.add_job_history COMPILE;

手動重新編譯 PL/SQL 資料包,需要執行以下兩個步驟:

ALTER PACKAGE HR.maintainemp COMPILE;

ALTER PACKAGE HR.maintainemp COMPILE BODY;

不可用索引:可通過查詢 DBA_INDEXES 資料字典視圖尋找無效索引:

SELECT index_name, table_name FROM DBA_INDEXES

WHERE status ='UNUSABLE';

對於分區索引,狀態儲存在 DBA_IND_PARTITIONS 視圖中。

通過重建不可用索引來重算指標,可使不可用索引變為有效。重建不可用索引會在新位置重新建立索引,然後會刪除不可用索引。

使用 Enterprise Manager 或通過 SQL 命令可完成此操作:

ALTER INDEX HR.emp_empid_pk REBUILD;

ALTER INDEX HR.emp_empid_pk REBUILD ONLINE;

ALTER INDEX HR.email REBUILD TABLESPACE USERS;

如果省略了 TABLESPACE 子句,則在曾經存在的相同資料表空間中重建索引。

使用 REBUILD ONLINE 子句,使用者可以在重建時繼續更新索引表。(如果不使用 ONLINE 關鍵字,使用者必須等待重建完成後才能對受影響的表執行 DML。如果索引不可用,即使使用了 ONLINE 關鍵字,也不會在重建過程中使用該索引。)

Enterprise Manager 使用“Reorganize(重組)”操作修複 UNUSABLE 索引。

註:重建索引時需要有可用於重建的空閑空間。請在嘗試重建前驗證是否有足夠的空間。Enterprise Manager 會自動檢查空間要求。

--------------------------------------分割線 --------------------------------------

rlwrap - 解決Linux下SQLPLUS退格、上翻鍵亂碼問題

SQLPLUS spool 到動態記錄檔名

Oracle SQLPLUS提示符設定

通過設定SQLPLUS ARRAYSIZE(行預取)加快SQL返回速度

--------------------------------------分割線 --------------------------------------

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.