全部产品
Search
文档中心

PolarDB:ALTER TABLE DROP SUBPARTITION

更新时间:Oct 24, 2025

Menghapus subpartisi beserta data dari tabel partisi komposit. Operasi ini secara permanen menghapus data subpartisi. Sebelum menjalankan pernyataan ini, pastikan data subpartisi telah dicadangkan atau tidak lagi diperlukan.

Sinopsis

ALTER TABLE nama_tabel DROP SUBPARTITION nama_subpartisi;

Parameter

Parameter

Diperlukan

Deskripsi

Contoh

nama_tabel

Ya

Nama tabel partisi komposit yang berisi subpartisi yang akan dihapus.

customer_data

nama_subpartisi

Ya

Nama subpartisi yang akan dihapus.

p_2022_asia

Catatan

  • Anda harus menjadi pemilik tabel atau memiliki hak istimewa untuk menjalankan perintah ini.

  • Tidak dapat menghapus subpartisi terakhir dalam sebuah 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. Jalankan pernyataan ini selama jam non-puncak dan berikan waktu yang cukup untuk menyelesaikannya guna menghindari pemblokiran operasi penting lainnya pada tabel.

Contoh

Contoh ini menghapus subpartisi untuk data pengguna dari wilayah Asia untuk tahun 2022 guna membebaskan ruang penyimpanan. Tabel customer_data adalah Composite Partitioned Table yang dipartisi berdasarkan tahun pendaftaran (Range Partitioning) dan subpartisi berdasarkan wilayah (List Subpartitioning).

Siapkan lingkungan

Langkah ini membuat tabel partisi komposit bernama customer_data. Tabel ini dipartisi berdasarkan rentang tahun pendaftaran dan kemudian subpartisi daftar berdasarkan wilayah pengguna.

-- Buat tabel partisi 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 strukturnya.

-- Penting: Sebelum Anda menghapus subpartisi, pastikan Anda telah mencadangkan data yang relevan.

-- 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 query tidak lagi berisi p_2022_asia.
    
    -- Verifikasi data: Pastikan data dalam subpartisi telah dihapus.
    SELECT COUNT(*) FROM customer_data WHERE customer_id = 101;
    -- Hasil query adalah 0.
  2. Perbarui statistik tabel.

    Setelah menghapus subpartisi, segera perbarui statistik tabel untuk memastikan pengoptimal kueri menghasilkan rencana eksekusi yang akurat.

    ANALYZE CUSTOMER_DATA;

FAQ

T1: Mengapa saya mendapatkan kesalahan ORA-00942: table or view does not exist?

A: Kesalahan ini biasanya terjadi karena dua alasan: 1) Anda kekurangan hak istimewa ALTER pada tabel target, atau 2) nama tabel atau skema salah eja. Periksa pengaturan hak istimewa Anda dan pastikan nama objek sudah benar.

T2: Mengapa terjadi kesalahan ORA-14006: invalid partition name ?
A: Kesalahan ini menunjukkan bahwa nama subpartisi yang ditentukan tidak ada atau salah eja. Anda dapat memeriksa tampilan ALL_TAB_SUBPARTITIONS untuk memverifikasi nama subpartisi target yang benar. Perhatikan bahwa jika nama tidak diapit oleh tanda kutip ganda, database biasanya mengubahnya menjadi huruf besar untuk pencocokan.

T3: Mengapa saya mendapatkan kesalahan ORA-01031: insufficient privileges ?
A: Kesalahan ini terjadi karena Anda tidak memiliki hak istimewa ALTER pada tabel target. Hubungi administrator basis data Anda untuk memberikan hak istimewa yang diperlukan.

T4: Dapatkah data dipulihkan setelah menjalankan perintah DROP SUBPARTITION?
A: Tidak. DROP SUBPARTITION adalah penghapusan fisik yang melewati Recycle Bin. Satu-satunya cara untuk memulihkan data adalah dengan memulihkannya dari cadangan basis data yang dibuat sebelum operasi dilakukan.

Pernyataan SQL terkait