パーティションインデックスのパーティションレベル削除

(8.0.29)

パーティションレベル削除不可
(構文がない模様)

 

(19c)


drop table tab1 purge;

create table tab1
( col1   int primary key
, col2   int
, col3   int
, col4   int
)
 partition by range (col2)
 ( partition p1 values less than (0)
 , partition p2 values less than (maxvalue)
 );

-- 1. ローカルパーティションインデックス
create index ind2 on tab1(col2) local;

-- 2. グローバルパーティションインデックス
create index ind3 on tab1(col3) global
 partition by range (col3)
 ( partition p31 values less than (1)
 , partition p32 values less than (maxvalue)
 );


col INDEX_NAME for a15;
col PARTITION_NAME for a15;

select INDEX_NAME,PARTITIONED from user_indexes where table_name = 'TAB1';
select INDEX_NAME,PARTITION_NAME,HIGH_VALUE from user_ind_partitions where INDEX_NAME like 'IND_';


alter index ind2 drop partition p1;

ローカルパーティションインデックスはパーティションレベル削除不可
行1でエラーが発生しました。:
ORA-14076: 発行した索引パーティション/サブパーティションの変更操作は、LOCALパー ティション索引に対して無効です

alter index ind3 drop partition p31;

→ グローバルパーティションインデックスはパーティションレベル削除可能

 

(14)


drop table tab1 cascade;

create table tab1
( col1   int primary key
, col2   int
, col3   int
, col4   int
)
partition by range ( col1 )
;

create table tab1p1 partition of tab1 for values from (minvalue) to (0);
create table tab1p2 partition of tab1 for values from (0) to (maxvalue);

create index ind2 on tab1(col2);

 

\d+ tab1
\d+ tab1p1
\d+ tab1p2


drop index tab1p1_col2_idx;

パーティションレベル削除不可
ERROR:  cannot drop index tab1p1_col2_idx because index ind2 requires it
HINT:  You can drop index ind2 instead.


※継承を使用せずに、子テーブルに直接インデックスを作成した場合は削除可能

create index ind2p1 on tab1p1(col2);
create index ind2p2 on tab1p2(col2);

drop index ind2p1;
drop index ind2p2;

 

(2019)

パーティションレベル削除不可
(構文がない模様)