【发布时间】:2017-07-12 15:54:24
【问题描述】:
我们的表具有一个月间隔的范围分区。包括主键在内的表上的索引都是本地索引。
但是,当将这些表的分区与没有分区的表交换时,本地索引将变为 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'
);
选择将索引状态设为
可用
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'
);
交换分区后对索引状态的选择使索引状态为
无法使用
我们想做在线分区交换。有什么方法可以使用像
这样的语句进行交换更新索引
与
交换分区
声明?
我们尝试使用带有 UPDATE INDEXES 的 EXCHANGE 语句,但索引仍然无法使用。
ALTER TABLE sourcetable
EXCHANGE PARTITION p1 WITH TABLE desttable UPDATE INDEXES;
【问题讨论】:
标签: oracle database-partitioning database-indexes