8.Monitoring and Tuning RMAN
Elimizde olan bir veritabanının kurtarma senaryosu mümkün olan en kısa zamanda yapılmalıdır. Dolayısıyla backuptan dönme işlemlerinden performans önem teşkil etmektedir. Disklerimiz, tape driverlarımız, memory alanımız ne kadar düzgün yönetiliyor ne kadar performanslı ise backup o kadar hızlı alınır. Yani backup hızlansın istiyorsak bir disk daha almalıyız. Perfoamansın %70’lik kısmı hardware solution’dır. Elimizdeki cihazlarla alakalı çözümlerdir.
Parallelization of Backup Sets
Elimizde bir tape backup alma senaryosu var. 3 kafalı bir tape driverımız var. Her bir tape driver için birbirinden farklı 3 tane kanal açtık. (MML) ( Tape driverlar işletim sistemine mount edilir) Elimizde 9 tane datafile var ve bunları ayrı kanallardan ayrı backup piecelerine gönderiyoruz. Amaç tamamiyle pararellizm ve backup’ı olabildiğince hızlı şekilde almak. Bunları karışık yerleştirmesinin nedeni ise boyutlarından kaynaklanmaktadır. Kanalların açılma amacı mümkün olan eşit parçalarda dataları gönderip gerçek anlamda backup’ı üçe bölmektir.
RMAN> RUN { 2> ALLOCATE CHANNEL c1 DEVICE TYPE sbt; 3> ALLOCATE CHANNEL c2 DEVICE TYPE sbt; 4> ALLOCATE CHANNEL c3 DEVICE TYPE sbt; 5> BACKUP 6> INCREMENTAL LEVEL = 0 7> (DATAFILE 1,4,5 CHANNEL c1) 8> (DATAFILE 2,3,9 CHANNEL c2) 9> (DATAFILE 6,7,8 CHANNEL c3); 10> SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT'; 11> }
3 tane kanal açtık. INCREMENTAL LEVEL = 0 ile full backup aldık. Session Size diye bir kavramda vardır. Bunun yaptığı iş ise datafile’ların hepsini bir dosya haline getirir sonra 3’e böler. Ama bunun kötü yanı ise bir datafile bir zarar gördüğünde ise backup’ın hepsi zarar görür ve işimize yaramaz. Ama channel backuplarda bir zarar olursa sadece o zarar görür diğerleri kullanımda olur.
Monitoring RMAN Sessions
V$SESSION :Çalışan session var mı ona buradan bakarız.
V$PROCESS : O session ne yapıyor onu görüntüler.
SQL> COLUMN CLIENT_INFO FORMAT a30 SQL> COLUMN SID FORMAT 999 SQL> COLUMN SPID FORMAT 9999 SQL> SELECT s.sid, p.spid, s.client_info 2 FROM v$process p, v$session s 3 WHERE p.addr = s.paddr 4 AND CLIENT_INFO LIKE 'rman%';
RMAN sessionları aktif olarak çalışıyorsa; backup alınıyor olabilir, restore yapılıyor olabilir vb.
Monitoring RMAN Job Progress
SQL> SELECT OPNAME, CONTEXT, SOFAR, TOTALWORK, 2 ROUND(SOFAR/TOTALWORK*100,2) "%_COMPLETE" 3 FROM V$SESSION_LONGOPS 4 WHERE OPNAME LIKE 'RMAN%' 5 AND OPNAME NOT LIKE '%aggregate%' 6 AND TOTALWORK != 0 7 AND SOFAR <> TOTALWORK;
20 sn’yi geçen bütün işlemler buraya kayıt olarak düşer. Backup ne kadar sürdü ne kadarı tamamlandı şeklinde yüzde kaçını tamamlamış görebiliriz. Uzun sürem işlemlerin ne kadarını yaptı SOFAR azalır TOTALWORK artar.
Interpreting RMAN Message Output
Kodu yanlış yazarsak bir hata verir ve bunun yerine ne yazılacağını söyler.
Using the DEBUG Option
rman target / catalog rman/rman debug trace trace.log
rman session’ında yapılan başarılı başarısız her işlem kaydedilir. Sürecin neresinde komut patladı bulabiliriz. Control file’lar 7 gün saklanır. 7 günden sonra eski bilgiler ezilmeye başlanır. Geçen al aldığımız backup’ı dönebilmek için CATALOG START WITH ve ya CATALOG BACKUPPIECE komutları backup dosyalarını belirtir ve control file’a tekrar yazdırır.
• Alert log’larda bunları görülebileceği konusu tartışılır. Alert logda çıkan sonuçlar daha sistematik hatalardır. Database daha çok etkisi olan hatalardır. Control file backup almak istediğimizde lokasyona yazma yetkimiz yoksa bu alert loga düşecektir.
• Oracle server trace file: Kendi sessionımızı değil rman’de açılan bütün sessionları trace et diyoruz Oracle’a. Oracle takip ediyor. Debugla yaparken kendimizi trace edeceğinizi belirtiyoruz ( rman’e login olurken bu session’ı debugla aç diye) ancak burada oracle server trace file’da hangi sessionların trace edileceğini biz söylüyoruz.
• sbtio.log file: Tape driverlarla alakalı okuma-yazma problemi olursa örneğin bir tape yerinde olmasına rağmen üzerine yazamıyorsak onunla ilgili kayıtlar buraya düşer. Defaultta yok tape driver’a yazmaya kalkıştığımızda yaratılır.
Interpreting RMAN Error Stacks
Aşağıdan yukarı doğru yorumlanır. Additional durumları atlayabiliriz bunlar ekstra bilgilerdir. İlk hatamız dosya ya da dizin yok hatasıdır. Dosya yaratmak istiyoruz ancak o kanalda öyle bir yer yok diye hata alıyoruz. Temel hatayı en alttan yukarı doğru okuyarak buluruz.
Tuning RMAN
RMAN’de BACKUP ve RESTORE işlemleri için genelde yapılan; bir sistemde read-write ne kadar hızlı ise backup o kadar hızlı alınır. Konfigürasyon hataları backup’ı yavaşlatır.
Dataları kopyalarken ( blokları backup’a alırken) içindeki düzgün mü değil mi diye kontrol etmekte performansa etki eder. Backup’ı yavaşlaştır tutarlılığı arttırır.
RMAN Multiplexing
Elimizde MAXOPENFILES ve FILESPERSET olmak üzere iki parametre var. Bir seferde açılıp okunmaya başlanacak file sayısı MAXOPENFILES’dır. 4 datafile var. Bir setin içerisinde kaç tane dosya bulunacak ( max ) ise FILESPERSET ile belirlenir. MAXOPENFILES ve FILESPERSET Multiplexing Level ( Aynı anda yapılabilecek işlem sayısı) ile doğru orantılır. İkisinin minimum değeridir. Level değeri 4 ve 4’de küçük ise memory için ayrılan parçalar 1’er Mb olur. Level 4-8 arası olursa 512 kb’lik okuma -yazmalar yapacaktır. Level 8’den büyük olursa 128 kb’lık parçalar halinde okumaya başlayacak. Bizim için fark eden durum ise bir diskin üzerine aynı anda yazacak proses sayısının sabiti olmasıdır. Multiplexing Level değerini yükseltmek için diskin de kapasitesi olması gerekir. Disk sayımız, paralel prosesler artarsa ya da diskin kapasitesi, yapısı değişirse o zaman Multiplexing Level yükseltilmeye çalışılır.
Allocating Disk Buffers: Example
4’ünü de gruplayıp diske yazıyor. Kendi diskine göre en efektif kullanım yukarıdaki şekildedir. Arka planda çalışma şeklidir. Özelikle bozulmadığı sürece düzenleme ihtiyacı duymaz.
Allocating Tape Buffers
Tape’ye backup alıyorsak block size’larımız 256 kb oluyor. Backup alabilmek için aldığı memory’i Large Pool’dan alıyor. ( Diske backup alıyorsak her zaman large pool). BACKUP_TAPE_IO_SLAVES= false olursa PGA’den alacaktır.
//Sertifika sınav sorusudur.
Comparing Synchronous and Asynchronous I/O
Sekronize sistemlerde önce data read yapılacak large pool’a yazılıyor. Sonra disk’e yazılıyor. Diske ya da tape’ya yazılma süreci içinde bir sinyal vererek işinin bittiğini söylüyor. Bir iş bitmeden ikinci bir iş başlamıyor. Yazma prosesi bitene kadar okuma prosesi bekliyor. Ancak bu sistem eskidir yeni sistemler asenkron çalışıyor.
Comparing Synchronous and Asynchronous I/O
Belirli bir parçayı okumaya başladınız sonra yazmaya başladığınız an 2. parça okumaya başlıyor. Bir proses okurken diğeri sürekli yazıyor olacak ve bekleme süresi olmayacak.
Monitoring RMAN Job Performance
– V$BACKUP_SYNC_IO : Çok fazla kullanabileceğimiz şeyler yoktur.
– V$BACKUP_ASYNC_IO : Şuana kadar alınan bütün Backuplar ve o süre boyunca yapılan i/o kayıtları burada vardır.
Asynchronous I/O Bottlenecks
Synchronous I/O Bottlenecks
Channel Tuning
Tuning the BACKUP Command
Tuning RMAN Backup Performance
Setting LARGE_POOL_SIZE
Tuning RMAN Tape Streaming Performance Bottlenecks