Oracle create/rebuild index開並行時要記得noparallel哦~

maohaiqing0304發表於2016-04-06


連結:http://blog.itpub.net/28602568/viewspace-2076195/

標題:Oracle create/rebuild index開並行時要記得noparallel哦~

作者:lōττéry©版權所有[文章允許轉載,但必須以連結方式註明源地址,否則追究法律責任.]


註釋:
   今天出現一個SQL中不包含parallel關鍵字而執行計劃中去出現並行;

1、檢查表的degree並行度是否等於1
SQL> SELECT table_name,degree FROM DBA_TABLES WHERE TABLE_NAME ='T1';
TABLE_NAME                DEGREE
------------------------------ ------------ 
 T1                       1
SQL> 

2、再檢查該表T1的索引的degree是否等於1
SQL> SELECT table_name,index_name,degree FROM user_indexes where table_name='T1'  and index_name='M1' ;
TABLE_NAME               INDEX_NAME     DEGREE
------------------------------ --------------- --------- 
T1                       M1         4
SQL> 

***出現索引M1 degree=4 是因為在建立/重建索引時指定並行=4,CREATE INDEX M1 ON  BILL_OM_DIVIDE_DTL ITEM_NO online parallel 4;而導致sql中只要用到M1的索引就開4個並行去查詢...

3、取消並行 noparallel:   ---解決方案

SQL> alter index M1 noparallel;

Index altered.

SQL> SELECT table_name,index_name,degree FROM user_indexes where table_name='T1'  and index_name='M1';
TABLE_NAME               INDEX_NAME     DEGREE
------------------------------ -------------- ---------- 
T1                       M1          1
SQL> 

提醒:
  create/rebuild index並行處理完後 要記得alter index M1 noparallel 避免影響到其他業務;

【源於本人筆記】 若有書寫錯誤,表達錯誤,請指正...


此條目發表在  Oracle  分類目錄。將固定連線加入收藏夾。



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28602568/viewspace-2076195/,如需轉載,請註明出處,否則將追究法律責任。

相關文章