全部产品
Search
文档中心

PolarDB:ALTER TABLE…MERGE PARTITION

更新时间:Jul 02, 2025

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

ParameterDeskripsi
nama_tabelNama tabel terpartisi. Anda dapat menentukan skema.
nama_partisiNama dua partisi yang akan digabungkan. Pisahkan nama dengan koma (,).
part_baruNama partisi baru.

Nama partisi harus unik di antara semua partisi dan subpartisi.

nama_tablespaceMenentukan 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;