Topik ini menjelaskan cara beralih antara pembagian rentang dan pembagian rentang interval.
Mengubah tabel terpartisi rentang menjadi tabel terpartisi rentang interval
Gunakan pernyataan ALTER TABLE...SET INTERVAL untuk mengubah tabel terpartisi rentang yang ada menjadi tabel terpartisi rentang interval.
Setelah menetapkan rentang atau interval waktu, basis data secara otomatis membuat partisi berdasarkan rentang atau interval waktu tersebut. Data kemudian dimasukkan ke dalam partisi baru.
Pernyataan tersebut menggunakan format berikut:
ALTER TABLE <table_name> SET INTERVAL (<constant> | <expression>);Untuk informasi lebih lanjut tentang parameter INTERVAL, lihat Pembagian Rentang Interval.
Mengubah tabel terpartisi rentang interval menjadi tabel terpartisi rentang
Gunakan pernyataan SET INTERVAL() untuk menonaktifkan pembagian rentang interval. Setelah pembagian rentang interval dinonaktifkan, basis data mengubah tabel terpartisi rentang interval menjadi tabel terpartisi rentang. Rentang atau interval waktu untuk pembagian rentang interval diubah menjadi rentang atau interval waktu untuk pembagian rentang.
Pernyataan tersebut menggunakan format berikut:
ALTER TABLE <table_name> SET INTERVAL ();Contoh
Contoh berikut menunjukkan cara mengubah tabel penjualan dari tabel terpartisi rentang menjadi tabel terpartisi rentang interval dan memasukkan data ke dalamnya:
Buat tabel terpartisi rentang bernama sales seperti yang ditunjukkan dalam contoh berikut:
CREATE TABLE sales
(
prod_id int,
prod_quantity int,
sold_month date
)
PARTITION BY RANGE(sold_month)
(
PARTITION p1
VALUES LESS THAN('15-JAN-2019'),
PARTITION p2
VALUES LESS THAN('15-FEB-2019')
);Kueri tampilan ALL_TAB_PARTITIONS seperti yang ditunjukkan dalam contoh berikut:
SELECT partition_name, high_value FROM ALL_TAB_PARTITIONS;Hasil berikut dikembalikan:
partition_name | high_value
----------------+----------------------
P1 | FOR VALUES FROM ('15-JAN-19 00:00:00') TO ('15-FEB-19 00:00:00')
P2 | FOR VALUES FROM (MINVALUE) TO ('15-JAN-19 00:00:00')
(2 rows)Ubah tabel terpartisi rentang menjadi tabel terpartisi rentang interval seperti yang ditunjukkan dalam contoh berikut:
ALTER TABLE sales SET INTERVAL (NUMTOYMINTERVAL(1, 'MONTH'));Masukkan data yang melebihi partisi rentang seperti yang ditunjukkan dalam contoh berikut:
INSERT INTO sales VALUES (1,100,'05-APR-2019');
INSERT 0 1Setelah memasukkan data, kueri tampilan ALL_TAB_PARTITIONS lagi seperti yang ditunjukkan dalam contoh berikut:
SELECT partition_name, high_value FROM ALL_TAB_PARTITIONS;Jika data dimasukkan, sistem menghasilkan nama untuk partisi rentang interval. Nama tersebut bervariasi berdasarkan sesi. Hasil berikut dikembalikan:
partition_name | high_value
----------------+----------------------
SYS596430103 | FOR VALUES FROM ('15-MAR-19 00:00:00') TO ('15-APR-19 00:00:00')
P1 | FOR VALUES FROM ('15-JAN-19 00:00:00') TO ('15-FEB-19 00:00:00')
P2 | FOR VALUES FROM (MINVALUE) TO ('15-JAN-19 00:00:00')
(3 rows)