Kategoriler
ORACLE

Oracle 11g: DBA-2|| Monitoring and Tuning RMAN

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

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.

rman

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

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

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

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

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

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

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

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir