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索引
- oracle重建索引(一)Oracle索引
- oracle重建索引(三)Oracle索引
- oracle批量重建索引方法Oracle索引
- oracle 索引重建提示指令碼Oracle索引指令碼
- Oracle表與索引的分析及索引重建Oracle索引
- 淺談oracle中重建索引 (ZT)Oracle索引
- 索引重建的資料來源(二)索引
- Oracle表與索引的分析及索引重建(轉)Oracle索引
- oracle 索引什麼時候重建和重建方法討論Oracle索引
- Oracle 表的移動和索引的重建Oracle索引
- 索引的重建命令索引
- sqlserver 全部索引重建SQLServer索引
- MSSQL Rebuild(重建)索引SQLRebuild索引
- 【TUNE_ORACLE】索引定期重建的利與弊Oracle索引
- 關於 Oracle 分割槽索引的失效和重建Oracle索引
- 淺談索引系列之索引重建索引
- 關於oracle的索引重建問題及原因分析Oracle索引
- oracle分割槽索引(二)Oracle索引
- oracle重建索引的一些參考性依據Oracle索引
- 批量重建不可用索引索引
- 教你如何在 elasticsearch 中重建索引Elasticsearch索引
- 索引重建的資料來源索引
- Oracle表table與索引index的分析及索引重建及統計資訊匯入匯出Oracle索引Index
- oracle iot索引組織表(二)Oracle索引
- 【TUNE_ORACLE】Oracle索引設計思想(二)索引過濾列概述Oracle索引
- oracle重建ocrOracle
- Oracle OEM重建Oracle
- 重建oracle EMOracle
- 記一次Oracle分割槽表全域性索引重建的過程Oracle索引
- 如何在Mac上重建Spotlight索引Mac索引
- oracle快速拿到重建控制檔案語句的方法二Oracle
- 重建二叉樹二叉樹
- oracle DBA 角色重建Oracle
- ORACLE RAC重建OCROracle
- oracle 重建EM databaseOracleDatabase
- SQL Server 2014的重建索引SQLServer索引