All Products
Search
Document Center

PolarDB:ALTER TABLE DROP SUBPARTITION

Last Updated:Mar 11, 2026

Menghapus sebuah subpartisi beserta datanya dari tabel yang dipartisi secara komposit. Operasi ini menghapus data subpartisi secara permanen. Pastikan data telah dicadangkan atau tidak lagi diperlukan sebelum menjalankan pernyataan ini.

Sinopsis

ALTER TABLE table_name DROP SUBPARTITION subpartition_name;

Parameter

Parameter

Wajib

Deskripsi

Contoh

table_name

Ya

Nama tabel yang dipartisi secara komposit yang berisi subpartisi yang akan dihapus.

customer_data

subpartition_name

Ya

Nama subpartisi yang akan dihapus.

p_2022_asia

Catatan

  • Anda harus menjadi pemilik tabel atau pengguna dengan hak istimewa yang sesuai untuk menjalankan perintah ini.

  • Anda tidak dapat menghapus subpartisi terakhir dalam suatu tabel.

  • DROP SUBPARTITION memperoleh kunci eksklusif tingkat tabel AccessExclusiveLock. Kunci ini memblokir semua operasi Data Manipulation Language (DML) dan sebagian besar operasi Data Definition Language (DDL) pada tabel tersebut. Jalankan pernyataan ini selama jam sepi dan alokasikan waktu yang cukup agar tidak mengganggu operasi penting lainnya pada tabel.

Contoh

Contoh ini menghapus subpartisi untuk data pengguna dari wilayah Asia tahun 2022 guna mengosongkan ruang penyimpanan. Tabel customer_data merupakan composite partitioned table yang dipartisi berdasarkan tahun pendaftaran (range partitioning) dan disubpartisi berdasarkan wilayah (list subpartitioning).

Persiapkan lingkungan

Langkah ini membuat tabel yang dipartisi secara komposit bernama customer_data. Tabel dipartisi berdasarkan rentang tahun pendaftaran dan kemudian disubpartisi berdasarkan wilayah pengguna.

-- Buat tabel yang dipartisi secara komposit
CREATE TABLE customer_data (
    customer_id  INT NOT NULL,
    region       VARCHAR2(10),
    reg_date     DATE
)
PARTITION BY RANGE (reg_date)
SUBPARTITION BY LIST (region)
(
    PARTITION p_2022 VALUES LESS THAN (TO_DATE('2023-01-01', 'YYYY-MM-DD'))
    (
        SUBPARTITION p_2022_asia    VALUES ('Asia'),
        SUBPARTITION p_2022_europe  VALUES ('Europe')
    ),
    PARTITION p_2023 VALUES LESS THAN (TO_DATE('2024-01-01', 'YYYY-MM-DD'))
    (
        SUBPARTITION p_2023_asia    VALUES ('Asia'),
        SUBPARTITION p_2023_europe  VALUES ('Europe')
    )
);

-- Masukkan data
INSERT INTO customer_data VALUES (101, 'Asia', TO_DATE('2022-06-10', 'YYYY-MM-DD'));
INSERT INTO customer_data VALUES (102, 'Europe', TO_DATE('2022-07-20', 'YYYY-MM-DD'));
INSERT INTO customer_data VALUES (103, 'Asia', TO_DATE('2023-06-10', 'YYYY-MM-DD'));
INSERT INTO customer_data VALUES (104, 'Europe', TO_DATE('2023-07-20', 'YYYY-MM-DD'));

Lakukan pemeriksaan awal

Sebelum menghapus subpartisi, cadangkan datanya dan verifikasi keberadaannya.

-- Penting: Sebelum menghapus subpartisi, pastikan Anda telah membackup data terkait.

-- Periksa struktur subpartisi untuk memastikan bahwa subpartisi p_2022_asia ada.
SELECT SUBPARTITION_NAME 
FROM USER_TAB_SUBPARTITIONS 
WHERE TABLE_NAME = 'CUSTOMER_DATA';

Jalankan perintah

Jalankan perintah DROP SUBPARTITION untuk menghapus subpartisi p_2022_asia.

ALTER TABLE customer_data DROP SUBPARTITION p_2022_asia;

Verifikasi hasil

  1. Verifikasi bahwa subpartisi dan datanya telah dihapus.

    -- Verifikasi struktur: Pastikan subpartisi telah dihapus.
    SELECT SUBPARTITION_NAME FROM USER_TAB_SUBPARTITIONS 
    WHERE TABLE_NAME = 'CUSTOMER_DATA';
    -- Hasil kueri tidak lagi berisi p_2022_asia.
    
    -- Verifikasi data: Pastikan data dalam subpartisi telah dihapus.
    SELECT COUNT(*) FROM customer_data WHERE customer_id = 101;
    -- Hasil kueri adalah 0.
  2. Perbarui statistik tabel.

    Setelah menghapus subpartisi, segera perbarui statistik tabel agar Pengoptimal kueri dapat menghasilkan rencana eksekusi yang akurat.

    ANALYZE CUSTOMER_DATA;

FAQ

Q1: Mengapa saya mendapatkan error ORA-00942: table or view does not exist?

A: Error ini biasanya terjadi ketika Anda tidak memiliki hak istimewa ALTER pada tabel target atau ketika nama tabel atau skema salah ketik. Periksa pengaturan hak istimewa Anda dan pastikan nama objek benar.

Q2: Mengapa terjadi error ORA-14006: invalid partition name?
A: Error ini menunjukkan bahwa nama subpartisi yang ditentukan tidak ada atau salah ketik. Kueri tampilan ALL_TAB_SUBPARTITIONS untuk memverifikasi nama yang benar. Jika nama tidak diapit tanda kutip ganda, database akan mengonversinya menjadi huruf kapital untuk pencocokan.

Q3: Mengapa saya mendapatkan error ORA-01031: insufficient privileges?
A: Anda tidak memiliki hak istimewa ALTER pada tabel target. Hubungi Administrator basis data Anda untuk memberikan hak istimewa yang diperlukan.

Q4: Apakah data dapat dipulihkan setelah menjalankan DROP SUBPARTITION?
A: Tidak. DROP SUBPARTITION merupakan penghapusan permanen yang melewati Recycle Bin. Satu-satunya cara untuk memulihkan data adalah dengan memulihkannya dari backup database yang dibuat sebelum operasi tersebut.

Pernyataan SQL terkait