Menambahkan subpartisi baru ke partisi tingkat pertama tertentu dari tabel partisi komposit. Operasi ini memperluas struktur partisi dan memengaruhi distribusi data. Pastikan kebijakan subpartisi telah didefinisikan untuk partisi induk, serta batas atau nilai subpartisi baru tidak bertentangan dengan subpartisi yang sudah ada sebelum menjalankan pernyataan ini.
Sinopsis
ALTER TABLE nama_tabel
MODIFY PARTITION nama_partisi
ADD SUBPARTITION { list_subpartition | range_subpartition };
-- Definisi subpartisi LIST
SUBPARTITION nama_subpartisi
VALUES (nilai[, nilai]...)
[TABLESPACE nama_tablespace]
-- Definisi subpartisi RANGE
SUBPARTITION nama_subpartisi
VALUES LESS THAN (nilai[, nilai]...)
[TABLESPACE nama_tablespace]
Parameter
Parameter | Diperlukan | Deskripsi Parameter | Contoh |
| Ya | Nama tabel partisi komposit target. |
|
| Ya | Nama partisi tingkat pertama target tempat subpartisi baru akan ditambahkan. |
|
| Ya | Nama subpartisi baru. |
|
| Ya | Mendefinisikan nilai batas untuk subpartisi baru. |
|
| Opsional | Menentukan tablespace untuk subpartisi baru. Jika parameter ini dihilangkan, maka akan menggunakan tablespace default tabel. |
|
Catatan
Tipe subpartisi baru (
LISTatauRANGE) harus sesuai dengan tipe subpartisi yang ada di bawah partisi induk yang sama.nama_subpartisiharus unik di antara semua partisi dan subpartisi dalam tabel.Saat menambahkan subpartisi
RANGE, nilai batas yang didefinisikan olehVALUES LESS THAN (...)harus lebih besar dari batas atas semua subpartisi yang ada. SubpartisiRANGEhanya dapat ditambahkan secara berurutan naik. Untuk menyisipkan subpartisi di tengah, gunakan pernyataanALTER TABLE ... SPLIT SUBPARTITIONuntuk membagi subpartisi yang ada.Saat menambahkan subpartisi
LIST, nilai dalam daftarVALUES (...)tidak boleh tumpang tindih dengan nilai subpartisi lainnya di bawah partisi induk yang sama.ADD SUBPARTITIONmengakuisisi kunci eksklusif tingkat tabel (AccessExclusiveLock). Kunci ini memblokir semua operasiDMLdan sebagian besar operasiDDLpada tabel. Jalankan perintah ini selama jam non-puncak dan sediakan jendela waktu yang cukup untuk menyelesaikannya.ADD SUBPARTITIONtidak membatasi jumlah subpartisi yang dapat Anda tambahkan. Namun, sumber daya sistem memberlakukan batas praktis. Untuk performa dan kemampuan kelola yang optimal, pertahankan total jumlah partisi untuk satu tabel di bawah1.000.Jangan gunakan
ADD SUBPARTITIONuntuk menambahkan subpartisi ke partisi yang diatur oleh aturanMAXVALUEatauDEFAULT.Jika tabel memiliki indeks, database secara otomatis membuat indeks partisi yang sesuai pada subpartisi baru.
Anda harus menjadi pemilik tabel atau memiliki hak istimewa administrator untuk menjalankan perintah ini.
Subpartisi baru awalnya tidak memiliki statistik. Untuk memastikan pengoptimal kueri menghasilkan rencana eksekusi yang akurat, kumpulkan statistik untuk tabel segera setelah operasi ini.
Contoh
Menambahkan subpartisi LIST ke tabel partisi komposit RANGE-LIST
Contoh ini menambahkan subpartisi baru untuk wilayah Afrika ke partisi untuk tahun 2023. Tabel tersebut dipartisi komposit berdasarkan tahun penjualan (RANGE) dan wilayah penjualan (LIST).
Menambahkan subpartisi RANGE ke tabel partisi komposit RANGE-RANGE
Contoh ini menambahkan subpartisi untuk kuartal kedua (Q2) ke partisi 2023 dari tabel yang dipartisi komposit berdasarkan tahun pesanan (RANGE) dan tanggal pesanan (RANGE).
FAQ
T1: Mengapa saya mendapatkan kesalahan ORA-14321: subpartisi ... sudah ada?
Kesalahan ini terjadi karena definisi VALUES untuk subpartisi baru bertentangan dengan yang sudah ada di bawah partisi tingkat pertama yang sama. Untuk subpartisi LIST, nilai sudah ada; untuk subpartisi RANGE, batas baru tidak lebih tinggi dari yang terakhir. Tentukan nilai batas yang tidak tumpang tindih untuk subpartisi baru.
T2: Mengapa saya mendapatkan kesalahan ORA-02269: partisi tidak ada?
Kesalahan ini terjadi karena nama_partisi yang ditentukan dalam klausa MODIFY PARTITION tidak ada. Kueri tampilan USER_TAB_PARTITIONS untuk memverifikasi nama partisi tingkat pertama yang benar.
T3: Mengapa saya mendapatkan kesalahan ORA-14150: subpartisi tidak ditentukan?
Anda mencoba menjalankan ADD SUBPARTITION pada tabel partisi yang tidak memiliki kebijakan subpartisi. Perintah ini hanya berlaku untuk tabel partisi komposit.
T4: Mengapa saya mendapatkan kesalahan ORA-01031: hak istimewa tidak mencukupi?
Pengguna yang menjalankan perintah tidak memiliki hak istimewa ALTER pada tabel target. Hubungi administrator basis data untuk memberikan hak istimewa yang diperlukan.
T5: Mengapa saya menerima kesalahan ORA-14074: batas partisi harus lebih tinggi dari partisi terakhir?
Perintah ADD SUBPARTITION hanya dapat menambahkan subpartisi RANGE di akhir rentang yang ada. Untuk menyisipkan subpartisi di tengah, gunakan perintah SPLIT SUBPARTITION sebagai gantinya.
Pernyataan terkait
ALTER TABLE ADD PARTITION: Menambahkan partisi tingkat pertama baru ke tabel partisi.
ALTER TABLE DROP SUBPARTITION: Menghapus subpartisi tertentu.
ALTER TABLE SPLIT SUBPARTITION: Membagi satu subpartisi menjadi dua subpartisi.