Berkant KARDUMAN

Teknoloji günlüğü

Oracle UpTime Ölçümü

Oracle Startup/Shutdown Etkinlik İzleme

Oracle instance en son ne zaman kapatılmıştı, ne kadar süre kapalı kaldı gibi sorularla muhatap oluyorsanız bakmanız gereken ilk yer EM arayüzü olabilir. 
Üşenmeden alert loglarını okuyup son startup zamanını tespit edebilirsiniz.

Eğer Bu işi sürekli yapıyorsanız  Ask Tom sitesinindeki bu makale ilginizi çekebilir.

Ben bu yazıda anlatılanları uyguladım bazı sorunlarınıda düzelterek çalışır hale getirdim.

Öncelikle alert dosyasının bulunduğu yeri işaret eden bir directory oluşturulması gerekiyor.

Directory oluşturma

Dump klasörünün yolunu öğrenmek için user_dump_dest parametresinin değerine bakmak gerekecek.

CREATE OR REPLACE DIRECTORY 
BDUMP_DIR AS 
'/u01/app/oracle/diag/rdbms/orcl/orcl/tracalert';

Log Okumak İçin External Table oluşturma

Burda alert dosyasının adını düzenlemeniz gerekebilir.
CREATE TABLE alert_ext
(
  TEXT_LINE  VARCHAR2(255 BYTE)
)
ORGANIZATION EXTERNAL
  (  TYPE ORACLE_LOADER
     DEFAULT DIRECTORY TOAD_BDUMP_DIR
     ACCESS PARAMETERS 
       ( records delimited by newline
        fields
        REJECT ROWS WITH ALL NULL FIELDS
     )
     LOCATION (TOAD_BDUMP_DIR:'alert_orcl.log')
  )
REJECT LIMIT UNLIMITED
NOPARALLEL
NOMONITORING;

Başlangıç Bitiş Raporun Alınması


burda asktom.com da verilen koddan farklı olarak NLS_DATE_LANGUAGE parametresini ekledim. ayrıca to_date yerine to_timestamp kullandım

select last_time SonKapanis, start_time Baslangic, start_time-last_time  Kapali_Kalma_Suresi
    from (
  select to_timestamp(last_time, 'Dy Mon DD HH24:MI:SS YYYY','NLS_DATE_LANGUAGE = AMERICAN') last_time,
         to_timestamp(start_time,'Dy Mon DD HH24:MI:SS YYYY','NLS_DATE_LANGUAGE = AMERICAN') start_time
    from (
  select text_line,
         lag(text_line,1) over (order by r) start_time,
             lag(text_line,2) over (order by r) last_time
    from (
  select rownum r, text_line
    from alert_ext
   where text_line like '___ ___ __ __:__:__ 20__'
      or text_line like 'Starting ORACLE instance %'
             )
             )
   where text_line like 'Starting ORACLE instance %'
         )
  
  order by 1 desc

Sonuçta aşağıdaki gibi bir rapor alabileceğiz.