oracle重建索引(二)
重建索引有多種方式,如drop and re-create、rebuild、rebuild online等。下面簡單比較這幾種方式異同以及優缺點:
相關文章:
二、rebuild 和rebuild online
首先我們跟蹤一下rebuild online的過程。
另開一個會話檢視鎖的資訊:
SQL> SELECT OBJECT_NAME,LMODE FROM V$LOCK L,DBA_OBJECTS O WHERE O.OBJECT_ID=L.ID1 AND L.TYPE='TM' AND SID=14;
OBJECT_NAME LMODE
------------------------------ ----------
SYS_JOURNAL_10499 4
TEST 2
SQL> INSERT INTO TEST VALUES(11);
1 row inserted
SQL> COMMIT;
Commit complete
可以看到,在rebuild online期間,oracle對基表加的是RS所,此時我們可以對基表進行DML操作。但奇怪的話在相同的session中有一個SYS_JOURNAL_10499表被加SHARE鎖,這個表是幹什麼用的呢?
我們看看trace檔案,有這樣的資訊:
create table "SUK"."SYS_JOURNAL_10499" (C0 NUMBER(6,0), opcode char(1),
partno number, rid rowid, primary key( C0 , rid )) organization index
TABLESPACE "TEST"
CREATE UNIQUE INDEX "SUK"."SYS_IOT_TOP_10605" on
"SUK"."SYS_JOURNAL_10499"("C0","RID") INDEX ONLY TOPLEVEL TABLESPACE "TEST"
NOPARALLEL
drop table "SUK"."SYS_JOURNAL_10499"
我們在查查10499是什麼東西:
SQL> SELECT OBJECT_NAME,OBJECT_TYPE FROM DBA_OBJECTS WHERE OBJECT_ID=10499;
OBJECT_NAME OBJECT_TYPE
------------------------------ ------------------
IDX_TEST_C1 INDEX
從這些資訊可以推測:表SYS_JOURNAL_10499就是實現在重建索引時不阻塞DML操作而設計的,它儲存的是在索引重建期間發生在基表的資料變化。可以推測,CREATE INDEX .... ONLINE應該也有一張類似的表。
實際上,oracle之所以在建立索引時鎖表阻止DML操作就是為了防止不能索引新變化的資料,在online方式重建時,有了臨時表SYS_JOURNAL_XXXX,oracle就可以放心大膽地讓使用者操作了,因為所有重建索引期間的資料變化資訊都會保留在SYS_JOURNAL_XXX表中,當索引重建完後再加上SYS_JOURNAL_XXX記錄的資料,就不會漏索引資料了。(XXX是被重建的索引對應的OBJECT_ID)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/231499/viewspace-63810/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle重建索引(一)Oracle索引
- oracle重建索引(三)Oracle索引
- 重建索引索引
- 索引重建索引
- 【TUNE_ORACLE】索引定期重建的利與弊Oracle索引
- MSSQL Rebuild(重建)索引SQLRebuild索引
- oracle重建ocrOracle
- 匿名類 與 索引重建索引
- 【TUNE_ORACLE】Oracle索引設計思想(二)索引過濾列概述Oracle索引
- 清理重建失敗的索引索引
- SQL Server 2014的重建索引SQLServer索引
- oracle DBA 角色重建Oracle
- 記一次Oracle分割槽表全域性索引重建的過程Oracle索引
- oracle快速拿到重建控制檔案語句的方法二Oracle
- 教你如何在 elasticsearch 中重建索引Elasticsearch索引
- HugeGraph之索引重建和刪除索引
- 如何在Mac上重建Spotlight索引Mac索引
- 重建索引報ORA-14086錯誤索引
- Oracle 索引Oracle索引
- Oracle優化案例-正確的使用索引(二)Oracle優化索引
- 新手必看:如何在Mac上重建Spotlight索引Mac索引
- Oracle索引梳理系列(六)- Oracle索引種類之函式索引Oracle索引函式
- 重建二叉樹二叉樹
- sqlserver索引重建和索引重組的區別和操作方法SQLServer索引
- oracle的索引Oracle索引
- LOB欄位相關概念(自動建立LOB索引段和重建索引方法)索引
- 重建二叉樹[by Python]二叉樹Python
- Oracle 11g刪除庫重建Oracle
- 0707_oracle 索引Oracle索引
- Oracle OCP(25):索引Oracle索引
- Oracle虛擬索引Oracle索引
- Oracle:全文索引Oracle索引
- MySQ索引操作命令總結(建立、重建、查詢和刪除索引命令詳解)索引
- 【TUNE_ORACLE】Oracle索引設計思想(四)三星級索引Oracle索引
- 【TUNE_ORACLE】你建立的索引為什麼不工作了?(二)Oracle索引
- MySQL 二 索引MySql索引
- oracle索引核心過程Oracle索引
- oracle之 反向鍵索引Oracle索引