パーティションを追加
alter table range_range
add partition p2 values less than(200);
insert into range_range values(190,1);
select * from user_tab_subpartitions
where table_name ='RANGE_RANGE';
alter table hash
add partition p3;
alter table list_range
add partition p3 values (7);
パーティションを結合
alter table hash
coalesce partition;
パーティションを削除
alter table range_range
drop partition p2;
alter table list_range
drop partition p3;
パーティションを交換
create table range_ex
( col1 number,
col2 date
);
insert into range_ex values(1,sysdate);
insert into range_ex values(2,sysdate);
select * from range;
select * from range_ex;
alter table range
exchange partition p1 with table range_ex;
パーティションをマージ
alter table range
merge partitions p1,p2 into partition np1
update indexes;
insert into interval values(1,sysdate);
insert into interval values(2,sysdate+100);
insert into interval values(2,sysdate+30);
select * from user_tab_partitions
where table_name ='INTERVAL'
;
alter table interval
merge partitions for(to_date('20241201','yyyymmdd')),
for(to_date('20250101','yyyymmdd'));
alter table list_range
merge partitions p1,p2 into partition np1
update indexes;
パーティションデフォルト属性を変更
set long 50000
select dbms_metadata.get_ddl('TABLE','RANGE_RANGE') from dual;
alter table range_range
modify default attributes for partition p1 tablespace sysaux;
リストパーティションへ値を追加
set long 50000
select dbms_metadata.get_ddl('TABLE','LIST') from dual;
ALTER TABLE list
MODIFY PARTITION p1
ADD VALUES (11, 12);
リストパーティションから値を削除
set long 50000
select dbms_metadata.get_ddl('TABLE','LIST') from dual;
ALTER TABLE list
MODIFY PARTITION p1
drop VALUES (11);
パーティションを移動
set long 50000
select dbms_metadata.get_ddl('TABLE','LIST') from dual;
ALTER TABLE list MOVE PARTITION p1
TABLESPACE users NOLOGGING COMPRESS;
パーティション名を変更
set long 50000
select dbms_metadata.get_ddl('TABLE','LIST') from dual;
ALTER TABLE list RENAME PARTITION p1 TO p100;
パーティションを分割
set long 50000
select dbms_metadata.get_ddl('TABLE','RANGE') from dual;
ALTER TABLE range SPLIT PARTITION
np1 at (100) INTO ( PARTITION
np100, PARTITION np200);
set long 50000
select dbms_metadata.get_ddl('TABLE','LIST') from dual;
ALTER TABLE list
SPLIT PARTITION p100 VALUES (1,2)
INTO
( PARTITION p100a
TABLESPACE users,
PARTITION p100b
STORAGE (INITIAL 8M))
PARALLEL 5;
set long 50000
select dbms_metadata.get_ddl('TABLE','INTERVAL') from dual;
ALTER TABLE interval
SPLIT PARTITION FOR(TO_DATE('20141001','yyyymmdd'))
AT (TO_DATE('20140810','yyyymmdd'));
パーティションを切り捨て
set long 50000
select dbms_metadata.get_ddl('TABLE','HASH') from dual;
ALTER TABLE hash TRUNCATE PARTITION p2
UPDATE INDEXES;