oracle怎麼查看索引失效

方法:1、利用“select status from user_indexes where index_name='索引名稱'”語句,若結果返回VALID,則索引沒有失效;2、利用“select status from DBA_IND_PARTITIONS”語句查看分區索引狀態;3、利用“select status from dba_indexes”查看普通索引狀態。

oracle查看索引

1、打開PLSQL,輸入賬號密碼,登陸需要判斷索引狀態的數據庫。打開SQL窗口,輸入如下SQL

1

select status from user_indexes where index_name='索引名稱'

如果返回結果爲VALID,則表示索引有效!

03.png

2、在相應用戶下執行一下語句:

1

select status from DBA_IND_PARTITIONS   --分區索引

如果狀態不是VALID的,那麼就是失效的索引。

3、在相應用戶下執行一下語句

1

select status from dba_indexes  --普通索引

如果狀態不是VALID的,那麼就是失效的索引。

擴展:

ORACLE查看某個表的索引狀態

06.png

狀態列STATUS說明:

valid:當前索引有效

N/A :分區索引 有效

unusable:索引失效

在Oracle數據庫中,哪些操作會導致索引失效?

Q

題目

在Oracle數據庫中,哪些操作會導致索引失效?

A

答案

當某些操作導致數據行的ROWID改變,索引就會完全失效。可以分普通表和分區表來討論哪些操作將導致索引失效。

(一)普通表索引失效的情形如下所示:

① 手動置索引無效:ALTER INDEX IND_OBJECT_ID UNUSABLE;。

② 如果對錶進行MOVE操作(包含移動表空間和壓縮操作)或在線重定義表後,那麼該表上所有的索引狀態會變爲UNUSABLE。MOVE操作的SQL語句爲:ALTER TABLE TT MOVE;。

③ SQL*Loader加載數據。

在SQL*Loader加載過程中會維護索引,由於數據量比較大,在SQL*Loader加載過程中出現異常情況,也會導致Oracle來不及維護索引,導致索引處於失效狀態,影響查詢和加載。異常情況主要有:在加載過程中殺掉SQL*Loader進程、重啓或表空間不足等。

(二)分區表索引失效的情形如下所示:

① 對分區表的某個含有數據的分區執行了TRUNCATE、DROP操作可以導致該分區表的全局索引失效,而分區索引依然有效,如果操作的分區沒有數據,那麼不會影響索引的狀態。需要注意的是,對分區表的ADD操作對分區索引和全局索引沒有影響。

② 執行EXCHANGE操作後,全局索引和分區索引都無條件地會被置爲UNUSABLE(無論分區是否含有數據)。但是,若包含INCLUDING INDEXES子句(缺省情況下爲EXCLUDING INDEXES),則全局索引會失效,而分區索引依然有效。

③ 如果執行SPLIT的目標分區含有數據,那麼在執行SPLIT操作後,全局索引和分區索引都會被被置爲UNUSABLE。如果執行SPLIT的目標分區沒有數據,那麼不會影響索引的狀態。

④ 對分區表執行MOVE操作後,全局索引和分區索引都會被置於無效狀態。

④ 手動置其無效:ALTER INDEX IND_OBJECT_ID UNUSABLE;。

對於分區表而言,除了ADD操作之外,TRUNCATE、DROP、EXCHANGE和SPLIT操作均會導致全局索引失效,但是可以加上UPDATE GLOBAL INDEXES子句讓全局索引不失效。重建分區索引的命令爲:ALTER INDEX IDX_RANG_LHR REBUILD PARTITION P1;。

分區表的索引是否失效情況如下表所示:

begin  dbms_stats.gather_table_stats('TABLE_SCHAME','TABLE_FULL_NAME',estimate_percent => dbms_stats.AUTO_SAMPLE_SIZE,cascade => true); end;---Xa庫執行分析灰度數據是否導入

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章