範囲パーティションの月間のテーブルがあります。主キーを含むテーブルのインデックスはローカルインデックスです。ローカルインデックスを使用した範囲パーティションの交換
ただし、これらのテーブルのパーティションをパーティションなしのテーブルと交換すると、ローカルインデックスはUNUSABLEになります。 Oracleのマニュアルでは、グローバル索引の問題についてのみ説明しています。そこで、分割されたキーをインデックスに追加することにより、グローバルプライマリインデックスをローカルに変換しました。
例クエリ -
CREATE TABLE sourcetable
(owner varchar2(30), OBJECT_NAME VARCHAR2(100))
PARTITION BY RANGE (owner)
(PARTITION P1 VALUES LESS THAN (MAXVALUE));
CREATE TABLE DESTTABLE
(owner varchar2(30), OBJECT_NAME VARCHAR2(100));
create index sourcetable_idx
on sourcetable (owner)
local ;
alter table sourcetable add constraint src_pk primary key (owner);
insert into sourcetable select U.OBJECT_ID, u.object_name from user_objects u
where rownum <11;
select index_name,partition_name,status from user_ind_partitions
where index_name IN (
select index_name from user_indexes
where table_name = 'SOURCETABLE'
);
選択パーティションを交換した後
USABLE
ALTER TABLE sourcetable
EXCHANGE PARTITION p1 WITH TABLE desttable;
select index_name,partition_name,status from user_ind_partitions
where index_name IN (
select index_name from user_indexes
where table_name = 'SOURCETABLE'
);
インデックスステータスに選択すると、インデックスステータスを与える指標ステータスを与えますas
UNUSABLE
我々はオンラインパーティション交換をしたいです。我々は
のUPDATE INDEXES
EXCHANGE PARTITIONの
声明で
ようなステートメントを使用して交換を行うことができます方法はありますか?
UPDATE INDEXESでEXCHANGEステートメントを使用しようとしましたが、インデックスはUNUSABLEになりました。
ALTER TABLE sourcetable
EXCHANGE PARTITION p1 WITH TABLE desttable UPDATE INDEXES;