全部产品
Search
文档中心

PolarDB:ALTER TABLE RENAME PARTITION

更新时间:Oct 24, 2025

Mengubah nama partisi atau subpartisi. Operasi ini hanya memengaruhi metadata, tetapi dapat membatalkan skrip yang merujuk pada nama lama. Pastikan nama baru unik dan periksa kode dependen sebelum menjalankan perintah ini.

Sinopsis

ALTER TABLE table_name RENAME PARTITION old_name TO new_name;

ALTER TABLE table_name RENAME SUBPARTITION old_name TO new_name;

Parameter

Parameter

Diperlukan

Deskripsi

Contoh

table_name

Ya

Nama tabel partisi target.

customer_data

old_name

Ya

Nama saat ini dari partisi atau subpartisi yang akan diubah namanya.

sp_asia

new_name

Ya

Nama baru untuk partisi atau subpartisi.

sp_2023_asia

Catatan

  • Anda harus menjadi pemilik tabel atau memiliki izin ALTER pada tabel.

  • RENAME PARTITION mendapatkan kunci eksklusif tingkat tabel AccessExclusiveLock pada partisi target. 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 beri waktu cukup untuk menyelesaikannya agar tidak memblokir operasi penting lainnya pada tabel.

  • Nama baru untuk partisi atau subpartisi harus unik dalam tabel.

  • Sebagai operasi DDL, perintah ini melakukan commit secara otomatis dan tidak dapat dibatalkan. Untuk membalikkan perubahan, jalankan perintah RENAME lain untuk mengembalikan ke nama aslinya.

  • Jika nama partisi lama di-hardcode dalam kode aplikasi, prosedur tersimpan, atau tampilan, objek tersebut akan gagal setelah penggantian nama. Sebelum mengganti nama partisi, lakukan analisis dampak menyeluruh dan perbarui semua kode dependen.

Contoh

Contoh ini menunjukkan cara mengubah nama subpartisi sp_asia dalam tabel partisi komposit customer_data menjadi sp_2023_asia untuk menyelaraskan dengan konvensi penamaan berdasarkan tahun dan wilayah.

Siapkan lingkungan

Langkah ini membuat tabel partisi komposit RANGE-LIST bernama customer_data.

-- Buat tabel partisi komposit
CREATE TABLE customer_data (
    customer_id INT, region VARCHAR2(20), reg_date DATE
)
PARTITION BY RANGE (reg_date)
SUBPARTITION BY LIST (region) (
    PARTITION p_2023 VALUES LESS THAN (TO_DATE('2024-01-01', 'YYYY-MM-DD')) (
        SUBPARTITION sp_asia VALUES ('Asia'),
        SUBPARTITION sp_2023_europe VALUES ('Europe')
    )
);

Lakukan pemeriksaan awal

Verifikasi bahwa subpartisi target ada.

-- Konfirmasikan bahwa subpartisi lama sp_asia ada
SELECT SUBPARTITION_NAME FROM USER_TAB_SUBPARTITIONS 
WHERE TABLE_NAME = 'CUSTOMER_DATA';

Jalankan perintah

Eksekusi perintah RENAME SUBPARTITION untuk mengubah nama subpartisi sp_asia menjadi sp_2023_asia.

ALTER TABLE customer_data RENAME SUBPARTITION sp_asia TO sp_2023_asia;

Verifikasi hasil

Verifikasi bahwa subpartisi telah diubah namanya.

-- Verifikasi struktur: Konfirmasikan bahwa nama subpartisi diperbarui
SELECT SUBPARTITION_NAME FROM USER_TAB_SUBPARTITIONS 
WHERE TABLE_NAME = 'CUSTOMER_DATA';
-- Hasil kueri harus mencakup sp_2023_asia dan bukan sp_asia

FAQ

T1: Mengapa saya mendapatkan kesalahan ORA-14078: nama partisi sudah digunakan?
Kesalahan ini menunjukkan bahwa new_name yang ditentukan sudah digunakan oleh partisi atau subpartisi lain dalam tabel yang sama. Pilih nama yang unik.

T2: Mengapa saya mendapatkan kesalahan ORA-14076: nama partisi harus ditentukan?
Kesalahan ini menunjukkan bahwa old_name yang ditentukan tidak ada. Verifikasi nama dengan mengikuti langkah-langkah pemeriksaan awal.

T3: Setelah mengganti nama partisi, mengapa aplikasi atau skrip saya yang merujuk padanya berhenti bekerja?
Hal ini terjadi ketika aplikasi atau skrip meng-hardcode nama partisi lama. Anda harus memperbarui semua referensi tersebut untuk menggunakan nama baru.

Pernyataan SQL terkait