Masters Of SQL

SQL Server ile ilgili bilgiler, hayata dair paylaşımlar ve birazda eğlence tabii...
Deadlock’sız, Blocking’siz, Contention’sız günler diliyoruz :)
Sysadmin sizinle olsun

Nedir Bu SQL Server AUDIT? (Bölüm 2)

Merhabalar :)

Audit Yazı dizimizin 2.bölümü ile karşınızdayız. Bir önceki bölümde "Audit nedir?", "Nasıl kurulur?" sorularının cevabını vermeye çalıştık.

Yazımızın 1.bölümüne gitmek için : Nedir Bu SQL Server AUDIT? (Bölüm 1)

Bu bölümüzde, Auditi’imizin analizini yapmaya çalışacağız. İlk olarak bakalım bir önceki bölümümüzde kurduğumuz Audit’imizi kurabilmiş miyiz? Bunun için; fn_get_audit_file fonksiyonu, Audit’imizin için en sık kullanacağımız fonksiyon olabilir. Fonksiyona, Audit’imizin Path’ini vererek aşağıdaki gibi çalıştırıyoruz.


    
select * from fn_get_audit_file ('D:\Audit\*.sqlaudit',default,default)

Bu fonksiyon sayesinde Audit’imize düşen logları görebiliriz. Sorguyu kendimize göre düzenleyerek, daha okunabilir bir hale getirebiliriz.
    
select event_time, object_name, statement, database_name, class_type, session_server_principal_name, server_principal_name, action_id, succeeded, session_id 
from fn_get_audit_file ('D:\Audit_Deneme\*.sqlaudit',default,default) 
order by 1 desc

Tablodaki kolonları inceleyecek olursak, yapılan işin ne zaman yapıldığını, hangi statement'ın çalıştığını, kim tarafından yapıldığını, yaptığı işin başarılı olup olmadığı gibi soruların cevabını bulabiliriz.

DMV lerle inceleyecek olursak;
    
select * from sys.dm_audit_class_type_map

fn_get_audit_file fonksiyonundan dönen class type seçeneklerini inceleyebilmemize olanak sağlayan bir DMV.

    

select * from sys.server_audits
select * from sys.server_audit_specifications
select * from sys.server_audit_specification_details

DMV leri sayesinde, auditlerimizin detayını görüntüleyebiliyoruz. Şimdi, Auditimizi test etme zamanı:) Bakalım, gerçekten de loglayacak mı?
Çalışma amaçlı bir DB oluşturuyorum.
    
CREATE DATABASE BAKALIM_OLCAKMI

Audit'imize bakalım. İstediğimiz şekilde loglamış mı?
    
select event_time, object_name, statement, database_name, class_type, session_server_principal_name, server_principal_name, action_id, succeeded, session_id 
from fn_get_audit_file ('D:\Audit_Deneme\*.sqlaudit',default,default) 
order by 1 desc

Bu seferki denememizde tablo create, alter, drop işlemlerini deniyoruz.
    
--Tablo create 
USE [BAKALIM_OLCAKMI]
GO

CREATE TABLE [dbo].[Audit_Deneme](
	[column_1] [int] NOT NULL,
	[column_2] [int] NULL
) ON [PRIMARY]

--Tablo alter(kolon ekleme)
ALTER TABLE dbo.Audit_Deneme
	ADD deneme int NULL

--Tablo drop 

DROP TABLE dbo.Audit_Deneme

Az evvelki scriptimizi yeniden çalıştırıyoruz. Bakalım loglamış mı?


Şimdi de yeni bir login oluşturup, daha sonrasında drop ederek loglayacak mı bakalım :)
    
--Login create
USE [master]
GO
CREATE LOGIN [AuditDeneme] WITH PASSWORD=N'12345', 
DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO

--Login drop
DROP LOGIN [AuditDeneme] 
GO

Aynı şekilde, sizler de SP, function, Index create ederek, alter ya da drop yaparak deneyebilirsiniz. Logladığını göreceksiniz :)

Geldik bir yazımızın daha sonuna. Umarım sizlere faydalı olabilmişizdir. Bir sonraki yazı dizimizde görüşmek üzere. Soğuklar da geliyor, kendinize iyi bakın, Yoda’nın tabiriyle “DBA hastalanmaz”. Geçen sene beni nasıl şartladıysa “DBA hastalanmaz” diye kendime telkin ede ede hastalanmadım da gerçekten :D 

Sağlıklı, bol motivasyonlu günleriniz olsun :)


DBA mi? O ne olaki :) (Bölüm 1)

3 bilinmeyenli bir denklem gibidir DBA olmak. Elinde yeterli bilgi yoksa, nasıl bir yöntemle çözeceğini bilmiyorsan çıkamazsın işin içinden. DBA demişken, siz hiç bir büyüğünüze anlatmaya çalıştınız mı DBA’in ne demek olduğunu?

“Şey Amcacım. DBA… Imm… Database Administrator oluyor.”

Amcanın boş bakan ifadeleri karşısında yardımcı olabilmek adına: “Yani Veri tabanı Yöneticisi.”

Mükemmel açıklamamızla amca mavi ekrana düştü. Veri tabanı, SQL, DBA… gibi kavramlar işin içinde olmayan insanlar için açıklanması zor kavramlar olsa da, esaslı bir DBA ilk olarak kendisini iyi ifade edebiliyor, ne iş yaptığını düzgünce anlatıyor olmalı. Bu sebeple, biri size “DBA mi? O nasıl bir şey öyle evladım?” diye sorduğunda vereceğimiz cevaplar karşımızdakinin anlayabileceği bir düzeyde olmalı. Veri tabanı kavramını bilmeyen birine Veri tabanı yöneticisiyim derseniz bu hiçbir şey ifade etmez.

Peki size sorsak ne cevap verirdiniz? Google’a bakmadan veya herhangi bir yardım almadan “Bir DBA kimdir?” , “Ne iş yapar?” sorusuna cevap verebilir misiniz?

10 kişiye sorduk 3 popüler cevap arıyoruz. DBA kimdir? İtiraf etmeliyim ki araştırma süreci bir hayli eğlenceli geçti.

DBA için Database Application diyen de oldu, veri tabanı işte diyerek geçiştiren de. Tabi bu soruları sorduğum kişilerin BT içinde çalıştıklarını göz önünde bulundurmanızı rica ediyorum.

Genel anlamda hepsiyle de tanımın en basit ve anlaşılır olarak şu olacağına kadar verdik:

DBA(Database Administrator) yani namı diğer Veri tabanı Yöneticisi, verilerin tutulduğu şeylerden(burada tablo denmek istiyor aslında) sorumlu kişi. Herkesin bildiği bir nesne üzerinden ilerlemek istersek, Google’a aklımıza takılan en ufak şeyi dahi yazdığımızda karşımızda bir sonuç bulabilmemizin arkasında aslında aradığımız tüm bilgilerin tutulduğu bir sistem olması ve bu sistemden biz çağırdığımızda getirmesidir. İşte Veri tabanı yöneticisi bu bilgilerin güvenliğinden, bakımından, performanslı işleyişinden… Kısacası her şeyinden sorumlu kişidir.

Her şeyde biraz Matematik vardır derler ya, herkeste de biraz DBA’lik vardır aslında. Bir öğretmen, öğrencilerinin bilgilerini, sınav sonuçlarını muhafaza eder. Bir ev hanımı eşsiz yemek tariflerini, bir müzisyen bestelerini, öğrenci notlarını defterinde saklar. Evlerde, telefonların altında bile telefon rehberlerimiz vardır. Bakkal, dükkanındaki ürünlerin sayısını, çeşidinin kaydını tutar. Bir anneye düğünde kim ne taktı diye sorsanız inanıyoruz ki hiçbir veri kaybı yaşamadan, deadlock a :) :) düşmeden ve sınırsız join le size select sorgusunu dönecektir. Aslında farkında olmadan herkes biraz DBA lik yapar.

Yazımızın devamında detaylara gireceğiz bununla birlikte DBA’nin neler yaptığını ana başlıklarda toparlayalım isterseniz.
   

Sevgili DBA’imiz,
1. İnşaa eder, kurar.(Installing/Upgrading)
2. Bilgilerinin güvenliğini sağlar. (Security)
3. Yedeklenmesini\ Yedekten dönülebilmesini garanti eder. (Backup/Recovery)
4. Performansı iyileştirmeye çalışır.
5. Yüksek Erişilebilirlik(High Availability) ve Felaket Senaryosu(Disaster Recovery) Planlarını Yapar.
6. Kapasiteyi Planlar.
7. Bakım Yapar(Maintenance).
8. İş Zekası ve Veri Madenciliği konuları hakkında bilgi sahibidir.
9. Toplantılara katılır.
10. Dökümantasyon yapar.
11. Yatar. :)

Detaylar bir sonraki makaleye :)