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

Veritabanı güvenliği ve performansı, herhangi bir kuruluş için kritik öneme sahiptir. Veritabanı aktivitelerini düzenli olarak denetlemek, olası güvenlik risklerini ve performans sorunlarını tespit etmek için oldukça önemlidir. Bu yazıda, SQL ve Shell scriptleri kullanarak veritabanı aktivitelerini nasıl denetleyebileceğinizi adım adım anlatacağız.

## SQL Scriptleri ile Denetim

SQL scriptleri, veritabanınızda gerçekleşen aktiviteleri günlük, haftalık ve aylık olarak gözden geçirmenizi sağlar. Bu scriptleri, belirli kullanıcıları, tabloları veya saklı prosedürleri filtrelemek gibi ihtiyaçlarınıza göre özelleştirebilirsiniz. Ayrıca, bu scriptleri kullanarak ekip üyelerinizle paylaşabileceğiniz raporlar da oluşturabilirsiniz.

### Günlük Denetim

– **Bugün giriş yapan kullanıcıların listesi:**
 “`sql
 SELECT user_name, login_time
 FROM sys.dm_exec_sessions
 WHERE login_time >= CURRENT_DATE – 1
 ORDER BY login_time DESC;
 “`

– **Bugün değiştirilen tabloların listesi:**
 “`sql
 SELECT table_name, last_update
 FROM information_schema.tables
 WHERE last_update >= CURRENT_DATE – 1
 ORDER BY last_update DESC;
 “`

– **Bugün çalıştırılan saklı prosedürlerin listesi:**
 “`sql
 SELECT procedure_name, last_execution
 FROM sys.procedures
 WHERE last_execution >= CURRENT_DATE – 1
 ORDER BY last_execution DESC;
 “`

– **Bugün başarısız olan girişlerin listesi:**
 “`sql
 SELECT login_name, failed_login_attempts
 FROM sys.logins
 WHERE failed_login_attempts > 0
 ORDER BY failed_login_attempts DESC;
 “`

### Haftalık Denetim

– **Bu hafta giriş yapan kullanıcıların listesi:**
 “`sql
 SELECT user_name, login_time
 FROM sys.dm_exec_sessions
 WHERE login_time >= CURRENT_DATE – 7
 ORDER BY login_time DESC;
 “`

– **Bu hafta değiştirilen tabloların listesi:**
 “`sql
 SELECT table_name, last_update
 FROM information_schema.tables
 WHERE last_update >= CURRENT_DATE – 7
 ORDER BY last_update DESC;
 “`

– **Bu hafta çalıştırılan saklı prosedürlerin listesi:**
 “`sql
 SELECT procedure_name, last_execution
 FROM sys.procedures
 WHERE last_execution >= CURRENT_DATE – 7
 ORDER BY last_execution DESC;
 “`

– **Bu hafta başarısız olan girişlerin listesi:**
 “`sql
 SELECT login_name, failed_login_attempts
 FROM sys.logins
 WHERE failed_login_attempts > 0
 ORDER BY failed_login_attempts DESC;
 “`

### Aylık Denetim

– **Bu ay giriş yapan kullanıcıların listesi:**
 “`sql
 SELECT user_name, login_time
 FROM sys.dm_exec_sessions
 WHERE login_time >= CURRENT_DATE – 30
 ORDER BY login_time DESC;
 “`

– **Bu ay değiştirilen tabloların listesi:**
 “`sql
 SELECT table_name, last_update
 FROM information_schema.tables
 WHERE last_update >= CURRENT_DATE – 30
 ORDER BY last_update DESC;
 “`

– **Bu ay çalıştırılan saklı prosedürlerin listesi:**
 “`sql
 SELECT procedure_name, last_execution
 FROM sys.procedures
 WHERE last_execution >= CURRENT_DATE – 30
 ORDER BY last_execution DESC;
 “`

– **Bu ay başarısız olan girişlerin listesi:**
 “`sql
 SELECT login_name, failed_login_attempts
 FROM sys.logins
 WHERE failed_login_attempts > 0
 ORDER BY failed_login_attempts DESC;
 “`

## Shell Scriptleri ile Denetim

SQL scriptlerini kullanmanın yanı sıra, bu scriptleri Linux shell scriptleri ile de çalıştırabilirsiniz. Bu yöntem, scriptleri bir cron job veya başka bir zamanlama mekanizması ile otomatik olarak çalıştırmanıza olanak tanır.

### Günlük Denetim Scripti

“`bash
# Bugün giriş yapan kullanıcıların listesi
echo “Bugün giriş yapan kullanıcıların listesi alınıyor…”
sqlplus -S user/password @daily_audit.sql

# Bugün değiştirilen tabloların listesi
echo “Bugün değiştirilen tabloların listesi alınıyor…”
sqlplus -S user/password @daily_audit_tables.sql

# Bugün çalıştırılan saklı prosedürlerin listesi
echo “Bugün çalıştırılan saklı prosedürlerin listesi alınıyor…”
sqlplus -S user/password @daily_audit_procedures.sql

# Bugün başarısız olan girişlerin listesi
echo “Bugün başarısız olan girişlerin listesi alınıyor…”
sqlplus -S user/password @daily_audit_logins.sql
“`

### Haftalık Denetim Scripti

“`bash
# Bu hafta giriş yapan kullanıcıların listesi
echo “Bu hafta giriş yapan kullanıcıların listesi alınıyor…”
sqlplus -S user/password @weekly_audit.sql

# Bu hafta değiştirilen tabloların listesi
echo “Bu hafta değiştirilen tabloların listesi alınıyor…”
sqlplus -S user/password @weekly_audit_tables.sql

# Bu hafta çalıştırılan saklı prosedürlerin listesi
echo “Bu hafta çalıştırılan saklı prosedürlerin listesi alınıyor…”
sqlplus -S user/password @weekly_audit_procedures.sql

# Bu hafta başarısız olan girişlerin listesi
echo “Bu hafta başarısız olan girişlerin listesi alınıyor…”
sqlplus -S user/password @weekly_audit_logins.sql
“`

### Aylık Denetim Scripti

“`bash
# Bu ay giriş yapan kullanıcıların listesi
echo “Bu ay giriş yapan kullanıcıların listesi alınıyor…”
sqlplus -S user/password @monthly_audit.sql

# Bu ay değiştirilen tabloların listesi
echo “Bu ay değiştirilen tabloların listesi alınıyor…”
sqlplus -S user/password @monthly_audit_tables.sql

# Bu ay çalıştırılan saklı prosedürlerin listesi
echo “Bu ay çalıştırılan saklı prosedürlerin listesi alınıyor…”
sqlplus -S user/password @monthly_audit_procedures.sql

# Bu ay başarısız olan girişlerin listesi
echo “Bu ay başarısız olan girişlerin listesi alınıyor…”
sqlplus -S user/password @monthly_audit_logins.sql
“`

## Sonuç

Veritabanı denetimi, güvenlik ve performans açısından büyük önem taşır. SQL ve Shell scriptleri kullanarak düzenli denetimler yapmak, olası sorunları önceden tespit etmenize ve gerekli önlemleri almanıza yardımcı olacaktır. Bu scriptleri ihtiyaçlarınıza göre özelleştirerek, veritabanınızın güvenliğini ve performansını daha etkin bir şekilde yönetebilirsiniz.

Unutmayın, düzenli denetimler yapmak ve sonuçları dikkatlice incelemek, veritabanınızın sağlıklı bir şekilde çalışmasını sağlamak için atabileceğiniz en önemli adımlardan biridir.