Diposting kali ini, saya akan membagikan cara mengatasi session limit user, jika ada user mengalami session limit dikarenakan ada batasan untuk login database atau karenakan koneksi tidak stabil sehingga harus berapa kali untuk reconnect, standarnya user dapat login ke database hanya dua kali, untuk memastikan kita cek PROFILE USER limit loginnya berapa kali langkah pertama kita cek profile kita masuk ke mana seperti step 1 berikut :
SELECT PROFILE FROM DBA_USERS WHERE USERNAME = 'USERNAME_DB';
USERNAME_DB di sesuaikan dengan user yang temen-teman gunakan, akan tetapi jika ingin melihat all user WHERE USERNAME = ‘USERNAME_DB’ dihilangkan
Yang saya tampilkan ini, hanya melihat user profile yang saya gunakan
Terlihat hasil eksekusi bahwa user yang saya cek masuk ke PROFILE : NONAPPS_PROFILE, selanjutnya kita akan mengecek berapa limit user login untuk profle : NONAPPS_PROFILE
SELECT PROFILE, LIMIT FROM DBA_PROFILES WHERE RESOURCE_NAME = 'SESSIONS_PER_USER'
Terlihat bahwa profile NONAPPS_PROFILE hanya memiliki session limit user 2 kali.
Selanjutnya apakah kita akan melakukan KILL SESSION USER atau penambahkan LIMIT PROFILEnya. Di sini saya akan mencoba melakukan KILL SESSION USER dan penambahkan LIMIT PROFILE NONAPPS_PROFILE
Untuk penambahkan LIMIT PROFILE tambahkan script berikut :
ALTER PROFILE (profile_name) LIMIT SESSIONS_PER_USER (number);
Contoh : kita merubah profile name dan number sesuai kebutuhan, number di sini adalah jumlah session limit yang akan di tambahkan pada profile tersebut, sedangkan profile name adalah profile yang akan kita rubah limit sessionnya. di sini profile name yang saya gunakan adalah NONAPPS_PROFILE dengan menambahkan limit session user 5.
ALTER PROFILE NONAPPS_PROFILE LIMIT SESSIONS_PER_USER 5;
Jika ingin LIMIT SESSION UNLIMITED tambahkan script berikut :
ALTER PROFILE (profile name) LIMIT SESSIONS_PER_USER UNLIMITED;
Contoh : Di sini saya kan membuat profile name NONAPPS_PROFILE limit session usernya Unlimited
ALTER PROFILE NONAPPS_PROFILE LIMIT SESSIONS_PER_USER UNLIMITED;
Sedangkan untuk melakukan KILL SESSION USER bisa gunakan script berikut :
BEGIN FOR r IN (select sid,serial# from v$session where username='user') LOOP EXECUTE IMMEDIATE 'alter system kill session ''' || r.sid || ',' || r.serial# || ''' immediate'; END LOOP; END;
User di ganti dengan nama user yang akan di lakukan KILL SESSION USER, di sini user yang akan di kill session nya adalah ACEPSOPIAN,Script di atas akan melakukan kill session user atas nama ACEPSOPIAN, Contohnya sebagai berikut :
BEGIN FOR r IN (select sid,serial# from v$session where username='ACEPSOPIAN') LOOP EXECUTE IMMEDIATE 'alter system kill session ''' || r.sid || ',' || r.serial# || ''' immediate'; END LOOP; END;
Sekian tutorial kali ini Happy codding 🙂