SQL Server Ola Hallengren Nedir? Nasıl Kullanılır?

Ola SQL server üzerinde DBA’lerin veri tabanlarını daha rahat yönetmesini sağlar, bunları nasıl yapar aslında Ola Hallengren bir SQL server da oluşturulmuş Script’tir. Bu Script’e şu şekilde ulaşabilirsiniz. https://ola.hallengren.com/ sitesine girip MaintenanceSolution.sql dosyasını indirmeniz gerekmektedir. Bu dosyayı Not Defterinde açıp script’ine ulaşabilirsiniz. Bu script’i çalıştırdığınız zaman SQL Server Backup, DatabaseIntegrityCheck,IndexOptimize bakımlarını kontrol edebileceğimiz bir sistem kütüphanesi oluşturmaktadır. Bu konulara daha detaylı giriş yapacağız. DatabaseBackup : SQL Server Yedekleme DatabaseIntegrityCheck: SQL Server Bütünlük Kontrolü IndexOptimize: SQL Server İndex ve İstatistik Bakımı       Ola Hallengren script’ini çalıştırdıktan sonra bağzı Joblarımız’ da oluşacaktır. İlk olarak System ‘de oluşturduğumuz parametreler Store Prodcedures’lerin içinde görebiliriz.       Tabiki bunların hepsini öğrenmemize gerek yok bizim için önemli olanların kullanımını ve ne işe yaradıklarını bakalım. Gerek oldukça bu parametreleri bilmemiz bizim işlerimizi rahatlatacaktır.                           Öncelikle DatabaseBackup job’ı inceliyeceğiz ve nasıl kullanılacağınıza bakalım. Job’ […]

SQL Server Ola Hallengren Nedir? Nasıl Kullanılır?

Ola SQL server üzerinde DBA’lerin veri tabanlarını daha rahat yönetmesini sağlar, bunları nasıl yapar aslında Ola Hallengren bir SQL server da oluşturulmuş Script’tir. Bu Script’e şu şekilde ulaşabilirsiniz.

https://ola.hallengren.com/ sitesine girip MaintenanceSolution.sql dosyasını indirmeniz gerekmektedir. Bu dosyayı Not Defterinde açıp script’ine ulaşabilirsiniz.

Bu script’i çalıştırdığınız zaman SQL Server Backup, DatabaseIntegrityCheck,IndexOptimize bakımlarını kontrol edebileceğimiz bir sistem kütüphanesi oluşturmaktadır. Bu konulara daha detaylı giriş yapacağız.

DatabaseBackup : SQL Server Yedekleme

DatabaseIntegrityCheck: SQL Server Bütünlük Kontrolü

IndexOptimize: SQL Server İndex ve İstatistik Bakımı

 

 

 

Ola Hallengren script’ini çalıştırdıktan sonra bağzı Joblarımız’ da oluşacaktır.

İlk olarak System ‘de oluşturduğumuz parametreler Store Prodcedures’lerin içinde görebiliriz.

 

 

 

Tabiki bunların hepsini öğrenmemize gerek yok bizim için önemli olanların kullanımını ve ne işe yaradıklarını bakalım. Gerek oldukça bu parametreleri bilmemiz bizim işlerimizi rahatlatacaktır.

 

 

 

 

 

 

 

 

 

 

 

 

 

Öncelikle DatabaseBackup job’ı inceliyeceğiz ve nasıl kullanılacağınıza bakalım. Job’ incelemeden önce Backup Parametrelerini öncelikle bilmemiz gerekmektedir.

@Databases Bu parametremiz Backup’ı alınacak Veri tabanlarımızın yazıldığı alandır.

SYSTEM_DATABASES Tüm sistem veritabanları (ana, msdb ve model)
USER_DATABASES Tüm kullanıcı veritabanları
ALL_DATABASES Tüm veritabanları
AVAILABILITY_GROUP_DATABASES Kullanılabilirlik gruplarındaki tüm veritabanları
USER_DATABASES, -AVAILABILITY_GROUP_DATABASES Kullanılabilirlik gruplarında olmayan tüm kullanıcı veritabanları
Db1 Db1 veritabanı
Db1, Db2 Db1 ve Db2 veritabanları
KULLANICI_DATABASES, -Db1 Db1 hariç tüm kullanıcı veritabanları
%Db% Adında “Db” olan tüm veritabanları
%Db%, -Db1 Db1 hariç adında “Db” olan tüm veritabanları
ALL_DATABASES, -%Db% Adında “Db” olmayan tüm veritabanları

 

@Directory Adındanda anlaşılacağı üzere backup’ın alınacağı yerimizi seçiyoruz. Ayrıca

Burada büyük databaselerimizin yedeklerini alırken parçalara bölebiliriz bu işlem aslında \\Sunucu1\Yedekleme, \\Sunucu2\Yedekleme

Bu aslında hem backup boyutumuzun büyük olmasından dolayı disk boyutlarımızı yüksek tutmamak bize avantaj sağlayacaktır ve en güzel  yanıda backup alma süresine etkisi fark edecektir.

Değer Tanım
NULL SQL Server varsayılan yedekleme dizinine yedekleyin. Bu varsayılandır.
C:\Yedekleme C:\Backup dizinine yedekleyin.
C:\Yedek, D:\Yedek C:\Backup ve D:\Backup dizinlerine yedekleyin.
\\Sunucu1\Yedekleme \\Sunucu1\Yedekleme ağ paylaşımına yedekleyin.
\\Sunucu1\Yedekleme, \\Sunucu2\Yedekleme \\Sunucu1\Yedekleme ve \\Sunucu2\Yedekleme ağ paylaşımlarına yedekleyin.
HİÇ NUL’a yedekleyin.

@Execute  Parametremiz ayarlamaları yapıldıktan sonra işlemi kontrol etmemizi sağlar sağlıklı çalışıp çalışmayacağını bize gösterir. Şu şekilde anlatmak isterim FULL backup alacağımız zaman bu parametre ile önce script doğru olup olmadığını ayrıca allocated edeceği alanın yeterli olup olmadığını gösterir.

Değer Tanım
Y Yedeklemeyi doğrulayın.
N Yedeklemeyi doğrulamayın. Bu varsayılandır.

Burada kontrol edilmek istenir ise ‘N’ Seçeneği ile kontrol yapılması gerekir  ‘Y‘ yaparsak direk script çalışmaya başlar.

@BackupType Yedekleme türünü belirtin: FULL, Differential, or Transaction log.

Değer Tanım
FULL Full backup
DIFF Differential backup
LOG Transaction log backup

@Verify Yedeklemeyi doğrulayın.

Değer Tanım
Y Yedeklemeyi doğrulayın.
N Yedeklemeyi doğrulamayın. Bu varsayılandır.

 

@CleanupTime Yedekleme dosyalarının silineceği süreyi saat cinsinden belirtin. Zaman belirtilmezse, hiçbir yedekleme dosyası silinmez.

@CleanupMode Eski yedekleme dosyalarının yedekleme gerçekleştirilmeden önce mi yoksa sonra mı silineceğini belirtin.

Değer Tanım
BEFORE_BACKUP Yedekleme gerçekleştirilmeden önce eski yedekleme dosyalarını silin.
AFTER_BACKUP Yedekleme ve doğrulama işlemi gerçekleştirildikten sonra eski yedekleme dosyalarını silin. Yedekleme veya doğrulama başarısız olursa, hiçbir yedekleme dosyası silinmez. Bu varsayılandır.

 

@Compress Yedeklemeyi sıkıştırın. Herhangi bir değer belirtilmezse, sys.configurations’daki yedek sıkıştırma varsayılanı kullanılır.

Değer Tanım
NULL Sys.configurations’da yedek sıkıştırma varsayılanını kullanın. Bu varsayılandır.
Y Yedeklemeyi sıkıştırın.
N Yedeklemeyi sıkıştırmayın.

 

@CopyOnly Salt kopya yedekleme gerçekleştirin

Değer Tanım
Y Salt kopya yedekleme gerçekleştirin.
N Normal bir yedekleme gerçekleştirin. Bu varsayılandır.

@ChangeBackupType Fark veya işlem günlüğü yedeği gerçekleştirilemiyorsa yedekleme türünü değiştirin. Kullanımını tavsiye etmiyorum backuplarımızı ayrı ayrı aldırdığımız için

Değer Tanım
Y Yedekleme yapılamıyorsa yedekleme türünü değiştirin.
N Yedekleme yapılamıyorsa yedeklemeyi atlayın. Bu varsayılandır.

@Description Yedekleme için bir açıklama girin.

@Encrypt Yedeklemeyi şifreleyin.

Değer Tanım
Y Yedeklemeyi şifreleyin.
N Yedeklemeyi şifrelemeyin. Bu varsayılandır.

@BackupSoftware Üçüncü taraf yedekleme yazılımını belirtin; aksi takdirde, SQL Server yerel yedeklemesi gerçekleştirilir. Yani Yazılımlar tarafından gerçekleşen şifreleme yöntemleridir.

Değer Tanım
NULL SQL Server yerel yedeklemesi (varsayılan)
DATA_DOMAIN_BOOST DELL EMC Veri Etki Alanı Yükseltme
LITES HIZI SQL Server için LiteSpeed’i Arayın
SQLYEDEKLEME Red Gate SQL Yedekleme Pro
SQLGÜVENLİ Idera SQL Güvenli Yedekleme

@EncryptionAlgorithm Şifreleme türünü belirtin.

Value Description
NULL No encryption (the default)
RC2_40 RC2 40-bit encryption (LiteSpeed)
RC2_56 RC2 56-bit encryption (LiteSpeed)
RC2_112 RC2 112-bit encryption (LiteSpeed)
RC2_128 RC2 128-bit encryption (LiteSpeed)
TRIPLE_DES_3KEY Triple DES encryption (SQL Server native encryption or LiteSpeed)
RC4_128 RC4 128-bit encryption (LiteSpeed)
AES_128 AES 128-bit encryption (SQL Server native encryption, LiteSpeed, Red Gate SQL Backup Pro, or Idera SQL Safe Backup)
AES_192 AES 192-bit encryption (SQL Server native encryption or LiteSpeed)
AES_256 AES 256-bit encryption (SQL Server native encryption, LiteSpeed, Red Gate SQL Backup Pro, or Idera SQL Safe Backup)

@NoRecovery Günlüğün kuyruğunu yedekleyin ve veritabanını RESTORING durumunda bırakın. Kullanılmasını önermiyorum.

@URL DatabaseBackup’taki URL seçeneği, SQL Server BACKUP komutundaki URL seçeneğini kullanır.

@AvailabilityGroups  Burası AlwaysOn mimarisinde Bulunan Sistemler için kullanılmaktadır.

Değer Tanım
ALL_AVAILABILITY_GROUPS Tüm müsaitlik grupları
AG1 Kullanılabilirlik grubu AG1
AG1, AG2 AG1 ve AG1 kullanılabilirlik grupları
ALL_AVAILABILITY_GROUPS, -AG1 AG1 hariç tüm kullanılabilirlik grupları
%AG% Adında “AG” bulunan tüm kullanılabilirlik grupları
%AG%, -AG1 AG1 hariç, adında “AG” bulunan tüm kullanılabilirlik grupları
ALL_AVAILABILITY_GROUPS, -%AG% Adında “AG” olmayan tüm kullanılabilirlik grupları

 

Parametreleri öğrendikten sonra artık oluşan joblarımızı inceleyelim ve nasıl kullanabileceğimize hep beraber bakalım.

Öncelikle backup için oluşan joblarımızı inceleyeceğiz.

Oluşan backup joblarımızın içerik olarak aynı olduğunu söyleyebilirim. Bu yüzden tek bir Backup job’ı üzerinden sizlere anlatmaya çalışacağım. Bunun için şu sıralamayı izlemeniz gerekmektedir.

Backup jobımızın propertiesine girdiğimiz zaman bizim için önemli olan 2 alan var bunlar STEP ve Schedules

İlk olarak STEP kısmını inceliyelim.

Steps kısmına geldiğimiz zaman oluşturulan görevi göreceksiniz ve bu görevi inceleyelim.

Karşımıza bu şekilde bir script oluştuğunu göreceğiz ve bu script aslında jobda çalışmasını istediğimiz parametrelerdir. Bu parametreleri yukarıda işimize yarayacak olanları açıklamaya çalıştım.

Biz bu Parametrelerin ne işe yaradığını ve nasıl bir yapı oluşturmanız gerektiğini açıklayacağım. Sql Server’da backup jobı oluşturacağımız için CMD kısmını kaldırıp şu şekilde düzenli yapı oluşturuyoruz.

 

 

 

 

 

 

 

 

 

 

 

 

 

Bu yapıyı oluşturduktan sonra artık içerik kısmını inceleyelim ve bizim için ayarlamak istediğimiz backup programlamasını yapalım.

@Databases parametresini göreceğiz ve bu parametre hangi veri tabanının backup alınacaksa onu buraya oluşturmanız gerekmektedir.

@Directory parametremiz backup dosyasının tutulacağı yeri göstermektedir.

@BackupType parametremiz alınacak olan Backup türünü ifade etmektedir.

@Verify parametremiz ise alınan backup düzgün alınıp alınmadığını gözden geçirir. Verify ile alınan backuplar daha güvenilir diyebiliriz.

@CleanupTime parametremiz alınan backup dosyasının tutulacağı zaman miktarını gösterir.

@CleanupTime parametremiz alınan backup dosyasının tutulacağı zaman miktarını gösterir. Bu miktar saat olarak yazmanız gerekmektedir. Burası önemlidir, sebebine en son yapacağımız FULL, DİFF, TRAN backup joblarının birlikte nasıl kullanacağını ve herhangi bir kriz anında backup dosyalarınızın kaç gün geriye dönebileceğinizi bu parametremiz belirler diyebiliriz.

Burada bilmemiz gereken bir parametremizde bizim kendimizin ekleyeceği @CleanupMode parametremizdir. Burada BEFORE_BACKUP yada AFTER_BACKUP olacağını belirlemeniz gerekir önerim AFTER_BACKUP sebebi yeni Backup işlemi tamamlandıktan sonra silme işlemini gerçekleştirmesidir.

Step kısmında bulunan Parametrelerin ne işe yaradığını öğrendikten sonra jobımızda bulunan Schedules kısmına bakacağız.

Burada önemli olan Steps kısmında BackupType Parametremiz‘de belirttiğimiz FULL, DİFF, TRAN backup türüne göre alınacağı zamanı belirleyebiliriz. Burada Günlük haftalık ve Aylık seçeneklerini görmekteyiz.

Duration kısmında ise Başlama tarihi ve bitiş tarihi seçebiliriz. Bitiş tarihi oluşturmak önermiyorum.

ŞİMDİ yapılması gereken FULL—-DİFF—TRAN backupların joblarının birbiri ile nasıl düzenli çalışacağını bir uygulama yaparak görelim.

Öncelikle backup türlerinin arasındaki bağlantıları bilmeniz gerekmekte geri dönüş işlemlerinde bunları bilmezseniz aldığınız backuplarınız bir manası kalmaz çünkü backuplar birbiri ile ilişkili olmak zorundadır bu konuya çok fazla detaylı girmeyeceğim. Backup türlerimize kısaca değineceğim.

FULL: Tam Yedek manasına gelir full backubımız olmadan geri dönüş işlemi olmaz. Kısaca FULL backup olmadan RESTORE işlemi gerçekleştiremezsiniz. FULL backup olmadan DİFF  ve TRAN backuplarınızla herhangi bir geri dönüş yapamazsınız.

DİFF: FULL backup dan sonra değişen işlem günlüklerinin son halini tutar. DİFF backup FULL olmadan bir işe yaramaz DİFF backup bizim için geri dönüşlerin hızlı olması ve RESTORE işleminde FULL backup üzerine işlem yapılır.

TRAN: TRAN backup zincir yapısına sahiptir bu yapı aslında şu manaya gelir TRAN backuplar sırası ile RESTORE işlemine girer FULL backupdan sonra TRAN Backuplar ile istenilen saat dakikaya dönüş yapmanın tek yoludur.

 

Şimdi bizim içim önemli olan FULL, DİFF ve TRAN backuplarımızın birbiri ile nasıl çalışacağıdır. Benim çalıştığım şirkette backuplarımı şu şekilde tutmaktayım.

NOT: Backuplarım 15 GÜNLÜKTÜR. Bu şu manaya gelir herhangi bir sıkıntı halinde en fazla 15 gün geriye dönüş yapabilirim ve bu 15 günlük geri dönüşte istenilen saat ve dakikaya dönüş yapabilirim manasına gelmektedir.

FULL JOB STEP

EXECUTE [dbo].[DatabaseBackup]
@Databases = 'Databasesname',
@Directory = N ‘//İp Adresi/databasesname_FULL_Klasor’,
@BackupType = 'FULL',
@Verify = 'Y',
@CleanupTime = 336,
@CleanupMode=’AFTER_BACKUP’,
@Compress= 'Y',
@CheckSum = 'Y',
@LogToTable = 'Y'

FULL backup jobımızı haftada 2 gün alıp toplamda 15 günlük süreçte elimizde 4 adet olacaktır.

 

DİFF JOBS STEP

EXECUTE [dbo].[DatabaseBackup]@Databases = 'Databasesname',
@Directory = N ‘//İp Adresi/databasesname_DİFF_Klasor’,
@BackupType = 'DİFF',
@Verify = 'Y',
@CleanupTime = 336,
@CleanupMode=’AFTER_BACKUP’,
@Compress= 'Y',
@CheckSum = 'Y',
@LogToTable = 'Y'

DİFF backuplarımız haftada 4 gün alınması ve 15 günlük planlamada elimizde 8 adet bulunacaktır.

 


TRAN( LOG ) JOB STEP

 

EXECUTE [dbo].[DatabaseBackup]
@Databases = 'Databasesname',
@Directory = N ‘//İp Adresi/databasesname_LOG_Klasor’,
@BackupType = 'LOG',
@Verify = 'Y',
@CleanupTime = 336,
@CleanupMode=’AFTER_BACKUP’,
@Compress= 'Y',
@CheckSum = 'Y',
@LogToTable = 'Y'

TRAN backuplarımız 20 dakikada bir kaydedilip 15 gün boyunca tutulmaktadır.

 

Backup Joblarımızı bu şekilde ayarladığımız zaman NOT bölümündede söylediğim gibi 15 günlük geri dönüş sağlayabiliriz.

Unutmayalım tutulan adet alınan disk boyutlarını belirlemenizi sağlar Joblarımızın çalışıp çalışmadığını Job’a sağ tıklayıp Wiew History kısmından kontrol edebilirsiniz.

Benzer Yazılar

SQL Server DMV ve DMF – 7

SQL Server 5 gün önce

Bu yazıda SQL Server DMV ve DMF Serimizin 7.’sine devam edeceğiz. Bu başlık altında Memory özelinde çokça kullandığımız performans counter’lara göz gezdireceğiz. Ve bu çıktıların ne olduklarına bakacağız. Memory ile ilişkili Performance Counter’lara göz gezdirmek istediğimizde; — Get size of SQL Server Page in bytes DECLARE @pg_size INT, @Instancename varchar(50) SELECT @pg_size = low from master..spt_values where number = 1 and type = ‘E’   — Extract perfmon counters to a temporary table IF OBJECT_ID(‘tempdb..#perfmon_counters’) is not null DROP TABLE #perfmon_counters SELECT * INTO #perfmon_counters FROM sys.dm_os_performance_counters;   — Get SQL Server instance name as it require for capturing Buffer Cache hit Ratio SELECT  @Instancename = LEFT([object_name], (CHARINDEX(‘:’,[object_name]))) FROM    #perfmon_counters WHERE   counter_name = ‘Buffer cache hit ratio’;     SELECT * FROM ( SELECT  ‘Total Server Memory (GB)’ as Cntr, (cntr_value/1048576.0) AS Value FROM    #perfmon_counters WHERE   counter_name = ‘Total Server Memory (KB)’ UNION ALL SELECT  ‘Target Server Memory (GB)’, (cntr_value/1048576.0) […]

INTEGRATION SERVICES KALDIRMA/KURMA ADIMLARI VE SENARYOLARI

SQL Server 6 gün önce

Bu makalede SQL Server Integration Services kurulu olan bir ortamdan servisi kaldırma adımlarından ve bunun mevcuttaki ortama olan etkilerinden bahsedeceğim. Bizler genel olarak kurulum ve bu kurulumların adımları ilgileniriz ancak bugün bunun tam tersi mevcutta SQL Server 2019 kurulu olan bir servisi kaldıracağız. Denetim masası (Control Panel) > Programs > Programs and Features Adımları ile mevcut ortamda kurulu olan uygulamaları görüntüledikten sonra “Microsoft SQL Server 2019” tıklayarak “Uninstall/Changes” tıklıyoruz. Görsel – 1 Karşımıza SQL Server ne yapmak istediğimizi soruyor biz bir servis kaldıracağımız için “Remove” diyerek ilerliyoruz. Görsel – 2 Yapmak istediğimiz işlemi hangi Instance üzerinde yapacağımızı soruyor, ben “TEST” Instance da yapacağım seçerek ilerliyorum. Görsel – 3 Şimdide Bu Instance üzerinde neyi kaldırabileceğimi bana gösteriyor, ben Integration Services kaldıracağım için Shared Features menüsü altında bulunan Integration Services seçiyorum burada unutulmaması gereken bir şey var eğer Shared Features altında bulunan bir service kaldırır veya kurarsanız bundan sadece seçili olan Instance […]

VISUAL STUDIO SSIS PACKAGE TOOLS

ETL 4 hafta önce

Bu makalede Visual Studio ile hazırlayacağınız SSIS packages kullanılan araçlardan ve birkaç farklı bakış açısından bahsedeceğim. Birçok işte olduğu SSIS package hazırlarken de kendi kurum ve kurumlarımızın ihtiyaç ve planlarına yönelik olarak yapabileceklerimizi kendimize göre ayarlayabiliriz. Görsel – 1 Bir Execute SQL Task ile yapabileceklerimizden birkaç tanesine birlikte bakalım. Görsel – 2 SQLSourceType kısmında kullanabileceğimiz 3 farklı seçenek bulunmaktadır, Direct input: SQL sorgusunu doğrudan SQLStatement kısmına yazabilmemizi sağlar. File connection: Kaydetmiş olduğunuz bir SQL komut dosyasınızı FileConnection ‘dan direk sorgularınızın çalıştırılmasını sağlar. Variable: Variables olarak belirlemiş olduğunuz ve bu menüden kontrolünü sağlayarak görüntüleyebileceğiniz bir değişkeninizden SourceVariable kısmında belirterek çalıştırılmasını sağlar. Belirlemiş olduğunuz SQLSourceType ile SQL Task Execute olduğunda direk bir sonraki adıma geçebilir veya buradaki çıktınızı “Result Set” kısmında bir değişkene de atıyabilirsiniz. SSIS Toolbox içerisinde bulunan Containers sekmesinden farklı Container çeşitleri bulunmaktadır bunlardan biri olan For Loop Container ‘a göz atalım.   Görsel –3 Görsel – 4 Görsel – […]

0 Yorum

Yorum Yaz

Rastgele