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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle交換分割槽所引起的索引失效問題探究測試Oracle索引
- Oracle資料庫分割槽表SPLIT操作導致歸檔瘋漲Oracle資料庫
- 【DB筆試面試352】在Oracle資料庫中,哪些操作會導致索引失效?--UNUSABLE INDEXES筆試面試Oracle資料庫索引Index
- 重灌系統導致分割槽丟失的資料恢復案例資料恢復
- oracle點陣圖索引對DML操作的影響Oracle索引
- 伺服器重灌系統導致分割槽丟失的恢復方法伺服器
- Oracle 12.2 BUG :分割槽維護導致的 ORA-600 KKPOFPCD3Oracle
- oracle全文索引之commit與DML操作Oracle索引MIT
- unusable index對DML/QUERY的影響Index
- Oracle分割槽表基礎運維-06分割槽表索引Oracle運維索引
- 【INDEX】Oracle分割槽索引技術詳解IndexOracle索引
- [oracle] expdp 匯出分割槽表的分割槽Oracle
- springboot衝突導致的發版失敗Spring Boot
- Oracle優化案例-分割槽索引之無字首索引(六)Oracle優化索引
- 移動分割槽表和分割槽索引的表空間索引
- 故障分析 | DDL 導致的 Xtrabackup 備份失敗
- 清理重建失敗的索引索引
- index_oracle索引梳理系列及分割槽表梳理IndexOracle索引
- 【北亞資料恢復】誤操作分割槽損壞導致SqlServer資料庫資料丟失的資料恢復資料恢復SQLServer資料庫
- 迴圈引用導致的json序列化失敗JSON
- sock鎖檔案導致的MySQL啟動失敗MySql
- oracle 分割槽表move和包含分割槽表的lob moveOracle
- MySql資料分割槽操作之新增分割槽操作MySql
- 記一次Oracle分割槽表全域性索引重建的過程Oracle索引
- oracle分割槽表和分割槽表exchangeOracle
- 如何清除建立失敗的索引索引
- 企業使用ERP系統導致失敗的因素所在
- rman備份的時候讀取v$session_longops失敗導致備份失敗SessionGo
- Oracle 檢視可以DML操作的條件Oracle
- oracle分割槽表和非分割槽表exchangeOracle
- 對oracle分割槽表的理解整理Oracle
- 增加表分割槽時,為local分割槽索引指定不同表空間的方法索引
- 如何找回分割槽丟失的資料
- 【伺服器資料恢復】raid6崩潰導致分割槽丟失的資料恢復案例伺服器資料恢復AI
- Oracle分割槽表基礎運維-07增加分割槽(2 HASH分割槽)Oracle運維
- Docker 導致阿里雲 ECS 內網互通失敗Docker阿里內網
- 儲存互斥失敗導致資料丟失的資料恢復成功案例資料恢復
- 硬碟/行動硬碟分割槽合併失敗資料丟失瞭如何恢復?硬碟