Birkaç gündür akşamları kendime ayırmış harıl harıl kitap okumakla meşguldüm.  3 kitabı nerdeyse bir solukta okudum diyebilirim. 

Önce Ruh döveni ardından Silah Kardeşliği ve son olarak da Huma Destanı’nı okudum, Margret Weis ablamızı sevsem de içlerinde en sürükleyici olan Richard Knaak’ın yazdığı Huma destanıydı. Bir şey dikkatimi çekti belki karakterlerle de alakalı olabilir ama Margret’in kitapları akıl oyunlarıyla doluyken, Richard’ın yazdıkları daha çok aksiyon içeriyor.

Bana kalırsa pek çek yerde tarif edildiği gibi başlanmamalı bu seriye. okuduğumkadarıyla bence Önce Huma Destanı, Ruh döveni, Silah Kardeşliği, ve ejderha mızrağı serisiyle başlamak daha doğru. itiraf ediyorum, kitapları bitirdiğimde :) parmaklarımdaki tırnaklar bir hayli küçülmüştü.

fırsat bulursanız okuyun.

 

Elimde uzun süredir Tamamlanamamış Materialized view’lerin otomatik yenilenmesi için dbms_job’lar mevcut.  bu joblar çalıştığında bağlantı problemi yaşanırsa, takılıp kalıyor. Session’u Kill etmeye çalışsam da Killed pozisyonda duruyor. MAterialized viewler lock’lu kaldığı için de yeniden oluşturamıyorum.

Öncelikle Sistemdeki jobları ve bunların hangi görevi gerçekleştirdiğini bulalım.

select j.log_user,
j.job,
j.broken,
j.failures,
j.last_date||’:’||j.last_sec last_date,
j.this_date||’:’||j.this_sec this_date,
j.next_date||’:’||j.next_sec next_date,
j.next_date – j.last_date interval,
j.what
from (select dj.LOG_USER, dj.JOB, dj.BROKEN, dj.FAILURES,
dj.LAST_DATE, dj.LAST_SEC, dj.THIS_DATE, dj.THIS_SEC,
dj.NEXT_DATE, dj.NEXT_SEC, dj.INTERVAL, dj.WHAT
from dba_jobs dj) j;

Şimdi de bunların içinden bahsettiğim gibi, Çalışıyor görünüp de takılmış olabilecekleri listeleyelim.

select j.sid,
j.log_user,
j.job,
j.broken,
j.failures,
j.last_date||’:’||j.last_sec last_date,
j.this_date||’:’||j.this_sec this_date,
j.next_date||’:’||j.next_sec next_date,
j.next_date – j.last_date interval,
j.what
from (select djr.SID,
dj.LOG_USER, dj.JOB, dj.BROKEN, dj.FAILURES,
dj.LAST_DATE, dj.LAST_SEC, dj.THIS_DATE, dj.THIS_SEC,
dj.NEXT_DATE, dj.NEXT_SEC, dj.INTERVAL, dj.WHAT
from dba_jobs dj, dba_jobs_running djr
where dj.job = djr.job ) j;

Şimdi bu çalışan jobların Session bilgilerini de görelim.

select j.sid,
s.spid,
s.serial#,
j.log_user,
j.job,
j.broken,
j.failures,
j.last_date||’:’||j.last_sec last_date,
j.this_date||’:’||j.this_sec this_date,
j.next_date||’:’||j.next_sec next_date,
j.next_date – j.last_date interval,
j.what
from (select djr.SID,
dj.LOG_USER, dj.JOB, dj.BROKEN, dj.FAILURES,
dj.LAST_DATE, dj.LAST_SEC, dj.THIS_DATE, dj.THIS_SEC,
dj.NEXT_DATE, dj.NEXT_SEC, dj.INTERVAL, dj.WHAT
from dba_jobs dj, dba_jobs_running djr
where dj.job = djr.job ) j,
(select p.spid, s.sid, s.serial#
from v$process p, v$session s
where p.addr = s.paddr ) s
where j.sid = s.sid;

1- ) Öncelikle bu job’ları broken hala çevirelim. Biz job’ı bir şekilde kill etsek bile kendi kendine tekrar çalışmaması için. way be google translate gibi yazdım yaw :D bu nasıl bir cümle yapısı bilen beri gelsin.

EXEC DBMS_JOB.BROKEN(821,TRUE); 
Çok fazla kod manyağı olduğum söylenemez, bu işlemi Plsql Developer ya da toad benzeri bir programla da kod yazmadan yapabilirsiniz. Fakat bu durumda ben ne zaman denesem, program takılıyor. o yüzden Kodu yazıp çalıştırmak daha mantıklı.

2-) Job’u çalıştıran Session’u bulup, Kill edelim.

ALTER SYSTEM KILL SESSION ‘sid,serial#’;

3-) Büyük ihtimalle  Session Marked for Kill diye bir mesaj alacaksınız. henüz kill edemediği için, biz bunu İşletim sistemi platformunda kill etmeliyiz.

Windows için Komut Satırına  c:\orakill sid spid yazılır. yalnız dikkat edin buradaki sid Session ID anlamındaki sid değil.Oracle SID dir. Yani ORCL gibi. SID  doğru yazmasanız şöyle bir hata alırsınız. Could not attach to Oracle instance 154: err = 2

c:\orakill orcl  1947

unix / linux bilmiyorum ama o da şöyle  command line> kill ’9 spid

 

bir Sql Cümlem var,

select b.LOGON_TIME,b.LAST_CALL_ET /60 as SON_ISLEM_DK, 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 b.LAST_CALL_ET /60 > ’1′

Bu sql i Plsql developper programıyla çalıştırıyorum. Sonuçları görüyorum. (yani Kullanıcı yetkilere sahip), Ama Bir ODBC Bağlantısı ve php sayfası aracılığı ile bu sql i sorgulamaya çalıştığımda 04044 hatası veriyor.

Çözümü aslında çok basitmiş, Yetki vs gibi durumları aşınca, Tek yapmak gereken V$session yerine V\$session yazarak, php nin $ ı bir değişkenmiş gibi algılamasını önlemek.

 

Uzun süredir Atıcılık ile ilgili eskişehirde bir etkinlik yapmak istiyordum, fakat bir türlü aktif atıcılıkla uğraşan kişiler, gruplar bulamıyordum, En Son Okçuluk üzerine biraz araştırma yaptım ama mamafih hiç kimse bu hobiyle uğraşmıyordu.

Geçenlerde aklıma esti, Okçuluk yok, Yay temin edebileceğim yer yok, bari “Tek Saçma”, “Kurmalı Tüfek” vb birşey edineyim de, bir iki şişe kırar hedef çalışması yaparım dedim.

işin içine girince 50 liradan 5000 liraya kadar tüfek olduğunu görünce şaşırmadım değil :) AirgunTurk.com ve Yatagun.com sitelerini biraz inceledim. Başlangıç olarak da Retay 100X modeli bir havalı tüfek ve Tasco 4~16X40X bir Dürbün aldım. birazdan çıkıp bir iki ateş edeceğim.

Eskişehir’de bu tip bir merakı olan varsa, buluşup kaynaşalım derim.

 

Hemen hemen bütün tabanca,Tüfek,makineli tabancaların namlularının içerisinde yukarıdaki namlu benzerinde olduğu gibi yiv ve setlere rastlarız.

Namlu içerisindeki helezonik girintilere YİV , Namlu içersindeki helezonik çıkıntılara ise SET denir.

Yiv ve Setler Mermi çekirdeğinin Kendi ekseni etrafında dönmesini sağlarlar.

Yiv Nedir ?

Mermi çekirdeğinin Yiv Ve Setler vasıtasıyla kendi ekseni etrafında dönmesi soldan sağa olabileceği gibi , Sağdan sola doğru da olabilir.

Yiv ve Set in Faydaları:

1- Merminin keni ekseni etrafında dönerek gitmesini dolayısiyle merminin takla atmadan hedefe doğru gitmesini sağlar.

2-Merminin hedefe ilk önce uç kısmıyla varmasını sağlar.

3-Merminin delme gücünün artmasını sağlar.

4-Atış menzilinin uzamasını sağlar.

 

Bilmem farkında mısınız fakat Dünya’nın en büyük şirketlerinden birisi de Oracle (buradan teyit edebiliriz kibir de burası var).  Bazıları diyebilir ki yahu adını bile duymadığımız bir firma nasıl olur da bu kadar büyük olabilir. Adını duymamanız onun var olmamasını gerektirmez :)  Şöyle ki

Oracle Sun Microsystem Firmasını geçtiğimiz aylarda satın almıştı belki hatırlarsınız. Ama ben burda hepsini açıklayamayacağım. kaldı ki zaten ben de hepsini bilmiyorum. Ama size birkaç bilindik küçük şeylerden bahsedeyim.

Oracle sahip olduğu  Unbreakable Linux ile kendi işletim sistemini yapmakla kalmayıp yine sahip olduğu Sun Microsystem ile kendi Sunucularını yapıyor. Siebel’in CRM sini de satın almıştı.

Bunlar tabi ki oracle’ı durdurmak için sebep değil.

İşte aşağıdakiler belki sebep yaratabilir.

Mysql‘i bilmeyenin zaten burada işi yok :) evet evet bu da Oracle’ın…

Open Office Microsoft office kadar kullanışlı olmasa da, en başarılı ücretsiz office uygulamalarından birisidir.

Java Bildiğim Kadarıyla Java ile Sun uğraşıyordu. Sun’ı satın alınca bu işi de Oracle yönetiyor.

VirtualBox Vmware tarzında Sanal Makine Kurup yönetmenize olanak sağlayan bir yazılım. birkaç kez kullanmıştım. Gayet başarılı ve üstelik ücretsiz.

Daha bir sürü şey sayılabilir ama ben uğraşmayacağım. Dileyen buraya bakabilir. Oracle’ın Red Hat’ı da satın almak istediği bir dedikodu olarak dolaşıyor. İlk bakışta Oracle Bir sürü Opensource yazılıma destek veriyormuş gibi görülebilir. Ama Şeytan ayrıntıda gizlidir. Ayrıntısı şu ki Oracle en  büyük Opensource yazılımları Kurumsal çatısı altına toplayarak, dilediğinde koşulları değiştirebilir.

Bir de Oracle’ın kurucu ve CEO’su Larry Ellison’un Ironman 2 de Oynadığı rol var. Yakında Şarkı Sinema sektörüne de el atacaklarından korkuyorum :)

Her neyse birkez daha  zenginin malı züğürdün çenesini yordu.

 
Yüz daha versen yüz uman yüzler bilirim, Yokuşlara kardeş olan düzler bilirim, Dünya öküzün üstünde derler ama, Dünyanın üstünde nice öküzler bilirim. . .
N. F. Kısakürek
 

V$session tablosuna ki status alanında Active, inactive, killed, Sniped gibi değerler vardır.Sniped haricindekileri zaten kendini açıklıyor, Peki sniped nedir ?

Oracle kullanıcısının profilinde IDDLE_TIME (ve ya diğer kısıtlamalar) değeri set edilmişse, Kullanıcı bu değeri aştığında otomatik olarak session durumu snipped olacaktır. Ve oracle’ın bu kullanıcıya ayırdığı tüm kaynaklar Shadow işlemi hariç boşa çıkacaktır.

Bu kullanacı tekrar bağlantı kurmaya çalıştığında v$Session dan da düşecektir. Tekrar denemediği sürece sniped kalacaktır. Sqlnet.Ora dosyasına SQLNET.EXPIRE_TIME değerini ayarlarsanız kullanıcıyı buradaki parametre süresinden sonra düşürecektir.

sqlnet.ora daki Expire_time değeri sadece sniped (dead inactive) durumunda olanlar için geçerli olacaktır. Eğer Profile Limit koyup da sqlnet.ora dosyasına limit koymazsanız. profil sniped a çevirecek ama kill etmeyecektir.

 

 

Daha önce ki session’lar la ilgili makalede oluşturduğumuz procedure için otomatik tekrarlayan bir job oluşturmak için aşağıdaki kodu kullanabiliriz. ben kullandım siz de kullanın :P

begin
sys.dbms_job.submit(job => :job,
what => ‘dc_idle_sessions;’,
next_date => to_date(‘23-03-2010 14:03:37′, ‘dd-mm-yyyy hh24:mi:ss’),
interval => ’sysdate+1′);
commit;
end;
/

 

Bazen Kullanıcılar Update butonuna basar commit  etmez üstüne yemeğe gider ya da program kapanır. Başka birisi o kayıtlarla ulaşamaz. İşte bu durumda , o kilidi ve kitleyen kişiyi öğrenmek içinben aşağıdaki sorguyu çalıştırıyorum.

select b.LOGON_TIME,b.LAST_CALL_ET /60 as SON_ISLEM, 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;

Böylece Hangi kullanıcının hangi tabloları ne zaman kitlediğini öğrenebiliyor ve gerekirse daha önce şurada bahsetmiş olduğum procedure ile  oturumun  bağlantısını kesebiliyorum. böylece LOCK işlemini ortadan kaldırıyorum.

Dezavantajı ise kullanıcı çok uzun emekler harcayıp birşeyler yazmış ama göndermemişse bu veri rollback edilir. kullanıcı bi zahmet yeniden yazar ve kaydeder.

not : son_islem dakika cinsinden o DML sorgusunu ne kadar önce çalıştırdığını gösterir. 15-20 dk dan fazlaysa kill etmek daha mantıklı olur.

© 2011 Seyirnotu.com - Yunus Emre YÜCE Notları Suffusion theme by Sayontan Sinha