oracle删表分区同时维护索引,有关Oracle表分区进行(DML)维护后对索引的影响的分析...
對索引的幾種情況分別進行總結:1、如果刪除分區,則會導致該表下所有的索引狀態處于不可用狀態(除本地前綴索引外);2、如果重命名表,同上3、如果truncate分區數據,同上;4、重命名分區,不會對索引產生任何影響。解釋:對于分區表,索引有以下幾種方式:1、普通索引,與分區無關,就是平常的索引;2、全局分區索引,獨立于分區的索引,按照獨立的分區方式分區。按照網上介紹的和個人的實踐,這個方式查詢效率不高;3、本地前綴分區索引,即基于分區表的字段進行的分區,創建方式很簡單,在普通索引建立的語句后面加個local即可,??? 效率相對于普通索引高一點;4、本地非前綴分區索引,即非基于分區表的分區字段,除非是特殊情況,這種方式效率較低,不推薦使用。當索引處于不可用狀態時,數據將不能插入,會提示:ora-01502:state unusuable。且這種情下,只要表中有一個索引處于不可用狀態,都會使表處于不可插入狀態??梢孕薷膮祦韺崿F這種情況下的數據插入問題:alter session set skip_unusable_indexes=true;但是有種情況除外,當有存在唯一主鍵索引時,數據依然不能插入。而且主鍵索引也不能drop,因此想通過刪除主鍵索引再修改參數來實現數據的可插入是不可實現的。因此這種情況下(索引狀態處于不可用狀態時)較好的辦法是,先刪除要進行本地索引分區的索引(此時尚未進行本地分區),創建本地分區索引后,再drop表分區,這樣的好處是本來drop分區后需要重建n+1個索引,現在只要重建n個索引,這樣的話就省去了重建這個索引的時間了。對于本地分區前綴索引,刪除分區只會對所在分區的部分產生影響,對于其他的部分則仍然是正常狀態的。另:修改參數只能對于當前session所在的用戶有效,對于其他session,如果沒有設置該條件,數據還是處于不可插入狀態的。以上情況,需要在實際的應用中充分考慮到這些問題才能最大的減少所帶來的數據丟失。重命名分區不會對索引狀態產生影響。注:1、如何刪除分區alter table [table_name] drop partition [partition_name];2、如何刪除與創建本地分區索引刪除:drop index [index_name];創建:create index [index_name] on [table_name]([index_column]) tablespace [tablespace_name] local [nologging/logging];注意:當在大表上建立索引時,使用NOLOGGING選項可以最小化重做記錄.使用NOLOGGING選項有以下優點.節省重做日志空間降低索引建立實際提高索引并行建立的性能.但是nologging參數不建議在部署了dataguard的情況下使用,因為dataguard是基于歸檔日志來進行遠程備份的。3、如何重建索引:alter index [index_name] rebuild [parallel {number}] [nologging/loggin];4、如何創建分區:--范圍分區create table [table_name] partition by range([col_name])(partition [part_name] values less than [range_value] tablespace [tablespace_name],...)--列表分區--hash分區5、如何截斷分區:alter table [table_name] truncate partition延伸:truncate一個表或一個分區,能使HWM重至為0,而delete則不能。6、如何重命名分區:alter table [table_name] rename partition [old_name] to [new_name];7、如何查詢索引狀態:select ind.table_name, ind.index_name, ind.statusfrom user_indexes indwhere ind.index_name = '[index_name]'and ind.table_name = '[table_name]'8、如何添加分區:alter table [table_name] add partition [partition_name] values less than([range_value]).
總結
以上是生活随笔為你收集整理的oracle删表分区同时维护索引,有关Oracle表分区进行(DML)维护后对索引的影响的分析...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 农行刷卡金是什么意思呢
- 下一篇: 启动oracle00119,oracle