熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracle在線索引重構

2013-11-13 22:11:03  來源: Oracle 

  查詢某個表的索引屬於哪個表空間的sql語句

  select  tablespace_name  from dba_indexes where index_name =   ;

  alter index rebuild [online];

  是否加online要看你的系統需求因為不加online時rebuild會阻塞一切DML操作

  rebuild不是將索引刪除然後再創建rebuild時不會為了排序去走fts

  而是遍歷舊索引然後在臨時段中建立相應結構完了後移到新索引中

  將索引刪除然後再創建是最不好的方法

  alter index rebuild online的機制

  當我們對索引進行rebuild時如果不加online選項oracle則直接讀取原索引的數據;當我們添加online選項時oracle是直接掃描表中的數據那如何維護索引段數據的一致性呢?就是從引開始創建到索引創建完成這段時間的數據改變

  從索引開始rebuild online開始的那一刻起oracle會先創建一個SYS_JOURNAL_xxx的系統臨時日志表結構類似於mlog$_表通過內部觸發器記錄了開始rebuild索引時…

  ***online是重構索引時原索引還可用就是另外記日志

  降低效率的

  ***另外要注意看看表空間夠不夠因為是先建後刪


From:http://tw.wingwit.com/Article/program/Oracle/201311/18409.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.