Gunakan perintah ALTER TABLE… MERGE PARTITION untuk menggabungkan dua partisi menjadi satu partisi baru yang berisi semua konten dari kedua partisi aslinya.
Catatan
- Anda harus menjadi pemilik tabel atau memiliki izin administratif pada tabel untuk menjalankan pernyataan ini.
- Perintah SQL ini hanya dapat digunakan pada tabel terpartisi LIST dan RANGE. Tidak dapat digunakan pada tabel terpartisi HASH.
- Jika indeks ada pada tabel, indeks akan dibuat ulang pada partisi baru.
Sintaksis
ALTER TABLE nama_tabel MERGE PARTITIONS
nama_partisi , nama_partisi
INTO PARTITION part_baru [TABLESPACE nama_tablespace] ;Parameter
| Parameter | Deskripsi |
nama_tabel | Nama tabel terpartisi. Anda dapat menentukan skema. |
nama_partisi | Nama dua partisi yang akan digabungkan. Pisahkan nama dengan koma (,). |
part_baru | Nama partisi baru. Nama partisi harus unik di antara semua partisi dan subpartisi. |
nama_tablespace | Menentukan tablespace tempat partisi baru akan berada. Jika Anda tidak menentukan tablespace, partisi akan berada di tablespace default. |
Contoh
Buat tabel terpartisi bernama sales dan masukkan data uji ke dalam tabel. Contoh:
CREATE TABLE sales
(
dept_no number,
part_no varchar2,
country varchar2(20),
date date,
amount number
)
PARTITION BY LIST(country)
(
PARTITION europe VALUES('FRANCE', 'ITALY'),
PARTITION asia VALUES('INDIA', 'PAKISTAN'),
PARTITION americas VALUES('US', 'CANADA')
);
INSERT INTO sales VALUES
(10, '4519b', 'FRANCE', '17-Jan-2012', '45000'),
(20, '3788a', 'INDIA', '01-Mar-2012', '75000'),
(40, '9519b', 'US', '12-Apr-2012', '145000'),
(20, '3788a', 'PAKISTAN', '04-Jun-2012', '37500'),
(40, '4577b', 'US', '11-Nov-2012', '25000'),
(30, '7588b', 'CANADA', '14-Dec-2012', '50000'),
(30, '9519b', 'CANADA', '01-Feb-2012', '75000'),
(30, '4519b', 'CANADA', '08-Apr-2012', '120000'),
(40, '3788a', 'US', '12-May-2012', '4950'),
(10, '9519b', 'ITALY', '07-Jul-2012', '15000'),
(10, '9519a', 'FRANCE', '18-Aug-2012', '650000'),
(10, '9519b', 'FRANCE', '18-Aug-2012', '650000'),
(20, '3788b', 'INDIA', '21-Sept-2012', '5090'),
(40, '4788a', 'US', '23-Sept-2012', '4950'),
(40, '4788b', 'US', '09-Oct-2012', '15000'),
(20, '4519a', 'INDIA', '18-Oct-2012', '650000'),
(20, '4519b', 'INDIA', '2-Dec-2012', '5090');Pisahkan partisi americas menjadi dua partisi: us dan canada. Contoh:
ALTER TABLE sales SPLIT PARTITION americas
VALUES ('US')
INTO (PARTITION us, PARTITION canada);Gabungkan partisi us dan canada menjadi partisi baru bernama new_americas. Contoh:
ALTER TABLE sales MERGE PARTITIONS us, canada
INTO PARTITION new_americas;