Oracle Database Blocking: Menemukan Session Blocking dan Menghapus Session Block dengan Skenario 2

view seperti, DBA_BLOCKERS dan V$_LOCK dipergunakan supaya kita dapat dengan mudah untuk menemukan blocking session

Oracle Database Blocking: session blocking dan menghapus session block dengan Skenario 2Database SQL. Pada oracle database memberikan view seperti, DBA_BLOCKERS dan V$_LOCK dipergunakan supaya kita dapat dengan mudah untuk menemukan blocking session. Di sini, kita akan mencoba untuk menemukan blocking session oracle database dengan menggunakan view V$_LOCK yang lebih cepat untuk query dan membuatnya mudah untuk mengidentifikasi session blocking.


Langkah-langkah yang perlu kita lakukan untuk mengatasi oracle database blocking session kali ini :










#1. Menggunakan view V$_LOCK untuk mengidentifikasi Session Blocking pada oracle database

SQL> select * from v$lock ;



ADDR     KADDR           SID TY        ID1        ID2      LMODE    REQUEST    CTIME      BLOCK

-------- -------- ---------- -- ---------- ---------- ---------- ---------- ---------- -------------------------------------

AF8E2C4C AF9E2C50      419 TX     141028      15289      0              6                    675          0

ADDF7EC8 ADDF8EE0    542 TM    77529          0            3              0                    687          0

ADDF7F74 ADDF7F8C     419 TM    77529          0            3              0                    675          0

ADEBEA20 ADEBEB4C   542 TX     141028     152899     6             0                    687          1

Di sini kita tertarik pada kolom BLOCK. Jika session melakukan blocking pada key yang menghalangi session lain, maka BLOCK = 1. Selanjutnya, Anda bisa membedakan mana session yang terkena blocking dengan membandingkan nilai-nilai dalam ID1 dan ID2. Sesi yang diblokir ini akan memiliki nilai yang sama di ID1 dan ID2 sebagaimana seperti session yang memblokir, dan, karena itu permintaan terhadap keyword itu tidak bisa diberikan, hal itu akan memiliki nilai REQUEST >  0.

Dalam pertanyaan di atas, kita dapat melihat bahwa SID 542 menghalangi SID 419. SID 542 sesuai dengan session 1 dalam contoh kita, dan SID 419 adalah session yang diblokir. Untuk menghindari table view dan lintas-bandingkan ID1 dan ID2 ini , dengan menempatkannya dalam query oracle database:


#2.  Query pada oracle database untuk menemukan session blocking dengan menggunakan v$_lock

Query untuk menemukan session blocking dengan menggunakan v$_lock adalah sebagai berikut:

SQL> select l1.inst_id,l1.sid, ' IS BLOCKING ', l2.sid,l1.type,l2.type,l1.lmode,l2.lmode,l2.inst_id
from gv$lock l1, gv$lock l2
where l1.block =1 and l2.request > 0
and l1.id1=l2.id1
and l1.id2=l2.id2;

Mendapatkan Informasi lengkap mengenai pemblokiran key :


SQL> SELECT 'Instance '||s1.INST_ID||' '|| s1.username || '@' || s1.machine
   || ' ( SID=' || s1.sid || ','|| s1.serial#||s1.status||  '  )  is blocking '
   || s2.username || '@' || s2.machine || ' ( SID=' || s2.sid || ' ) ' ||s2.sql_id
    FROM gv$lock l1, gv$session s1, gv$lock l2, gv$session s2
   WHERE s1.sid=l1.sid AND
    s1.inst_id=l1.inst_id AND
    s2.sid=l2.sid AND
    s2.inst_id=l2.inst_id AND
    l1.BLOCK=1 AND
   l2.request > 0 AND
   l1.id1 = l2.id1 AND
   l2.id2 = l2.id2 ;


#3. Menemukan Session Blocked dengan v$_session pada Oracle Database

Menemukan session blocked dengan v$_session :
set lines 1234 pages 9999
col inst_id for a10
col serial# for a10
col machine for a30
col username for a10
col event for a20
col blocking_session for 999999
col blocking_instance for 999999
col status for a10
col INST_ID for 9999
col SERIAL# for 999999

SQL> select inst_id,sid,serial#, machine, username, event, blocking_session, blocking_instance, status, sql_id from gv$session where status ='ACTIVE'and username is not null;


#4.  Menemukan SQL_ID dari SID Menggunakan v$_Session pada Oracle Database

Menemukan SQL_ID dari SID menggunakan v$_session :
SQL> select sql_id from v$session where sid=4120;

SQL_ID
-------------


SQL> select sql_fulltext from v$sql where sql_id ='xxxxx';


#5. Menghilangkan / Menghapus Oracle Session di Oracle Database anda

Berhati-hatilah ketika mengidentifikasi session untuk di kill. Jika Anda menghapus session milik background proses Anda akan menyebabkan sebagai contoh yaitu terjadinya kecelakaan dalam process oracle database.

Ada sejumlah cara untuk menghapus session blocking kedua dari Oracle database sql secara cepat dan dapat dilakukan dari eksternal.

Mengidentifikasi session yang akan di kill :
ALTER SYSTEM KILL SESSION
ALTER SYSTEM DISCONNECT SESSION
The Windows Approach
The UNIX Approach

SQL> ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE;

Perintah ini tidak mempengaruhi pekerjaan yang dilakukan oleh perintah lainnya, tapi akan balik melakukan kontrol kembali ke sesi yang terjadi saat ini langsung, daripada menunggu konfirmasi dari kill. Jadi dengan perintah ini kita melakukan kill segera tanpa perlu konfirmasi.

Pada oracle database, dalam lingkungan RAC, merupakan pilihan anda dalam menentukan INST_ID, yang ditunjukkan saat query tampilan GV$_SESSION. Hal ini memungkinkan Anda untuk melakukan kill session pada RAC node yang berbeda.

SQL> ALTER SYSTEM KILL SESSION 'sid,serial#,@inst_id';

SQL> ALTER SYSTEM DISCONNECT SESSION 'SID,SERIAL#' IMMEDIATE;

Perintah DISCONNECT SESSION melakukan kill proses dedicated server, yang setara dengan kill proses server dari sistem operasi 

kill -9 spid

#6. Mengidentifikasi Oracle Database pada Object Yang Diblokir

Untuk mengidentifikasi objek yang diblokir
Lihat v$_lock yang sudah kita digunakan di query di atas memperlihatkan informasi bahkan lebih. Ada jenis kunci yang berbeda

Jika Anda menemukan kunci TM adalah berarti dua sesi mencoba untuk memodifikasi beberapa data tapi menghalangi satu sama lain atau bisa dikatakan saling mengunci atau deadlock. Kecuali satu sesi selesai (commit atau rollback), Anda tidak harus menunggu selamanya.

Query berikut menunjukkan semua kunci TM:

SELECT sid, id1 FROM v$lock WHERE TYPE='TM'
SID              ID1
92               20127
51               20127

ID yang Anda dapatkan dari query ini mengacu pada objek oracle database sebenarnya yang dapat membantu Anda untuk mengidentifikasi masalah, melihat permintaan berikutnya:

SELECT object_name FROM dba_objects WHERE object_id=20127

Pertanyaan ini akan membantu Anda untuk mengidentifikasi penyebab blocking session pada oracle database Anda!

Database SQL

COMMENTS

Name

Database Administrator Database Tips Design Database Error Oracle Database Ilmu Database MySQL News Oracle Oracle Database Oracle Tips Top Database Tutorial Database Tutorial HTML Tutorial Javascript Tutorial Mobile Apps Tutorial PHP Tutorial SQL Tutorial Web Tutorial Web Development
false
ltr
item
Database SQL: Oracle Database Blocking: Menemukan Session Blocking dan Menghapus Session Block dengan Skenario 2
Oracle Database Blocking: Menemukan Session Blocking dan Menghapus Session Block dengan Skenario 2
view seperti, DBA_BLOCKERS dan V$_LOCK dipergunakan supaya kita dapat dengan mudah untuk menemukan blocking session
http://3.bp.blogspot.com/-gTqS27jLuGU/VhoHKabPWxI/AAAAAAAAAMs/xfuZYly4G9s/s400/oracle-patch_opt.jpg
http://3.bp.blogspot.com/-gTqS27jLuGU/VhoHKabPWxI/AAAAAAAAAMs/xfuZYly4G9s/s72-c/oracle-patch_opt.jpg
Database SQL
https://www.databasesql.net/2016/01/Oracle-Database-Blocking-Skenario-2.html
https://www.databasesql.net/
https://www.databasesql.net/
https://www.databasesql.net/2016/01/Oracle-Database-Blocking-Skenario-2.html
true
8766756895649502082
UTF-8
Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS CONTENT IS PREMIUM Please share to unlock Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy