• Single Node Sistemde Bulunan DB Locklarını İzlemek için güzel bir script
select l.sess, 
s.inst_id||'_'||trim(NVL(s.CLIENT_INFO, s.USERNAME)||'_'||s.ACTION ||'_'||s.MODULE ||'_'||s.USERNAME)  
"USER",
--o.object_name,
s.status, s.inst_id,s.sid,s.serial# ,w.event, round(w.seconds_in_wait/60,2) minutes_in_wait ,
case when l.block>0 and w.event not in ('enqueue')then 'kill -9 '||p.spid else null end kill_os,
case when l.block>0 and w.event not in ('enqueue')then 'ALTER SYSTEM KILL SESSION '''||s.sid||','
||s.serial#||''';' else null end kill_sid,
'begin sys.dbms_system.set_sql_trace_in_session('||s.sid||',' ||s.serial#||',TRUE); end;' start_trace,
'begin sys.dbms_system.set_sql_trace_in_session('||s.sid||',' ||s.serial#||',FALSE); end;' stop_trace,
s.osuser,s.machine,s.last_call_et
  from (SELECT DECODE(l.request,0,'Holder: ','      Waiter: ') sess,
       l.*
 FROM v$lock l 
 WHERE (l.id1, l.id2, l.type) IN
   (SELECT id1, id2, type FROM V$LOCK WHERE request>0)
    ORDER BY l.id1, l.request) l
  join gv$session s on l.sid=s.sid --and s.inst_id=l.inst_id
--  left outer join dba_objects o on o.object_id=l.id1
  left outer join gv$session_wait w  ON w.sid=s.sid and w.INST_ID=s.INST_ID  
  left outer join gv$process p ON p.addr=s.paddr  AND p.inst_id=s.inst_id;
  • Cluster(RAC) Sistemlerde Bulunan DB Locklarını takip etmek
select l.sess, 
s.inst_id||'_'||trim(NVL(s.CLIENT_INFO, s.USERNAME)||'_'||s.ACTION ||'_'||s.MODULE ||'_'||s.USERNAME)  
"USER",
--o.object_name,
s.status, s.inst_id,s.sid,s.serial# ,w.event, round(w.seconds_in_wait/60,2) minutes_in_wait ,
case when l.block>0 and w.event not in ('enqueue')then 'kill -9 '||p.spid else null end kill_os,
case when l.block>0 and w.event not in ('enqueue')then 'ALTER SYSTEM KILL SESSION '''||s.sid||','
||s.serial#||''';' else null end kill_sid,
'begin sys.dbms_system.set_sql_trace_in_session('||s.sid||',' ||s.serial#||',TRUE); end;' start_trace,
'begin sys.dbms_system.set_sql_trace_in_session('||s.sid||',' ||s.serial#||',FALSE); end;' stop_trace,
s.osuser,s.machine,s.last_call_et
  from (SELECT DECODE(l.request,0,'Holder: ','      Waiter: ') sess,
       l.*
 FROM GV$LOCK l 
 WHERE (l.id1, l.id2, l.type) IN
   (SELECT id1, id2, type FROM gV$LOCK WHERE request>0)
    ORDER BY l.id1, l.request)
  l
  join gv$session s on l.sid=s.sid and s.inst_id=l.inst_id
--  left outer join dba_objects o on o.object_id=l.id1
  left outer join gv$session_wait w  ON w.sid=s.sid and w.INST_ID=s.INST_ID  
  left outer join gv$process p ON p.addr=s.paddr  AND p.inst_id=s.inst_id;
  • Sistemde Locklanmış objeleri bulmak için güzel bir script
SELECT a.object_name, a.object_type, a.status, b.locked_mode L_M, b.oracle_username USERNAME, 
b.session_id SID, b.process PID, 'ALTER SYSTEM KILL SESSION '''||s.sid||','||s.serial#||''';' 
kill_statement
FROM DBA_OBJECTS A, V$LOCKED_OBJECT B, v$session s
WHERE a.object_id = b.object_id
AND b.session_id=s.sid;

---İstenirse aşağıdaki script ile bekleyen ve bekleten kullanıcılarda bulunabilir.
SELECT lo.oracle_username dbuser,lo.os_user_name os_user--,'ALTER SYSTEM KILL SESSION '''
||s1.sid||','||s1.serial#||''';' kill_statement
  FROM DBA_OBJECTS o, V$LOCKED_OBJECT lo, dba_waiters w, v$session s2--, v$session s1
 WHERE o.object_id = lo.object_id
   AND lo.session_id = w.holding_session
   AND w.waiting_session = s2.sid;
  • Sistemde Locklanmış DDL paketlerini bulmak için ……
SELECT * FROM DBA_DDL_LOCKS WHERE name ='PACKAGE_NAME/PROCEDURE_NAME';
  • Tablespace bazında veritabanının doluluk oranlarını görme
set pagesize 500
set linesize 130
col "TOPLAM(MB)" format 99,999,999.999
col "DOLU(MB)"   format 99,999,999.999
col "BOS(MB)"    format 99,999,999.999 
col "ORAN %"     format 999.99
SELECT d.status "DURUMU",
       d.tablespace_name "ADI", 
       d.CONTENTS "TIPI",
       NVL(a.BYTES /1024/1024,0) "TOPLAM(MB)",
       NVL(a.BYTES - NVL(f.BYTES,0),0)/1024/1024 "DOLU(MB)",
       NVL(f.BYTES,0)/1024/1024 "BOS(MB)",
       NVL((a.BYTES - NVL(f.BYTES,0))/a.BYTES * 100,0)  "ORAN %",
       a.NOTO, a.OTO
  FROM SYS.dba_tablespaces d,
       (SELECT   tablespace_name, SUM(BYTES) BYTES,
                 count(decode(autoextensible,'NO',0)) NOTO,
                 count(decode(autoextensible,'YES',0)) OTO
            FROM dba_data_files
          GROUP BY tablespace_name) a,
       (SELECT   tablespace_name, SUM(BYTES) BYTES
            FROM dba_free_space
        GROUP BY tablespace_name) f
 WHERE d.tablespace_name = a.tablespace_name(+)
   AND d.tablespace_name = f.tablespace_name(+)
   AND NOT (d.extent_management LIKE 'LOCAL' AND d.CONTENTS LIKE 'TEMPORARY')  
UNION ALL
SELECT d.status "DURUMU",
       d.tablespace_name "ADI",
       d.CONTENTS "TIPI",
       NVL(a.BYTES /1024/1024,0) "TOPLAM(MB)",
       NVL(t.BYTES,0)/1024/1024  "DOLU(MB)",
       NVL(a.BYTES - NVL(t.BYTES,0),0)/1024/1024 "BOS(MB)",
       NVL(t.BYTES/a.BYTES * 100,0) "ORAN %",
       a.NOTO, a.OTO
  FROM SYS.dba_tablespaces d,
       (SELECT   tablespace_name, SUM(BYTES) BYTES,
                 count(decode(autoextensible,'NO',0)) NOTO,
                 count(decode(autoextensible,'YES',0)) OTO
            FROM dba_temp_files
        GROUP BY tablespace_name) a,
       (SELECT   tablespace_name, SUM(bytes_cached) BYTES
            FROM v$temp_extent_pool
        GROUP BY tablespace_name) t
 WHERE d.tablespace_name = a.tablespace_name(+)
   AND d.tablespace_name = t.tablespace_name(+)
   AND d.extent_management LIKE 'LOCAL'
   AND d.CONTENTS LIKE 'TEMPORARY'
   order by 8 desc;

			

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s

%d blogcu bunu beğendi: