分割槽表並行建立索引

dawn009發表於2015-03-01

糾正了我以前的錯誤認識。以前認為當在分割槽表上建立本地索引的時候,oracle使用的最大並行度等於分割槽的數目。以前都被create index ...parallel N 給迷惑了。

其實oracle可以使用多個並行程式建立本地分割槽索引。測試在全文。

http://www.itpub.net/showthread.php?threadid=380641&pagenumber=

[@more@]

QL> create table tt partition by range(owner) (partition pp values less than('ZZZ')) tablespace trade_data as select * from dba_objects;
Table created.
SQL> create index ttidx on tt(owner,object_id) local (partition pmax) unusable;

Index created.

然後rebuild unusable索引,這樣可以制定並行度 degree

SQL> alter index ttidx rebuild partition pmax parallel(degree 8);

Index altered.

SQL> select * from v$pq_tqstat order by tq_id,server_type,num_rows;

26 rows selected.

如果換種語法

QL> drop index ttidx;

Index dropped.

> create index ttidx on tt(object_id) local parallel 8;

Index created.

SQL> select * from v$pq_tqstat;

no rows selected

結果沒有使用並行。

而create index的時候不支援分割槽上的parallel語法

SQL> create index ttidx on tt(object_id) local (partition pp parallel(degree 4));
create index ttidx on tt(object_id) local (partition pp parallel(degree 4))
*
ERROR at line 1:
ORA-14010: this physical attribute may not be specified for an index partition

不過先建立unusable的index,再rebuild parallel也不麻煩。

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

相關文章