1. 程式人生 > >Oracle資料庫重建無效和不可用物件

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 會自動檢查空間要求。

相關推薦

Oracle資料庫重建無效可用物件

無效和不可用物件     無效 PL/SQL 物件和不可用索引會對效能產生影響。無效 PL/SQL 物件必須先進行重編譯,然後才能使用。這需要在執行嘗試訪問 PL/SQL 程式包、過程或函式的第一個操作之前花費一段編譯時間。如果 PL/SQL 重編譯未成功,則操作會因發生

查詢Oracle資料庫段SEGMENT物件大小

一、查詢段類別: SELECT T.TABLESPACE_NAME, SEGMENT_TYPE, COUNT(1)   FROM USER_SEGMENTS T  WHERE 1 = 1  GROUP BY T.TABLESPACE_NAME, T.SEGMENT_TYPE

Oracle資料庫忘記使用者名稱密碼怎麼辦

方法一:   首先進入sqlplus:進入的方式有兩種,一種是通過cmd命令臺輸入sqlplus,另外一種是直接在開始-》程式-》Oracle-》應用程式開發-》sqlplus。 搜尋 “Oracle 11g預設使用者名稱,密碼”,可以找到很多相關的預設使用者

oracle XE解決WMSYS.WM_CONCAT()可用的情況

在自己電腦上安裝了個oracle XE的版本,用著挺方便的,對開發而言沒有任何影響,但是就在我將伺服器上的資料庫備份還原到本機之後,系統訪問的過程中報錯,在PL/SQL中執行後臺的SQL語句,系統提示WMSYS.WM_CONCAT識別符號無效。最終,找到一個可行的辦法解決這個問題

檢視ORACLE 資料庫的表列的相關資訊

本文全部轉載自:http://www.cnblogs.com/tearer/archive/2012/12/13/2815601.html 供自己收藏學習。 -------------------------------------------------------------------

Oracle資料庫 資料完整性DML語句

 資料完整性和DML語句 資料完整性 資料完整性(Data Integrity)是指資料的精確性(Accuracy) 和可靠性(Reliability)。它是應防止資料庫中存在不符合語義規定的資料和防止因錯誤資訊的輸入輸出造成無效操作或錯誤資訊而提出的。資料完整性指儲存在資料庫中的所有資料值均正確的狀態。如果

由指定物件集合分出重複物件集合重複物件集合

package com.example.demo0810.util; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.uti

python知識整理--議可變物件可變物件以及str、list、tuple、dict、set

可變物件:變數、list 不可變物件:str、tuple、dict、set 1、變數是可變的不用多說,變數賦值一次便改變一次。 2、list 可變物件,可對list進行如下新增刪除排序等操作。 list = [2,3,5,1,2] list.append(8) list.insert(0,

Python中的可變物件可變物件

什麼是可變/不可變物件 不可變物件,該物件所指向的記憶體中的值不能被改變。當改變某個變數時候,由於其所指的值不能被改變,相當於把原來的值複製一份後再改變,這會開闢一個新的地址,變數再指向這個新的地址。 可變物件,該物件所指向的記憶體中的值可以被改變。變數(準確的說是引用)改變後,實際上是其所指的值直接發生

Oracle資料庫的安裝測試

Oracle在資料庫裡面安裝中屬於最噁心的那種,因為安全,因為收費,所以安裝你懂得!! 不多說來, 1.解壓檔案10201_database_win32.zip,並雙擊解壓目錄下的setup.exe,出現安裝介面,如下: 2.輸入口令和確認口令,如:password,點選下一步,出

檢視oracle資料庫的使用者名稱密碼

執行 cmd 按如下輸入命令 sqlplus / as sysdba ---------以sys登陸 超級使用者(sysdba) alter user 使用者名稱 account unlock; --------- 解除鎖定(必須帶“;”號)

oracle資料庫監聽啟動成功

資料庫可以成功啟動,進行連線,啟動監聽時,命令列頁面沒有報錯,檢視監聽狀態顯示 檢視監聽的日誌,顯示 經檢查,應該是與hosts設定有關 修改hosts設定 vi  /etc/hosts,新增 127.0.0.1 localhost.localdomai

Oracle官方併發教程之可變物件

原文連結,譯文連結,譯者:Greenster,校對:鄭旭東 一個物件如果在建立後不能被修改,那麼就稱為不可變物件。在併發程式設計中,一種被普遍認可的原則就是:儘可能的使用不可變物件來建立簡單、可靠的程式碼。 在併發程式設計中,不可變物件特別有用。由於建立後不能被修改,所以不會出現由於執行緒干擾

Oracle官方併發教程之可變物件(定義可變物件的策略)

原文連結,譯文連結,譯者:Greenster,校對:鄭旭東 以下的一些規則是建立不可變物件的簡單策略。並非所有不可變類都完全遵守這些規則,不過這不是編寫這些類的程式設計師們粗心大意造成的,很可能的是他們有充分的理由確保這些物件在建立後不會被修改。但這需要非常複雜細緻的分析,並不適用於初學者。

檢視oracle資料庫是否歸檔修改歸檔模式

分為非歸檔模式(NOARCHIVELOG) 和歸檔模式(ARCHIVELOG)。非歸檔模式不產生歸檔日誌,雖然節省了硬碟空間,但是備份方案選擇很有限,通常只能選擇冷備份。還原也只能還原到備份那一時刻的資料,通常也僅在開發時使用(據說在資料倉庫中也使用),Oracle安裝預設

Linux上oracle資料庫的關閉啟動

1)orcl資料庫的啟動: 第一步:首先使用root使用者登入到Linux作業系統,然後切換到oracle使用者下 ,輸入命令: su oracle 第二部:切換到oracle使用者下,然後在該使用者下輸入命令:sqlplus /nolog 第三部:使用管理員許可權登入,輸

Python經驗主義學習之路——可變物件可變物件

可變物件與不可變物件 資料型別和變數 Python的資料型別和C++幾乎相同,但是變數的概念和C++/C目前來看有一點差別(但在彙編的角度上看,和彙編中的變數概念差不多),在C/C++中,我們可以把變數在邏輯上抽象成一個帶有名字的盒子,如下簡單程式碼。

Oracle資料庫修改密碼用過期及去密碼複雜化

Oracle資料庫有時登入資料庫使用者會提示密碼即將過期,該提示可能對業務系統連線資料庫造成影響,需要修改其密碼用不過期,修改步驟如下(需要用dba使用者執行以下語句): 1.修改永不過期引數 alter profile default limit 

oracle資料庫客戶端登

新安裝的資料庫可以通過後臺程式碼連線資料庫即: 第一步:sqlplus 第二步:輸入使用者名稱 scott 第三步:輸入密碼 tiger以上三步可以連線到資料庫,但是通過命令 : sqplus scott/[ema

Oracle資料庫知識點整理複習

select 標識 選擇哪些列. from  標識從哪個表中選擇. as 列的別名可以省略,別名使用雙引號,可以在別名中包含空格或特殊字元並區分大小寫. || 把列與列,列與字元連線在起一起 select ename||'_'||job as "Employees" fro