ORACLE 分割槽索引UNUSABLE導致的DML操作失敗引起的血案
近期,一金融客戶的核心繫統進行索引維護,在建立分割槽索引時,使用了不可見、不可用狀態,但是建立完成後導致INSERT語句操作失敗;經過試驗分割槽索引去除UNUSABLE時,INSERT等DML操作不受影響。
試驗驗證如下:
1、建立模擬的分割槽表
SQL> CREATE TABLE T_NEW (ID int, TIME date,name varchar2(20)) PARTITION BY RANGE (TIME)
(PARTITION P1 VALUES LESS THAN (TO_DATE('2018-1-1', 'YYYY-MM-DD')),
PARTITION P2 VALUES LESS THAN (TO_DATE('2018-2-1', 'YYYY-MM-DD')),
PARTITION P3 VALUES LESS THAN (TO_DATE('2018-3-1', 'YYYY-MM-DD')),
PARTITION P4 VALUES LESS THAN (MAXVALUE)); 2 3 4 5
Table created.
SQL>
2、插入資料測試分割槽表可用
SQL> insert into t_new values(1,TO_DATE('2018-1-15', 'YYYY-MM-DD'),'hellow');
1 row created.
SQL>
SQL> commit;
Commit complete.
SQL> select * from t_new;
ID TIME NAME
---------- --------- --------------------
1 15-JAN-18 hellow
SQL>
3、建立業務變更的不可見不可用分割槽索引
SQL> create unique index IDX1 on t_new (id, time) local invisible nologging unusable;
Index created.
SQL>
4、執行INSERT插入失敗,提示:ORA-01502分割槽索引狀態為不可用
SQL> insert into t_new values(1,TO_DATE('2018-3-15', 'YYYY-MM-DD'),'yellow');
insert into t_new values(1,TO_DATE('2018-3-15', 'YYYY-MM-DD'),'yellow')
*
ERROR at line 1:
ORA-01502: index 'TEST.IDX1' or partition of such index is in unusable state
SQL>
5、重新建立索引去掉UNUSABLE關鍵字
SQL> drop index idx1;
Index dropped.
SQL> create unique index IDX1 on t_new (id, time) local invisible nologging ;
Index created.
SQL>
6、模擬INSERT插入不受影響
SQL> insert into t_new values(1,TO_DATE('2018-3-15', 'YYYY-MM-DD'),'yellow');
1 row created.
SQL>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29357786/viewspace-2212709/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ddl 導致分割槽表全域性索引unusable索引
- oracle分割槽表的常規操作導致對索引的影響Oracle索引
- split分割槽操作導致的librarycachelock
- oracle交換分割槽所引起的索引失效問題探究測試Oracle索引
- DML_LOCKS設定為0導致SHUTDOWN IMMEDIATE失敗
- Oracle索引分割槽Oracle索引
- Oracle分割槽表及分割槽索引Oracle索引
- Oracle的分割槽索引技術Oracle索引
- 全面學習分割槽表及分割槽索引(17)--其它索引分割槽管理操作索引
- 重灌系統導致分割槽丟失的資料恢復案例資料恢復
- Oracle資料庫分割槽表SPLIT操作導致歸檔瘋漲Oracle資料庫
- 簡單ORACLE分割槽表、分割槽索引Oracle索引
- oracle分割槽索引(二)Oracle索引
- oracle分割槽索引(一)Oracle索引
- oracle本地分割槽索引跨分割槽對成本的影響Oracle索引
- oracle索引詳解 分割槽索引Oracle索引
- DML操作引起的blocking(一)BloC
- DML操作引起的blocking(二)BloC
- 伺服器重灌系統導致分割槽丟失的恢復方法伺服器
- 有關Oracle表分割槽進行(DML)維護後對索引的影響的分析Oracle索引
- Oracle帶區域性分割槽索引的分割槽表刪除舊分割槽新增新分割槽Oracle索引
- 【DB筆試面試352】在Oracle資料庫中,哪些操作會導致索引失效?--UNUSABLE INDEXES筆試面試Oracle資料庫索引Index
- rebuild分割槽表分割槽索引的方法Rebuild索引
- Oracle全部索引丟失導致的效率問題處理Oracle索引
- 分割槽表的不同操作對索引的影響索引
- oracle 針對普通表的索引分割槽及10g新增hash 索引分割槽Oracle索引
- oracle 建立所有分割槽索引Oracle索引
- Oracle分割槽之五:建立分割槽索引總結Oracle索引
- 深入學習Oracle分割槽表及分割槽索引Oracle索引
- 全面認識oracle分割槽表及分割槽索引Oracle索引
- oracle分割槽partition及分割槽索引partition index(一)Oracle索引Index
- ORACLE分割槽表的概念及操作Oracle
- ORACLE分割槽表的操作應用Oracle
- 單個分割槽索引失效導致繫結變數查詢無法使用索引索引變數
- 誤操作經歷,truncate導致閃回查詢失敗
- 資料庫分割槽表分割槽未分配導致的一些問題資料庫
- 關於 Oracle 分割槽索引的失效和重建Oracle索引
- 【原創】ORACLE 分割槽與索引Oracle索引