Menghapus semua data dari partisi tertentu dalam tabel partisi. Operasi ini secara permanen menghapus data tetapi mempertahankan struktur partisi. Pastikan data tersebut tidak lagi diperlukan atau telah dicadangkan sebelum menjalankan perintah ini.
Sinopsis
ALTER TABLE table_name TRUNCATE PARTITION partition_name
[{DROP|REUSE} STORAGE]Parameter
Parameter | Diperlukan | Deskripsi | Contoh |
| Ya | Nama tabel partisi. |
|
| Ya | Nama partisi yang akan dipotong. |
|
| Tidak | Klausa ini diurai untuk kompatibilitas sintaksis Oracle tetapi diabaikan dan tidak berpengaruh pada penyimpanan. |
|
Catatan
Anda harus menjadi pemilik tabel atau pengguna dengan hak istimewa untuk menjalankan perintah ini.
TRUNCATE PARTITIONmendapatkan kunci eksklusif tingkat tabelAccessExclusiveLock. 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 yang cukup untuk menyelesaikannya agar tidak memblokir operasi penting lainnya pada tabel.TRUNCATE PARTITIONadalah operasi hanya metadata yang dikombinasikan dengan penghapusan file. Proses ini selesai dalam hitungan detik, bahkan untuk partisi dengan ratusan juta baris, dan memiliki overhead I/O, CPU, serta memori yang minimal.Jika pemicu
ON TRUNCATEdidefinisikan pada tabel, operasi ini akan memicunya. Pastikan Anda memahami logika bisnis dari pemicu ini untuk mencegah efek samping yang tidak disengaja.
Contoh
Contoh ini menunjukkan cara memotong partisi kuartal historis dari tabel catatan penjualan. Ini merupakan tugas manajemen siklus hidup data umum, di mana Anda menghapus data lama tetapi mempertahankan struktur partisi untuk memuat data baru untuk periode yang sama nanti.
FAQ
P1: Apa perbedaan antara TRUNCATE PARTITION dan DROP PARTITION?TRUNCATE PARTITION hanya menghapus data dalam partisi tetapi mempertahankan definisi partisi. Sebaliknya, DROP PARTITION menghapus baik definisi partisi maupun semua datanya.
P2: Bisakah data dipulihkan setelah menjalankan TRUNCATE PARTITION?
Tidak. TRUNCATE adalah operasi DDL yang secara permanen menghapus data. Secara default, itu tidak dicatat dalam log transaksi dan tidak dapat dibatalkan atau dipulihkan menggunakan metode flashback standar.
P3: Mengapa saya mendapatkan kesalahan RA-02149: partisi yang ditentukan tidak ada saat saya menjalankan perintah ini?
Kesalahan ini menunjukkan bahwa partisi yang ditentukan tidak ada atau nama partisi tersebut tidak sesuai dengan huruf besar/kecil. Verifikasi nama partisi yang tepat dengan menjalankan kueri di bagian pemeriksaan awal, atau gunakan tanda kutip ganda untuk kecocokan yang tepat.
P4: Mengapa saya mendapatkan kesalahan ORA-01031: hak istimewa tidak mencukupi saat saya menjalankan perintah ini?
Kesalahan ini terjadi karena pengguna yang menjalankan perintah tidak memiliki hak istimewa ALTER pada tabel target. Hubungi administrator basis data Anda untuk memberikan hak istimewa yang diperlukan.
P5: Mengapa saya menerima kesalahan ERROR: cannot truncate partition of table because it has global indexes saat saya menjalankan perintah ini?
TRUNCATE PARTITION gagal jika tabel memiliki indeks global. Indeks global mempertahankan keunikan dan jalur akses di semua partisi. Operasi TRUNCATE tidak dapat dengan cepat membersihkan entri indeks tanpa mengorbankan integritas indeks global.
SQL Terkait pernyataan
ALTER TABLE DROP PARTITION: Menghapus definisi partisi dan datanya.
ALTER TABLE ADD PARTITION: Menambahkan partisi baru ke tabel partisi.
ALTER TABLE SPLIT PARTITION: Membagi satu partisi menjadi dua partisi baru.