İçindekiler

    Yazıyı Dinle

    Hazır
    Tarayıcınızın yerleşik ses sentezi özelliğini kullanır.

    Yazı Boyutu

    Küçük Aa
    Normal Aa
    Büyük Aa
    Çok Büyük Aa

    Kaydet

    📑

    Bu makaleyi daha sonra okumak için kaydedin

    Veritabanı Yöneticilerinin İlk Sorguladığı Şeyler

    Yazıyı dinlemek için oynat butonuna tıklayın

    Veritabanı Yöneticileri (DBAlar), genellikle iş günlerine veya sorun giderme oturumlarına başlarken, veritabanının sağlığı, performansı ve durumu hakkında hızlı bir genel bakış elde etmek için belirli sorgular çalıştırırlar. Buna sağlık kontrolü veya günlük rutin denir. Bu sorgular, potansiyel sorunları belirlemelerine, sistem kaynaklarını izlemelerine ve her şeyin sorunsuz çalıştığından emin olmalarına yardımcı olur. İşte DBAların her şeyden önce çalıştırdığı üç temel sorgu ve bunların neden kritik olduğuna dair açıklamalar:

    ## 1. Veritabanı Çalışma Süresi ve Durumunu Kontrol Etme

    ```sql
    SELECT
       instance_name,
       status,
       database_status,
       startup_time,
       host_name
    FROM
       v$instance;
    ```

    **Çıktı Örneği:**

    | INSTANCE_NAME | STATUS | DATABASE_STATUS | STARTUP_TIME       | HOST_NAME     |
    |---------------|--------|-----------------|--------------------|---------------|
    | ORCL          | OPEN   | ACTIVE          | 2023-10-01 08:00:00| db-server-01  |

    **Neden Önemli?**

    - **Veritabanı Erişilebilirliği:** Veritabanının çalışıp çalışmadığını doğrular.
    - **Çalışma Süresi:** Veritabanının son başlatıldığından bu yana ne kadar süredir çalıştığını gösterir, bu da beklenmeyen yeniden başlatmaları tespit etmeye yardımcı olabilir.
    - **Durum:** Veritabanının sağlıklı bir durumda olup olmadığını gösterir (örneğin, ‘OPEN’, ‘MOUNTED’ veya ‘DOWN’).

    ## 2. Aktif Oturumları ve Kaynak Kullanımını İzleme

    ```sql
    SELECT
       sid,
       serial#,
       username,
       status,
       program,
       sql_id,
       event,
       wait_time,
       seconds_in_wait
    FROM
       v$session
    WHERE
       status = 'ACTIVE';
    ```

    **Çıktı Örneği:**

    | SID | SERIAL# | USERNAME | STATUS | PROGRAM     | SQL_ID    | EVENT                  | WAIT_TIME | SECONDS_IN_WAIT |
    |-----|---------|----------|--------|-------------|-----------|------------------------|-----------|-----------------|
    | 123 | 45678   | APP_USER | ACTIVE | sqlplus.exe | abc123xyz | db file sequential read| 0         | 5               |

    **Neden Önemli?**

    - **Performans İzleme:** Aktif oturumları ve ne yaptıklarını belirler, uzun süren sorguları veya kaynak darboğazlarını tespit etmeye yardımcı olur.
    - **Sorun Giderme:** Belirli olayları bekleyen oturumları ortaya çıkarır (örneğin, G/Ç, kilitler), bu da performans sorunlarını gösterebilir.
    - **Kaynak Kullanımı:** Kimin bağlı olduğunu ve hangi kaynakları tükettiğini anlamaya yardımcı olur.

    ## 3. Tablo Alanı Kullanımını Kontrol Etme

    ```sql
    SELECT
       tablespace_name,
       file_name,
       bytes / 1024 / 1024 AS size_mb,
       (bytes - (SELECT SUM(bytes) FROM dba_free_space WHERE file_id = file_id)) / 1024 / 1024 AS used_mb,
       (bytes - (SELECT SUM(bytes) FROM dba_free_space WHERE file_id = file_id)) / bytes * 100 AS pct_used
    FROM
       dba_data_files;
    ```

    **Çıktı Örneği:**

    | TABLESPACE_NAME | FILE_NAME           | SIZE_MB | USED_MB | PCT_USED |
    |-----------------|---------------------|---------|---------|----------|
    | USERS           | /u01/oradata/users01| 1024    | 800     | 78.12    |
    | SYSTEM          | /u01/oradata/system01| 512     | 450     | 87.89    |

    **Neden Önemli?**

    - **Depolama İzleme:** Her tablo alanında ne kadar alan kullanıldığını ve ne kadarının kullanılabilir olduğunu takip eder, bu da alan tükenmesi hatalarını önlemeye yardımcı olur.
    - **Kapasite Planlama:** Dolmak üzere olan tablo alanlarını belirler, bu da DBAların proaktif olarak daha fazla alan eklemesine olanak tanır.
    - **Performans Etkisi:** Dolu tablo alanları performans düşüşüne neden olabilir, bu nedenle kullanımı izlemek kritiktir.

    ## 4. Engelleme Kilitlerini Kontrol Etme

    ```sql
    SELECT
       blocking_session,
       sid,
       serial#,
       wait_class,
       event,
       seconds_in_wait
    FROM
       v$session
    WHERE
       blocking_session IS NOT NULL;
    ```

    **Çıktı Örneği:**

    | BLOCKING_SESSION | SID | SERIAL# | WAIT_CLASS   | EVENT                     | SECONDS_IN_WAIT |
    |------------------|-----|---------|--------------|---------------------------|-----------------|
    | 123              | 456 | 78901   | Application  | enq: TX - row lock contention | 120             |

    **Neden Önemli?**

    - **Kilitlenme Tespiti:** Diğer oturumları engelleyen oturumları belirler, bu da uygulama zaman aşımlarına veya hatalara neden olabilir.
    - **Performans Darboğazları:** Veritabanını yavaşlatan çekişme sorunlarını çözmeye yardımcı olur.

    ## Bu Sorgular Neden DBAlar İçin Kritiktir?

    1. **Proaktif İzleme:** Bu sorgular, veritabanının sağlığına ilişkin bir anlık görüntü sağlar, bu da DBAların sorunları büyümeden önce yakalamasına olanak tanır.
    2. **Sorun Giderme:** Performans sorunlarının, kaynak çekişmesinin veya depolama sorunlarının kök nedenini hızlı bir şekilde belirlemeye yardımcı olurlar.
    3. **Operasyonel Verimlilik:** Bu sorguları düzenli olarak çalıştırarak, DBAlar veritabanının en iyi şekilde çalıştığından emin olabilir ve beklenmeyen kesintilerden kaçınabilir.

    Bu sorgular, bir DBA’nın araç setinin temelini oluşturur ve genellikle sürekli denetim için otomatikleştirilir veya izleme araçlarına entegre edilir.

    Önceki Yazı
    SQL Notları: MySQL ile Başlangıç

    Bu temel bilgilerle MySQL'e başlangıç yapabilirsiniz. SQL öğrenmek, veritab...

    Sonraki Yazı
    Veritabanı Denetimi: Günlük, Haftalık ve Aylık Kontroller

    Veritabanı güvenliği ve performansı, herhangi bir kuruluş için kritik öne...