Wednesday, December 23, 2009

ORA-00018: Maximum Number of Sessions Exceeded

Kali ini saya mau berbagi pengalaman ketika menemui salah satu error di Oracle yaitu ORA-00018: Maximum Number of Sessions Exceeded. Error ini biasanya didahului oleh error lain, dalam kasus ini ialah ORA-00604: error occurred at recursive SQL level 1. Error ini diakibatkan jumlah process yang disediakan oleh Oracle tidak dapat menampung banyaknya proses yang sedang berjalan serentak pada waktu tertentu. Salah satu solusi yang ditawarkan ialah meningkatkan jumlah process yang ada di initialization parameter Oracle.

Untuk melakukannya ikuti langkah-langkah berikut :
1. buka sqlplus dan login sebagai SYS user
2. lihat jumlah process yang disediakan Oracle dengan perintah : sho parameter PROCESSES
(Dalam kasus ini processes = 200)
3. Naikkan nilai processes sesuai dengan kebutuhan user/aplikasi pada saat itu dengan perintah :
Alter system set processes=400 scope=spfile;

Mengapa harus menggunakan scope=spfile dan bukan scope=both ? Karena parameter PROCESSES tidak bersifat dinamis namun membutuhkan restart database. Karenanya jika kita coba menggunakan scope=both maka akan menghasilkan pesan error seperti ini : ORA-02095: specified initialization parameter cannot be modified.

4. Shutdown database & startup kembali
5. Buat perubahan parameter ini menjadi permanen pada pfile dengan perintah : create pfile from spfile
6. Lakukan kembali shutdown database & startup kembali untuk memastikannya
7. Lihat nilai PROCESSES pada initialization parameter, seharusnya nilainya sudah menjadi 400. Perubahan pada nilai PROCESSES akan menaikkan nilai SESSIONS sekitar 10-13% dari nilai PROCESSES.

No comments: