Oracle故障處理之ORA-08102索引鍵值不存在

問題描述

香港客戶有一套日本開發的全球系統,它採用的數據庫是Oracle Database Standard Edition 10.2.0.5。系統側拋出錯誤參考如下:

Ora-08102:index key not found, obj# 145664, file 12, block 3326692(2)

在這裏插入圖片描述

問題分析

  • 檢查問題對象信息
col object_name format a15;
col owner format a10;
select o.owner, o.object_name, o.object_id, o.object_type from dba_objects o where o.object_id = 145664;

日誌輸出:

OWNER      OBJECT_NAME                OBJECT_ID OBJECT_TYPE
---------- ------------------------- ---------- -------------------
XXXXXXX IDX_CR_PK_DIM_CARTON          145664 INDEX
  • 索引DDL語句檢查
set long 2000
select dbms_metadata.get_ddl('INDEX','IDX_CR_PK_DIM_CARTON','XXXXXX') from dual;

日誌輸出:

DBMS_METADATA.GET_DDL('INDEX','IDX_CR_PK_DIM_CARTON','XXXXXX')
--------------------------------------------------------------------------------

  CREATE INDEX "SILOS_LIVE"."IDX_CR_PK_DIM_CARTON" ON "XXXXXX"."PACKING_CART
ON_DIMENSION" (NVL("CARTON_NO",' '))    PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPU
TE STATISTICS    STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147
483645   PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
  TABLESPACE "USERS"

通過MOS發現,NVL函數索引經常會出現類似找不到鍵值的問題。

解決方案

1. 重建索引

alter index IDX_CR_PK_DIM_CARTON rebuild;

2. 檢查索引必要性

如果沒有必要運用此NVL函數索引,那麼就將它刪除吧!

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