Sunday, September 9, 2018

How to look session and kill session in oracle database

Halo sobat Nostra,

Kali ini saya akan membahas bagaimana cara melihat session dan kill session tersebut pada oracle database.

Ini pengalaman saya ketika mengerjakan project Jiwasraya, saya tidak bisa alter table dan selalu error. Error nya seperti gambar di bawah ini









Nah ternyata error tersebut dikarenakan table itu di lock.
Bergumul dengan error  dan bertanya tanya dalam hati, kenapa table itu di lock ya? (xixixi cie yang bergumul :D)
Setelah di telusuri lebih jauh, ternyata table tersebut di lock karena transaksi pada table berjalan lama serta banyak aplikasi yang menggunakan table tersebut dan melakukan transaksi secara bersamaan.
Kebetulan pada saat kasus ini, applikasi sedang di test oleh user IT Jiwasraya, dan table yang ingin saya alter adalah salah satu table yang memiliki data yang sangat banyak yang membutuhkan waktu lebih lama dari biasanya jika kita melakukan select table.
Table di lock bisa juga dikarenakan ketika kita melakukan perubahan pada table namun kita lupa commit dan log off dari sistem.

Cara yang saya lakukan agar table tersebut tidak lock, adalah melihat session dan kill session pada table tersbut dengan cara menggunakan SQL command seperti :

SELECT
    O.OBJECT_NAME,
    S.SID,
    S.SERIAL#,
    S.PROGRAM,
    SQ.SQL_FULLTEXT,
    S.LOGON_TIME
FROM
    V$LOCKED_OBJECT L,
    DBA_OBJECTS O,
    V$SESSION S,
    V$SQL SQ
WHERE
    L.OBJECT_ID = O.OBJECT_ID
    AND L.SESSION_ID = S.SID
    AND S.SQL_ADDRESS = SQ.ADDRESS;

Untuk melihat table yang di lock dapat menggunakan view V$Locked_Object, dan nama table yang di lock tersebut ada pada view DBA_Object.
Untuk menemukan session blocked nya, kita bisa join dengan view V$Session

dan untuk kill session bisa dengan command berikut :


alter system kill session 'SID,SERIAL#';

Kita harus berhati-hati dalam menghapus session dalam database. Jangan sampai salah menghapus session table.
Ada baiknya jika kita ingin kill session pada suatu table harus konsultasi terlebih dahulu dengan tim.

Sekian dari saya tentang bagaimana cara melihat session dan kill session pada oracle database

Terima kasih,

No comments:

Post a Comment