14 Aralık 2015 Pazartesi

RMAN performans ipuçları

Rman backup ve restore işlemleri kendi içinde farklı faz ve bileşenlere ayrılır. Herhangi bir fazdaki en yavaş RMAN job'ı bottleneck olarak tanımlanır. RMAN tuning işlemlerinin temel amacı ise bu jobı tanımlayıp, RMAN komutları, initialization parametreleri ve backup alınan fiziksel mediadaki ayarları değiştirerek performansı arttırmaya dayanır.

Basic Concepts of RMAN Performance Tuning
RMAN performansını nasıl arttırabileceğimizi anlamak için öncelikle RMAN backuplarının nasıl yaratıldığı konusunda fikir sahibi olmalıyız.
RMAN client, tüm backup ve restore işlemlerini gerçekleştiren database server sessionlarını yönetir. RMAN client backup, restore ve recovery gibi işlemleri kendi başına gerçekleştiremez, RMAN ile bir target database'e bağlandığımız zaman RMAN target instance üzerinde server sessionlar allocate eder ve işlemleri gerçekleştirir.
RMAN channel bir database server sessionına karşılık gelen data akış yolu olarak tanımlanabilir. Channel datayı PGA'dan okur, işler ve bu datayı backup device'ına yazar.
Read phase
Data bloklarının RMAN channel tarafından input I/O buffera okunduğu fazdır.
Allocation Of Input Disk Buffers
Database dosyaları ASM, Alternatif bir volume manager veya file sistem tarafından yönetiliyor olabilir. Backup tuning, database dosyalarının ASM ile yönetilip yönetilmediğine bağlı olarak değişir.
Allocation, RMAN'in multiplexing özelliğinin kullanılıp kullanılmadığına bağlı olarak değişir. Multiplexing RMAN'in birden çok datafaileden aynı anda okuma yaparak tek backup piece'e yazmasıdır. Image copy backup asla bu özelliği kullanmaz. Level of multiplexing, anlık olarak kaç dosyadan okuma yapılıp aynı backup piece'e yazılacağını belirler.
Number of files in each backup set : FILESPERSET parametresi ve bir rman channel tarafından okunabilen dosya sayısından minimum olanı bu değeri belirler. FILESPERSET'in default değeri 64'tür.
The level of multiplexing : MAXOPENFILES ve Number of files in each backup set değerlerinden daha küçük olanı bu değeri belirler. MAXOPENFILES'ın default değeri 8'dir.

Bir örnekle açıklayacak olursak; bir rman channel ile 12 datafile'ın backup'ını alıyor olalım. Number of files in each backup değeri 4, ve maxopenfiles değeri 8 olsun. Bu durumda levelof multiplexing değeri 4 olacaktır ve rman channel aynı anda 4 farklı datafiledan okuduğu blokları tek backup piece'e yazabilecektir.
Multiplexing özelliğinin, Input disk buffera nasıl etki ettiğini aş. tablodan inceleyebiliriz. 
Aşağıda gösterilen örnekte ise bir RMAN channel tarafından 4 datafile backup'ı alınıyor. MAXOPENFILES ve FILESPERSET değerleri 4 olarak set edilmiş ve dolayısıyla level of multiplexing değerimiz 4 oluyor. Bu durumda her datafile için 4 MB'lık bir buffer size allocate ediliyor. Allocate edilen toplam Input disk buffer ise 16MB'a denk geliyor.


Eğer bir channel ASMde depolanan dosyaların backupını alıyorsa number of input disk buffers ASM disk grupta yer alan fiziksel disk sayısına eşittir. Backup'ı alınan datafileın store edildiği disk grupta 16 fiziksel disk bulunuyorsa channel 16 input buffers allocate eder.

Synchronous and Asynchronous Disk I/O
Channel diskten okuma veya yazma yaparken I/O işlemi Synchronous veya Asynchronous olabilir. Disk I/O synchronous ise server process aynı anda yalnızca bir işlemi gerçekleştirebilir. Asynchronous I/O ise server process I/O işlemini başlattıktan sonra, bu işlemin tamamlanmasını beklerken başka işleri gerçekleştirebilir.
ASM diskgruptan okuma yapıyorsak, Asynchronous disk I/O kullanmalıyız. Yine aynı şekilde raw device üzerinden okuma yapıyorsak da asynchronous disk I/O kullanmalıyız.

Disk I/O slaves
Asynchronous I/O'nun desteklenmediği işletim sistemlerinde database tarafından özel I/O slave processleri kullanılır. Dinamik olmayan DBWR_IO_SLAVES parametresiyle değeri ayarlanabilir. Default değeri 0'dır. Asynchronous I/O disable durumda ise RMAN DBWR_IO_SLAVES parametresinin herhangi bir nonzero değeri için 4 slave process allocate eder.
I/O slave kullanılmaya çalışıldığında database aş. gibi davranır;
LARGE_POOL_SIZE parametresi set edilmiş durumda ve DBWR_IO_SLAVE parametresi naonzero bir değere sahip ise database large pooldan gerekli memory alanını almaya çalışır. Eğer bu alan yeteri kadar geniş değilse o zaman alert loga error kaydedilir, database shared pooldan memory kullanmaya çalışmaz ve asynchronous I/O kullanılmaz.
LARGE_POOL_SIZE parametresi set edilmemiş veya 0'a set edilmiş durumdaysa database shared pooldan memory kullanmayı dener.

RATE Channel Parameter
Allocate veya Configure Channel komutları kullanılırken RATE parametresi kullanılarak bir channel'ın okuyacağı bytes/second değeri verilebilir. Rman'ın bandwith'i doldurup online performansı düşürmemesi için bu parametre kullanılır.

Copy phase
Datanın input bufferdan output buffera kopyalandığı ve bloklar üzerinde ek processlerin gerçekleştirildiği fazdır. Write Phase; RMAN channels data bloklarını output bufferdan storage mediaya yazar. Burda bahsedilen ekstra işlemler; validation, compression, encryption işlemlerinden biri olabilir.

Write Phase
Data bloklarının output bufferdan, storage mediasına yazılması işlemi bu aşamada yapılır. Bu aşamada kullanılan media tipinin disk veya tape olmasına göre aş. gibi değişiklikler gözlemlenir.

Write Phase For SBT
SBT'ye backup alınırken, RMAN'den media managera doğru byte akışı başlar  ve bu byte streamine unique bir isim verilir. Media manager streamin nerede nasıl depolanacağı hakkında tüm bilgiye sahiptir.

RMAN Component Of Write Phase For SBT
Buffer allocation, slave processes ve synchronous / asynchronous I/O write fazında performansı etkileyen faktörlerdir.

Allocation of Tape Buffers
Tape üzerine backup alıyor yada tapeden restore işlemi yapıyorsak; database default olarak her rman channel için 4 buffer alanı allocate edecektir. Tape I/O buffer ise platforma bağlı olarak değişmektedir. ALLOCATE CHANNEL yada CONFIGURE CHANNEL komutunu kullanırken PARMS ve BLKSIZE parametreleri ile buffer size değerini değiştirebiliriz.













Tape I/O slaves 
Rman tape bufferı SGA veya PGAdan allocate eder. Bu durum I/O slave kullanılıp kullanılmamasına bağlı olarak değişir. BACKUP_TAPE_IO_SLAVES parametresi true olarak set edildiyse Rman bufferı SGA'dan allocate eder. LARGE_POOL_SIZE parametresi set edilmiş durumdaysa rman bufferı lorge pooldan allocate edecektir. BACKUP_TAPE_IO_SLAVES parametresi false olarak set edildiği takdirde rman bufferı PGA'dan allocate edecektir.
I/O slaves kullanıyorsak LARGE_POOL_SIZE parametresini set ettiğimiz takdirde bufferı large pooldan allocate edecektir.

Synchronous and Asynchronous I/O
Bir SBT channel tape'e okuma veya yazma yaparken I/O daima synchronousdur. Tape I/O işlemi için her channel bir server processe karşılık gelir ve channel process diye adlandırılır.
















İşleyiş şu şekildedir;
Channel process tape bufferı besler.
Channel process media manager layerını harekete geçirir ve bufferdaki bloklar yazılır.
Media manager Channel processe yazma işleminin başarılı olduğuna dair sinyal gönderir.
Ve sonraki buffera geçilir.

Media Manager Component of Write Phase for SBT

Network Throughput, tape device network üzerinden erişip data transferini gerçekleştirdiğimiz bir cihaz ise hızlı bir bağlantı üzerinden backup işlemlerini gerçekleştirmek performans açısından önemlidir.

Native transfer rate, sıkıştırma olmadan tape'e yazım hızıdır. Bu hız backup rate'in üst limitini gösterir.

Tape Compression, Tape device iyi bir sıkıştırma seviyesine sahipse backup performansı bundan olumlu olarak fazlasıyla etkilenir.

Physical Tape Block Size, Geniş block size'a sahip tape'ler backup performansını hızlandırır. Fiziksel tape'in block size'ı RMAN tarafından kontrol edilemez.

Write Phase For Disk
Backup işlemlerinde disk kullanıldığı takdirde performansı etkileyen en önemli faktör buffer sizedır. Her channel size'ı 1MB olan  4output buffer allocate eder. Rman diskten asynchronous okuma yapıyorsa diske yazma işlemi de asynchronous olmalıdır.


Rman performansını etkileyen faktörleri RMAN'in çalışma mantığıyla birlikte anlatmış olduk.

İyi çalışmalar..



Referanslar
https://docs.oracle.com/cd/B28359_01/backup.111/b28270/rcmtunin.htm#BABFJAJIhttps://docs.oracle.com/cd/B28359_01/backup.111/b28270/glossary.htm#i432922http://salmandba.blogspot.com.tr/2014/05/rman-backup-performance.htmlhttps://dbasolutions.wikispaces.com/RMAN+Performance+Tuning