29 Temmuz 2009 Çarşamba

DBA SQL - 2

/* ### session toplam ve aktif izleme #####
/* ### oracle ait sessionlar secilmemistir (tipi background olmayanlar)
/* ### sistem uzerinde log on olan toplam kullanıcı ve o an aktif olanlari gosterir
/* ### bu sql, oracle 10g rac sisteminde 2 makina olarak var olan bir sistem icindir.

select count(*) TOPLAM,
(select count(*) from gv$session where inst_id=1 and type != 'BACKGROUND' ) TOPLAMN1,
(select count(*) from gv$session where status = 'ACTIVE' and inst_id=1 and type != 'BACKGROUND' ) AKTIFN1,
(select count(*) from gv$session where inst_id=2 and type != 'BACKGROUND') TOPLAMN2,
(select count(*) from gv$session where status = 'ACTIVE' and inst_id=2 and type != 'BACKGROUND') AKTIFN2
from gv$session group by 1,2,3;
/* ### instance bazinda calisan ACTIVE sql toplamlari ###
/* ### sql cumleciklerinin ilk 70 karakterini ve ayni SQL'lerden 3'den fazla olanlari gosterir
/* ### gv$session tablosu RAC sisteminin tumunu kapsar.

SELECT SUBSTR (sql_text, 1, 70) SQL, COUNT (1) adet, s.inst_id INSTANCE, SYSDATE tarih
FROM gv$session s, gv$sql t
WHERE s.sql_hash_value = t.hash_value
AND sql_hash_value <> 0
AND status = 'ACTIVE'
GROUP BY SUBSTR (sql_text, 1, 70), s.inst_id
HAVING COUNT (1) > 3
ORDER BY adet DESC /* ### sistemde tablolara FULL ACCESS erisim yapan sql'leri ve onu kullananlarinin listesini verir.
/* ### object_owner'da XXXXX ile tablolari yaratan schema name kullanilacaktir.

select sql_text,p.operation,p.options,p.object_name,e.machine,e.username,e.status,s.sql_id,event,sid
from v$sql_plan p , v$sqlarea s , v$session e
where operation='TABLE ACCESS' and options='FULL' and object_owner='XXXXXXXX'
and p.plan_hash_value=s.plan_hash_value
and e.sql_id=s.SQL_Id
order by p.address /* ### sistemde o an calisan ACTIVE SQL'lerin listesi */

select e.sql_id, e.sid, s.sql_text
from v$sqlarea s , v$session e
where s.sql_id = e.sql_id and e.status='ACTIVE' and e.type !='BACKGROUND'
order by 1 /* ### sistemde bugunden 2 gun once logon olmus ve hala ACTIVE olan sessionlarin listesi *
/* ### birsekilde sistemden normal sekilde cikmamis ve sistemde takili kalmis sessionlari bulup ve kill etmek icin kullanilir.
/* ### KILL etmeden once session gercekten aktif olup olmadigini kontrol ediniz !

select s.* from v$session s, v$process p
where s.schemaname='ESASLIVE' and s.status='ACTIVE'
and s.paddr=p.addr
and logon_time/* ### istenilen sessionlari UNIX uzerinden silmek icin isletim sistemindeki PID numarasi ile bulup kill -9 ile dusurmek icin
/* ### v$sql.sql_id='XXXXXXXXXXX' sql_id bilinen durumlar icindir.
/* ### v$session.sid=XXXX session SID biliniyorsa yukaridaki deger yerine kullanilir.

select 'kill -9 '||spid from v$process where addr in
(
select paddr from v$session, v$sql
where v$session.sql_id = v$sql.sql_id
and v$session.status='ACTIVE'
and v$sql.sql_id='79wkdjjz4p693'
and type != 'BACKGROUND'
) ; /* ### istenilen sessionlari ORACLE uzerinden silmek icin SID ve SERIAL# degerlerini alarak ALTER SYSTEM KILL SESSION komutu ile dusurmek icin örnekler...
/* ### bu sql calistirildiktan sonra listenen SQL'leri tekrar secip calistirmak gerekmektedir.

select 'alter system kill session '||''''||SID||','||SERIAL#||''''||';' from v$session
where sql_id='1z6rfm3gfbzmv' -- bu sql_id sahip olan sessionlarin hepsini secer

select 'alter system kill session '||''''||SID||','||SERIAL#||''''||' IMMEDIATE;' from v$session where schemaname='XXXXXX' and status='INACTIVE' order by logon_time desc; -- XXXXX schema kullanan, durumu INACTIVE olan ve baglanti zamani eski olan sessionlari listeler. daha sonra bu sessionlari toplu olarak sistemden dusurebilirsiniz. /* ### hash value sunu bildigin sql in çalışan gercek execution planı
/* ### zaman zaman sql'lerin execution planlari farkliliklar gosterebilir.

select distinct id, parent_id, lpad (' ', depth) || operation operation,options, object_name, cost
from v$sql_plan
where hash_value = 1752547357
order by id; /* ### RAC sistemlerinde makinalarda o anda hangi islemlerin oldugunun listesini almak icindir.
/* ### EVENT'lerin sayisina gore buyukten kucuge dogru sirali olarak listelenmistir.

select inst_id,SCHEMANAME,event,count(*)
from gv$session
group by inst_id,SCHEMANAME,event
order by 4 desc

Hiç yorum yok:

Yorum Gönder