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

mengenai case yang terjadi di oracle database yang mengakibatkan kejadian oracle database blocking pada session database

Oracle Database Blocking - Database SQL. Untuk permasalahan oracle database blocking kali ini, kita akan membahas mengenai case yang terjadi di oracle database yang mengakibatkan kejadian oracle database blocking pada session database sehingga menyebabkan sebuah error database.


Pada bahasan kali point-point yang akan kita dapatkan pada pembelajaran blocking session oracle database yaitu :

1  Study Case Skenario 5



Oracle Database Blocking: Menemukan Session Blocking dan Menghapus Session Block

#1. Study Case Skenario 5 

Kita melakukan DDL yang (entah bagaimana mengubah objek) dan kita mendapatkan error ORA-00054.

Kita telah mencoba membatalkan session waiting dalam contoh di atas (anda bisa kembali membaca Menemukan Session Blocking dan Menghapus Session Block dengan Skenario 3) dan pada case kita sekarang yaitu sedang membuat indeks pada table:

SQL> create index ind2 on map1(col2);

create index ind2 on map1(col2)

 *

ERROR at line 1:

ORA-00054: resource busy and acquire with NOWAIT specified

Jika saya kembali menjalankan query dari skenario sebelumnya maka baris nya tidak akan kembali lagi, karena tidak ada sesi menunggu / waiting session (saya membatalkan update tunggu).
Pertama kita perlu mengetahui ID objek:

SQL> select object_id from dba_objects

 2  where owner=' DIKAU '

 3  and object_name='MAP1';



 OBJECT_ID

----------

 52255

Sekarang mari kita lihat siapa yang menghalangi objek 52255

SELECT c.owner,

 c.object_name,

 c.object_type,

 b.sid,

 b.serial#,

 b.status,

 b.osuser,

 b.machine

FROM v$locked_object a, v$session b, dba_objects c

WHERE b.sid = a.session_id AND a.object_id = c.object_id

and a.object_id=52255;

OWNER    OBJECT_NAME   OBJECT_TYPE                SID    SERIAL# STATUS   OSUSER  MACHINE

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

DIKAU  MAP1          TABLE                      144      38973 ACTIVE   oracle  rh4_node1.fades 

#2.  Menemukan session yang memblokir dan melakukan kill session yang memblokir dengan Skenario 5

Menemukan session yang memblokir: Menggunakan v $ sesi: 
SELECT

   s.blocking_session,

   s.sid,

   s.serial#

   s.seconds_in_wait

FROM

   v$session s

WHERE

   blocking_session IS NOT NULL

Menggunakan v$lock:
select * from v$lock where block=1;select count(*) from gv$lock where block=1;select sid from v$lock where block=1;

#3. Menemukan Session yang menghalangi?

Berikut ini query di oracle database yang bisa kita gunakan untuk menemukan session yang menghalangi / session blocking :

select

(select username from v$session where sid=a.sid) blocker,

a.sid,' is blocking ',(select username from v$session where sid=b.sid) blockee,b

.sid

from v$lock a, v$lock b

where a.block = 1

and b.request > 0

and a.id1 = b.id1

and a.id2 = b.id2;
Finding the query of the sessions:men
SELECT a.sql_text, b.sql_hash_value

FROM   v$sqltext a,

       v$session b

WHERE  a.address = b.sql_address

AND    a.hash_value = b.sql_hash_value

AND    b.sid = &1

ORDER BY a.piece;

#4. Rincian Lengkap dari Sessing Blocking Oracle Database

Rincian lengkap dari session blocking :

select distinct

a.sid "waiting sid"

, d.sql_text "waiting SQL"

, a.ROW_WAIT_OBJ# "locked object"

, a.BLOCKING_SESSION "blocking sid"

, c.sql_text "SQL from blocking session"

from v$session a, v$active_session_history b, v$sql c, v$sql d

where a.event='enq: TX - row lock contention'

and a.sql_id=d.sql_id

and a.blocking_session=b.session_id

and c.sql_id=b.sql_id

and b.CURRENT_OBJ#=a.ROW_WAIT_OBJ#

and b.CURRENT_FILE#= a.ROW_WAIT_FILE#

and b.CURRENT_BLOCK#= a.ROW_WAIT_BLOCK#

Selanjutnya adalah menemukan process id dari SID di linux:
select spid

from  v$process

where background is null

and     addr in (select paddr

                        from   v$session

                        where  sid=&session_id);

Menemukan SID dari SPID: (Tidak terlalu banyak diperlukan di sini)
select s.username, s.status,  s.sid,     s.serial#,

        p.spid,     s.machine, s.process, s.lockwait

 from   v$session s, v$process p

 where  s.process  = '&unix_pid'

 and    s.paddr    = p.addr;

#5. Mengambil Persetujuan dengan Tim Aplikasi / Development

Session Blocking pada Oracle Database harus di release dengan mengambil persetujuan dengan tim aplikasi:

Cara me-release blocking session:

Mendapatkan rincian SID:

select sid,SERIAL#,status,username from v$session where sid=<Blocking Session>;

select SID,MACHINE,TERMINAL,PROGRAM,MODULE from v$session where sid=<Blocking Session>;

Disconnecting the Session:

alter system disconnect session '<SID>,<Serial#>' IMMEDIATE;

Kill the Server Process:

kill -9 <Unix Process Id from SID>

Tindakan perbaikan:

Untuk blocking session pada oracle database hanya dua tindakan korektif:
     1. Release blocking session
     2. Tunggu hingga session pada oracle database selesai melakukan process

Aksi Pencegahan:
Aplikasi harus dirancang / diperbaiki karena tidak ada dua atau lebih session diperlukan dari data yang sama pada waktu yang sama untuk dilakukan modifikasi.

Terima kasih anda telah membaca mengenai oracle database blocking. Temukan cara pemecahan oracle database blocking lainnya di blog database sql, tepatnya para pembaca database sql dapat langsung mengeceknya di sini.

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 4
Oracle Database Blocking: Menemukan Session Blocking dan Menghapus Session Block dengan Skenario 4
mengenai case yang terjadi di oracle database yang mengakibatkan kejadian oracle database blocking pada session database
http://2.bp.blogspot.com/-nH2u0rVQAcQ/VoldYhbk3tI/AAAAAAAAAT4/Ps-qzxgsXMg/s400/oracle-database-sql-blocking_1_opt.jpg
http://2.bp.blogspot.com/-nH2u0rVQAcQ/VoldYhbk3tI/AAAAAAAAAT4/Ps-qzxgsXMg/s72-c/oracle-database-sql-blocking_1_opt.jpg
Database SQL
https://www.databasesql.net/2016/01/Oracle-Database-Blocking-Session-Blocking-dan-Menghapus-Session-Block_10.html
https://www.databasesql.net/
https://www.databasesql.net/
https://www.databasesql.net/2016/01/Oracle-Database-Blocking-Session-Blocking-dan-Menghapus-Session-Block_10.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