Oracle masasının kilitli olup olmadığını nasıl belirleyebilirim?


22

BI yazılımını ve Oracle Enterprise 11gR2'ye yüklenmiş bir depo veritabanını kullanıyoruz.

Bu toplu iş raporlarının bazıları hala kilitli olabilecek bir veritabanı tablosuna erişmeye çalışacaktır. Oracle masasının kilitli olup olmadığını nasıl öğrenebilirim? Analiz için geçmiş ayrıntıları gibi görüntülenen herhangi bir SQL deyimi var mı?


Yani, belirli zaman aralıklarında bazı şeyleri görüntülemek istiyorum.
Selahattin

Örneğin: Tüm kilitli masaları daha fazla analiz için 02: 00-19: 00 saatleri arasında listelemek istiyorum.
Selahattin

Genelde kehanette kilitli masalar bulmak ister miyim?
Selahattin

1
@Selahattin Bir uygulama seviyesi kilidinden mi bahsediyorsunuz? Oracle, serileştirme seviyesi ve tasarımı nedeniyle genellikle masa kilitleme yapmaz
Philᵀᴹ

Yanıtlar:


32

Aşağıdaki sorgu tüm kilitlerin detaylarını verir.

SELECT B.Owner, B.Object_Name, A.Oracle_Username, A.OS_User_Name  
FROM V$Locked_Object A, All_Objects B
WHERE A.Object_ID = B.Object_ID

10

Aşağıdaki komut dosyası, Oracle sisteminizdeki tüm kilit nesnelerini hızlı bir şekilde tanımlamak için kullanılabilir.

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;

Referans: Burleson Danışmanlık tarafından -Oracle İpuçları http://www.dba-oracle.com/t_find_oracle_locked_objects.htm


2

Şu anda kilitli olan nesneleri V $ LOCKED_OBJECT öğesinden sorgulayabilirsiniz .

Ancak, kilitlerin geçmişi yoktur, tüm kilitlerin kaydedilmesi büyük performans sağlar ve depolanacak çok fazla veriyi sağlar.

Veritabanına en yakın olan Aktif Oturum geçmişi V $ ACTIVE_SESSION_HISTORY , DBA_HIST_ACTIVE_SESS_HISTORY (eğer uygun lisansa sahipseniz) engelleme oturumlarını, ifadeleri ve diğer bilgileri görüntüleyebileceğiniz ancak kilitli tabloları görüntüleyemediğinizdir. Aksi takdirde, uygun görünümleri sorgulamayı deneyebilir ve gerekli verileri kendi özel komut dosyanızla kaydedebilirsiniz.


2

Aşağıdaki sorguyu kullanarak masada kilitleri bulabilirsiniz.

column oracle_username format a15;
column os_user_name format a15;
column object_name format a37;
column object_type format a37;
select a.session_id,a.oracle_username, a.os_user_name, b.owner "OBJECT OWNER", b.object_name,b.object_type,a.locked_mode from 
(select object_id, SESSION_ID, ORACLE_USERNAME, OS_USER_NAME, LOCKED_MODE from v$locked_object) a, 
(select object_id, owner, object_name,object_type from dba_objects) b
where a.object_id=b.object_id;

Kilitleme kilitleri


0

Kilitli nesneye kilidi açmak istiyorsanız, ilgili oturumu kapatın.

-- Query to Get List of all locked objects
SELECT B.Owner, B.Object_Name, A.Oracle_Username, A.OS_User_Name  
FROM V$Locked_Object A, All_Objects B
WHERE A.Object_ID = B.Object_ID ; 
-- and A.OS_USER_NAME = 'mahendar' 

-- Query to Get List of locked sessions        
select SID,SERIAL#,INST_ID from gv$session a  where schemaname = 'SYSTEM';
-- and osuser =  'mahendar';
-- o/p: 314 26513   1

-- Statement to Kill the session [pass values in the same order and append @ for inst_id]
alter system kill session '314,26513,@1';

0

Masa kilidini kontrol edebilir v$lockve dba_objectsgörüntüleyebilirsiniz. Aşağıdaki sorgu size kilit detaylarını verecektir.

select a.sid||'|'|| a.serial#||'|'|| a.process
from v$session a, v$locked_object b, dba_objects c
where b.object_id = c.object_id
and a.sid = b.session_id
and OBJECT_NAME=upper('&TABLE_NAME');

2.SIZIM:

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;

Size daha fazla ayrıntı verecek aşağıdaki sorguyu kullanabilirsiniz. Masa kilidi

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.