ALTER TABLE...SPLIT PARTITION
از دستور فوق برای تقسیم
یک پارتیشن به دو پارتیشن استفاده می شود و محتویات پارتیشن اول را در دو پارتیشن
جدید منتقل می کند.این دستور فقط در جداول حاوی range partition و list partition قابل
استفاده است (و نمی توان برای hash partiotion استفاده
کرد).فرم نوشتاری دستور به دو صورت است:
فرم اول جدول دارای range partition را به
دو پارتیشن تقسیم می کند:
ALTER TABLE table_name SPLIT
PARTITION partition_name
AT (range_part_value)
INTO
(
PARTITION new_part1
[TABLESPACE tablespace_name],
PARTITION new_part2
[TABLESPACE tablespace_name]
);
فرم دوم جدول حاوی list partition را به دو پارتیشن تقسیم می کند:
ALTER TABLE table_name SPLIT
PARTITION partition_name
VALUES (value[, value]...)
INTO
(
PARTITION new_part1
[TABLESPACE tablespace_name],
PARTITION new_part2
[TABLESPACE tablespace_name]
);
مثال یک:
جدول sales را با سه پارتیشن ذیل در نظر بگیرید:
CREATE TABLE sales
PARTITION
europe VALUES('FRANCE', 'ITALY'),
PARTITION
asia VALUES('INDIA', 'PAKISTAN'),
(
dept_no number,
part_no varchar2,
country varchar2(20),
date date,
amount number
)
PARTITION BY LIST(country)
(
PARTITION
americas VALUES('US', 'CANADA')
);
دستور زیر پارتیشن Americas را به
دو پارتیشن us و Canada تقسیم
می کند:
ALTER
TABLE sales SPLIT PARTITION americas
VALUES ('US')
INTO (PARTITION us, PARTITION canada);
مثال دو:
CREATE
TABLE sales
(
dept_no number,
part_no varchar2,
country varchar2(20),
date date,
amount number
)
PARTITION
BY RANGE(date)
(
PARTITION q1_2012
VALUES LESS
THAN('2012-Apr-01'),
PARTITION q2_2012
VALUES LESS
THAN('2012-Jul-01'),
PARTITION q3_2012
VALUES LESS
THAN('2012-Oct-01'),
PARTITION q4_2012
VALUES LESS THAN('2013-Jan-01')
);
جدول از چهار پارتیشن زیر
تشکیل شده است:
q1_2012, q2_2012, q3_2012,
and q4_2012
دستور زیر q4_2012 را
به دو پارتیشن q4_2012_p1 و q4_2012_p2 تقسیم
می کند:
ALTER
TABLE sales SPLIT PARTITION q4_2012
AT ('15-Nov-2012')
INTO
(
PARTITION q4_2012_p1,
PARTITION q4_2012_p2
);
توجه : اگر tablespace جدیدی برای پارتیشنها تعریف نشود از tablespace پیش فرض استفاده می گردد.