Memperkecil ukuran Datafile pada UNDO TABLESPACE ORACLE
Kadang-kadang di Database production kita melakukan penghapusan data yang cukup besar tiap tahun / sewaktu-waktu.
Proses ini akan menghasilkan redo yang amat besar.
Dengan proses penghapusan tadi maka undo tablespace akan bertambah dengan amat cepat dan menghabiskan banyak space harddisk.
Kita dapat memperkecil ukuran tablespace ini karena memang kita tidak membutuhkan undo tablespace yang terlalu besar, jika tidak ada proses penghapusan data yang teramat banyak.Kadang-kadang kita menemukan masalah :
- Kita ingin membuat undo tablespace dengan datafile dengan tipe AUTOEXTEND ON MAXSIZE UNLIMITED untuk mencegah error ORA-1651 (unable to extend save undo segment by in tablespace).
- Dan juga jika kita telah menjalankan perintah resize untuk mengecilkan datafile “alter database datafile…resize” dan selalu menghasilkan error ORA-3297 (file contains blocks of data beyond requested RESIZE value) yang berarti datanya lebih besar daripada nilai size datafile baru.
- Kita juga ingin mengecilkan datafile untuk mendapatkan free space untuk dipakai oleh tablespace lain.
Solusi yang dapat digunakan adalah:
- Membuat undo tablespace baru dengan ukuran yang lebih kecil.
SQL> create undo tablespace UNDO_RBS1 datafile ‘undorbs1.dbf’ size 100m; - Menset undo tablespace yang baru dibuat tadi sebagai default undo_tablespace
SQL> alter system set undo_tablespace=undo_rbs1; - Menghapus undo_tablespace yang lama.
SQL> drop tablespace undo_rbs0 including contents
CATATAN: Menghapus undo tablespace yang lama mungkin akan memberikan pesan error ORA-30013 (undo tablespace ‘%s’ is currently in use). Error ini menunjukkan bahwa undo tablespace yang lama sedang digunakan oleh sistem. Kita harus menunggu sampai undo tablespace ini tidak digunakan. Dengan kata lain kita harus menunggu proses yang sedang dijalankan oleh user sampai user tersebut menjalankan commit atau rollback.
Hal lain yang perlu diperhatikan:
- Nilai dari parameter undo_retention also juga mempunyai peran dalam pertumbuhan undo_tablespace. Jika tidak ada space undo lagi untuk transaksi baru, maka space undo yang ada akan digunakan kembali (reused).
Tetapi, jika datafile dari undo_tablespace di set untuk extend secara otomatis, maka tidak akan di-reused, tetapi akan mengalokasikan space baru dan datafilenya dari undo_tablespacenya pun mulai membengkak. - Apakah datafile besar itu buruk?
Besarnya datafile dari tablespace secara teori akan berpengaruh kepada Database dan Operating System. Dengan datafile yang kecil OS akan menggunakan I/O secara minimal. Oracle akan dapat menampung keseluruhan file dan akan lebih sedikit segment file yang dikelola.
Dengan AUM (Automatic User Managed) kita akan mendapatkan bitmapped file dan keuntungan dari performanya (banyaknya undo segment akan secara otomatis dikelola dan tidak bergantung pada ukuran dari tablespace).
Dengan datafile yang lebih besar kita akan dapat masalah baru yaitu backup proses akan memakan waktu lebih lama, namun bukan berarti juga karena datafile tersebut besar akan sangat berpengaruh buruk. Hanya saja kita harus lebih spesifik dan intens untuk memonitoring database.

Leave a Reply