4 Ekim 2013 Cuma

ARCHIVELOG moda geçiş ve BACKUP yapılandırması

Oracle veritabanında 2 çeşit bakup türü vardır.Online ve Offline alınan backuplar. Offline alınan backuplarda olası bir durumda sistemi son ana döndüremeyip veri kayıplarına neden olabiliriz.O yüzden "sıfır veri kaybı mantığı ile yola çıkacaksak, muhakkak online backup almak durumundayız. Bu da db imizin ARCHIVELOG mod da çalışmasıyla mümkündür. Archivelog modda yapılan işlem aslında basit anlatımla, db üzerinde yapılan değişiklikler, redolog dosyaları üzerinde tutulur.Bu tutulan logların belli aralıklarla arşivlendiği moda, ARCHIVELOG mode deniyor.Veritabanını ARCHIVELOG moda aldığımızda db üzerinde ayrıca bir kaynak harcayacağından, db imizde yavaşlama olabilir. Güçlü bir sistem altyapısına sahip isek, bu yük hissedilmeyecektir. Db' imizin ARCHIVELOG modda olup olmadığını şu şekilde sorgulayabiliriz. 
SELECT LOG_MODE FROM v$database;Sonuç ARCHIVELOG değil de NOARCHIVELOG iseARCHIVELOG moda almak için aşağıdaki adımlar sırasıyla uygulanır;1) shutdown immeidate                                                    //db i kontrollü kapatırız   Db imizi ARCHIVELOG moda aldıktan sonra işimiz bitmiyor. Hemen rman backup için backup planı çıkarıyoruz. Kurumumuza uygun olan backup planını belirleyip, bunu sisteme uyarlamanız gerekiyor.sonuç: ARCHIVELOG ise kullanılıyor, değil ise NOARCHIVELOG olarak görülecektir.Eğer NOARCHIVELOG modda ise şu şekilde ARCHIVELOG moda alabiliriz.2) startup mount                                                                   //mount durumuna alırız3) alter database archivelog / alter database noarchivelog         //archivelog moduna alırız4) alter database open                                                           //db imizi açarız.bu genelde küçük boyutlu ve kısa sürede bitecek databaselerde her gün full backup şeklinde, çok daha büyük database lerde haftanın ilk günü full, sonraki günleride incremental backup şeklinde alabiliriz.    Şimdi burada , her gün full backup alan ve bu backupların son 5 ini disk üzerinde tutan bir backup senaryosunu yapılandıracağız.


Öncelikle sisteme bağlanıp RMAN scriptimizi yazıyoruz.
login as: root
root@192.168.1.1's password:  *****
 [root@oracle01~]# su – oracle
[oracle@oracle01~]# cd /oracle/scripts/
oracle@oracle01~]#vi rman_backup_todisk_full.sh
rman target / <<EOF
run {
backup database filesperset 4 format "/backup/DB_%d.%s.%t.%p.dbf";
sql 'alter system archive log current';
backup format '/backup/ARC_%d_%s_%t_%p.arc' archivelog all not backed up 1 times skip inaccessible;
delete noprompt archivelog until time 'sysdate-7' backed up 1 times to device type disk;
backup format '/backup/CTL_%s_%t_%p.ctl' current controlfile;
}

  Önce ESC tuşu sonra
  :wq! İle dosyamızı kaydedip çıkıyoruz.

Sıra geldi scriptimizi crontab’a eklemeye.

oracle@oracle01~]# crontab -e
Karşımıza açılan editöre aşağıdaki komut satırını ekliyoruz.
#backuplar                                                                         // job başlığı
0 18 * * * /oracle/admin/BISAR/scripts/full_rman.sh          // her gün saat 18 de bu job çalışsın

Sıra geldi değişkenlerin ve loğ mekanizmasının atanmasına;
Bunun için de bir sh dosyasına ihtiyacımız var.
oracle@oracle01~]# cd /oracle/admin/MASCADB/scripts/
oracle@oracle01~]# vi full_rman.sh
  

#!/bin/bash
export ORACLE_BASE=/oracle
export ORACLE_SID=MASCADB
export ORACLE_HOME=/oracle/product/11.2.0/db_1
PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export PATH
find /backup/* -mtime +4 –exec rm {} \;                                 // Bugünden önceki 4 backubu siler, bugün ile 5 olacak     
/oracle/admin/MASCADB/scripts/rman_backup_todisk_full.sh > /oracle/admin/MASCADB/scripts/full_rman.tmp

#mailx -s "RMAN: $CUST $SID FULL" $DBA < /masca/log_rman_full_db.tmp



Artık sistemimiz günlük olarak online RMAN backup alacaktır.
Burada bir önemli konuya daha dikkat çekmek istiyorum;
Sistemi ARCHIVELOG moda aldığımız için db sürekli ARCHIVELOG üretecek ve diskte belirli bir yer tutacaktır.

Özellikle Update ve insert işlemlerinin yoğun olduğu işlemlerin yapılması sırasında üretilen archivelog ların boyutu,
normal zamandaki işlemlere göre çok daha fazla olacak ve diskte daralmalara sebep olacaktır. Eğer diskte yerimiz yeterince yok ise, sistemin durması bile kaçınılmaz olacaktır. Bunu önlemenin yolu, işlem sırasında 
şu adımları izlemektir;


>root
>password :\..../

>su - oracle

export ORACLE_SID=MASCADB

>rman
RMAN>connect target/
RMAN>list archivelog all;
RMAN>delete noprompt archivelog until time 'sysdate-1';  ya da                                   
RMAN>delete noprompt archivelog all;      //tamamı
RMAN> crosscheck archivelog all;          
RMAN> delete expired archivelog all;       

Hiç yorum yok:

Yorum Gönder