Hurriyet

rman etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
rman etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

6 Ekim 2013 Pazar

Oracle Veritabanı: Rman - Backup Sets Nedir?

Backıp set'ler rman'e özel bir bir logical object'dir. Rman tarafından işlenilebilen bu backup türünde backup piece'leri bulunur.

Backup set'ler backup piece'lerin toplamından oluşur. Bu backup piece'ler backup komutu içinde yer alan datafile'ların, controlfile'ların ya da diğer database object'lerinin backup'larından oluşur.

Veritabanında datafile'ların, control file'ların, archived redo logs'larının ve server parameter file'ın backup'ları alınabilinir. Ayrıca diğer backup set'lerin de backup'ları alınabilinir.

-- Genel Backup'ları Alınan Dosyalar
 BACKUP DATABASE;  
 BACKUP TABLESPACE users, tools;  
 BACKUP (SPFILE) (CURRENT CONTROL FILE);  
 BACKUP BACKUPSET 12;  
 BACKUP DATAFILECOPY '/tmp/system01.dbf';

Datafile'ların backup'ları alınırken, veritabanı open veya mount mod'da olmalıdır. Eğer database "archivelog" mod'da ise database'in açık veya kapalı olabilir. "Noarchivelog" modunda ise veritabanının düzgün bir şekilde kapanmış olması gerekir.

Backup Set Compression:

Backup Set'lerin ana özelliğidir. Boş olan data block'larının backup'lanmamasıdır. Image copy'lerde backup set'lerin tersine bütün datafile block'ları bulunur. Bu yüzden de daha büyüktür. Backup set'lerde image copy'lere göre farklı olarak sadece dolu bloklar alınır.


17 Eylül 2013 Salı

Oracle Veritabanı: Rman Best Practises - Rman'de Tavsiye Edilen Aksiyonlar

1- Block Checking Özelliği Açılır.

Block Checking sayesinde corrupt block'ları  fark edebiliriz. Corrupt block'lar bizim data okuyamamıza veya data kaybımıza neden olabilir.

Corrupt Block'lar Logical veya Physical şekilde olabilir. Bu block'lar keşfedildikleri durumda rman'le kolayca düzenlenebilirler.

 SQL>alter system set db_block_checking = true scope=both;  

Scope=both diyerek hem session bazlı hem de kalıcı olarak parametremizi set ederiz. Bu parametrenin set edilmesi demek database'imizin zaman zaman block'ların checksum'ını kontrol etmesi demektir. Bu da bizim sistemimizde performans artışlarına neden olabilir.


2- Rman Backup'ları için Block Tracking Özelliğinin Açılması:

Rman backup'larında en son alınan backup'takine göre değişmiş olan blokların backuplanmasını sağlar. Bu işlemde backup alımındaki zamanı azaltırken yine performansta bir düşüşe neden olabilir.

Rman'de backup set alınırken zaten boş block'lar backup'lanmazken sadece dolu olanlar backup'lanmaktaydı. Bu özelliği kullanırsak bu dolu olanlardan da sadece en son backup'a göre değişmiş olanları backup'larız. Bu sayede backup size'ları önemli oranda değişebilir.

 SQL>alter database enable block change tracking using file '/u01/tracking/change_tracking';

Yukarıdaki komutumuzda Linux işletim sistemizde bulunan bir dosyada saklanmak üzere block tracking işlemini gerçekleştiririz.

3- Log Gruplarının ve Üyelerinin Çiftleştirilmesi ve Archive Log Destination Parametresinin Arttırılması:

Log dosyalarının çoğaltılması işlemleri archivelogların corrupted olması, onların bulunduğu disk'lerin çökmesi durumunda bize geri dönüş için bir seçenek oluşturur.

SQL> alter system set log_archive_dest_2='location=+ARCHLOG2' scope=both;  
SQL> alter database add logfile member '+ARCHLOG2/redo21.log' to group 1; 

Buradaki örneğimizde hem log grubumuzu çoğaltırız hem de gruplarımıza ekstra bir eleman ekleriz.

Log yönetimi 1 ve  log yönetimi 2 yazılarımızdan daha fazla bilgi edinebiliriz.

4- Database Backup'ı Gerçekleştirilirken "Check Logical" Paramtresi Kullanılmalı:

Bu parametre aşırı önemlidir. Genelde backup örneklerinde çok rastlanılmaz. Bu parametrenin kullanılması mantıksal  olarak block corruption aramasını gerçekleştirir. Böylece aldığımız bir backup'ın başarılı olduğundan emin olabiliriz çünkü backup'lar completed olsalar bile logical corruption içerebilirler.

RMAN>backup check logical database plus archivelog delete input; 

Bu örneğimizde database'in archivelog ile beraber bir backup'ı alınırken backup'ın corruption'lara karşı bir check'i gerçekleştirilir. Ayrıca archivelog'lar backup'landıktan sonra kopyalar diskten silinir ve diskten yer açılır.

5- Backup'ların Test Edilmesi:

Backup'ımızın tamamen kullanılabilir olmasının test edilmesi validate komutuyla olur. "Validate" komutunun birden fazla kullanım yöntemi vardır.

İlkinde Rman'e girip backupları validate edebiliriz.

RMAN> VALIDATE DATABASE;  
   
RMAN> VALIDATE BACKUPSET 22;  
   
RMAN> VALIDATE DATAFILE 1 BLOCK 10;  

İkinci komutumuzu "Backup Validate"'dir. Bu komut'da gerçekten backup alınmaz. Sadece backup alınması durumunda herhangi bir sorunla karşılaşılıp karşılaşılmayacağını kontrol eder.

Hem physical hem de logical block check yapan ve corruption arayan komut aşağıdaki gibidir.

RMAN> BACKUP VALIDATE   
  CHECK LOGICAL   
  DATABASE   
  ARCHIVELOG ALL;  

Üçüncü komutumuz "Restore Validate"'dir. Bu komutumuzda da aldığımız backup'ı geri dönmeden önce  validate ederiz. Bu komutla gerçekten restore etmeyiz. Restore edilmesi durumunda çıkacak sorunlar için kontrol yaparız.

RMAN> RESTORE DATABASE VALIDATE;  
RMAN> RESTORE ARCHIVELOG ALL VALIDATE; 
.
6- Her Backup Piece'de Sadece Bir Datafile Bulunması

Her backup piece'te bir tane datafile bulunması demek  full restore yapmadığımız zamanlar için bize kolaylık sağlar. Partial Recovery yapıldığında database recovery yapılacak datafile'a ihtiyaç duyar. Eğer biz o partial recovery yapılacak datafile'ını birden fazla parçaya bölersek bu durumda recovery daha uzun sürer.

RMAN>backup database filesperset 1 plus archivelog delete input;  

7-  Rman Catalog'unun Yönetilmesi

Rman Backup'ları Catalog'a kaydedilerek yönetilir. Catalog'dan ise merkezi bir politika oluşturabiliriz. (Rman Catalog Nedir?)

Peki Merkezi Olarak Ne Yapabiliriz?
Öncelikle düzenli olarak "Delete Obsolete;" komutunu çalıştırırız. Bu şekilde retention policy dışında kalan backupları sileriz ve yer kazanırız.

RMAN>Delete Obsolete;  

Rman backup'ları crosscheck edebiliriz. Crosscheck işlemi rman catalog ile controlfile kayıtlarını karşılıklı olarak eşler. Eğer arada eksik varsa o kayıt  expired olarak isimlendirilir. Expired backup'ları aşağıdaki komut ile silebiliriz.

RMAN> crosscheck backup;  
RMAN>  delete expired backup;  

Retention Policy to Redundancy seçeneğini ayarlayarak backup'ların tutulma süresini ayarlayabiliriz.

 RMAN>show retention policy  
 RMAN>CONFIGURE RETENTION POLICY TO REDUNDANCY 2;  

Ancak bu ayarı ayarladıktan sonra mutlaka control file record keep time parametresini de set etmeliyiz. Yoksa bazı backup'ların redundancy durumu geçebilir. O yüzden iki ayarında birbiri ile aynı olduğunu kontrol etmeliyiz.

SQL> alter system set control_file_record_keep_time=21 scope=both;


8- Recovery'nin Test Edilmesi:

Yukarıda 5. adımda restore, backup  normal olarak database'in validate edilmesinden bahsetmiştik. Bir başka doğruluk kontrolünü recovery aşamasında da yapabiliriz. Bu işlemde de gerçekten recovery yapılmaz. Sadece yapılması durumunda neler olacağını inceler.

 RMAN> recover database test;  

9- Controlfile Autobackup'ının Set Edilmesi:

Bu aksiyonda controlfile'ın kaybedilmesinin önüne geçilebilir. Controlfile'ın backup'ı backup işleminin sonunda gerçekleştirilir.

 RMAN> configure controlfile autobackup on;  





13 Eylül 2013 Cuma

Oracle Veritabanı: Rman'de Backup'ların Alınması

Daha önceden rman'de ayarların nasıl yapıldığından bahsetmiştik. Bu konfigürasyon düzenlerinde backup'lar alınırken bakılacak default opsiyonlar bulunmaktadır. Örneğin alacağımız backup'ın backupset ya da image copy olması veya backup'lar alınırken kaç paralel çalışılacağı gibi ayarları set edebiliriz.

Full Backup Nasıl Alınır?

Full database backup'ı "backup database" denilerek alınır. Burada bahsettiğimiz full database backup'ın içinde archivelog'lar bulunmamaktadır. Aşağıdaki örnekte "default behavior" yani standart aksiyon olarak alınan "image copy" backup özelliği "override" yani ezilmektedir.

 RMAN> BACKUP AS BACKUPSET DATABASE  

Eğer direk backup database dersek default olarak ne belirlendiyse, bu durumda image copy olarak backup alır. 

 RMAN> BACKUP DATABASE  

Full Backup ve Archivelog Backup'ın Alınması:

Bu komutla birlikte database'imizin image copy olarak hem datafile'larının hem de archivelog'larının backup'larını alırız.

BACKUP DATABASE PLUS ARCHIVELOG;  

"Plus Archivelog"  ile Rmande  aşağıdaki işlemler otomatik olarak yapılır.

1- Alter system archivelog current; --çalışır.
2- Backup Archivelog all -- çalışır.
3- Backup komutundaki dosyalar backup'lanır.
4- Alter system archive log current; -- çalışır.
5- Backup sırasında yaratılmış archivelog'ların backup'lanması gerçekleştirilir.

Bir Tablespace'in Backup'ının Alınması:

BACKUP TABLESPACE HR;  


Backup'lara Tag Name Atanması:

Çok fazla alınan backup alınan ortamlarda backup'ların düzenli tutulması ve kolay yönetilebilmesi için backup'lara isim verilmesini sağlar. 

BACKUP AS BACKUPSET TAG 'HR_BCK' TABLESPACE HR;  

veya 

BACKUP  TAG 'HR_BCK' TABLESPACE HR;  


Backup İsimlendirme Format'ının Değiştirilmesi:

Rman konfigürasyon ayarları içinde backup'ları isimlendirmeyle ilgili bir seçenek vardır.  Bu seçenek ile birlikte backup'larımıza isim verebiliriz kendi isteklerimize uygun olarak

RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT  "+ASM/backup/rman/backup_%u_%s_%p" MAXPIECESIZE 2048 M; 


Backup format spec olarak belirtilen bu %u,%s,%p gibi ayarları  "http://docs.oracle.com/cd/B28359_01/backup.111/b28273/rcmsubcl010.htm" adresinden görebiliriz.

Rman Backup'ın Compress Edilmesi: 

Backup'larımızı backup set alarak size'ını küçülttükten sonra bu backup'ları compress ederek daha fazla yer kazanabiliriz. Bunun için komutlarımızda "AS COMPRESSED" ifadesini kullanırız.

 BACKUP AS COMPRESSED BACKUPSET DATABASE PLUS ARCHIVELOG;  

Backup'ların Compress edilmesinin bir kötü yanı performansta düşüş yaşatmasıdır. Compress edilirken daha fazla kaynak kullanılacağı için performansta azalma yaşanabilir. Bu durumda her zaman parallelism kullanılabilinir.

Archived Log'ların Backup'larının Alınması ve Depolanması :

Rman sayesinde archivelog'lar direk olarak tape'e alınabilinir. Eğer backup komutumuzda "Delete input" şeklinde bir opsiyon belirtirsek, rman archivelog'ların bir kopyasını alıp archivelog'ları backup'ladıktan sonra bu kopyayı siler.

RMAN> BACKUP ARCHIVELOG ALL DELETE INPUT; 

Sonuç olarak backup'lar alındıktan sonra backup'lanmış archivelog'ların bulunmasını ve yer kaplamasını istemiyorsak bu komutu kullanırız.

Bütün Online Redo Log'ların Backup'lanması:

Her backup'ın öncesinde "Alter system archive log current" dersek  sistem o anda kullanılan log'u switch edip kullanılan log'u backup'lar.

 Alter system archive log current;
















11 Eylül 2013 Çarşamba

Oracle Veritabanı: Full ve Incremental Database Backup'ları

Rman'de backupları ya full database olarak alabiliriz ya da incremental database olarak alabiliriz.

Full alinan bir database backup'ında bütün kirli(used) data block'larının backup'ı alınır. Eğer full backup image copy olarak alınırsa bütün içerik aynen kopyalanıp yapıştırılır. Yani işletim sistemi komutlarıyla bile yapılabilinir.  Eğer backup set olarak alınsaydı bu full database kullanılmamış, içinde veri olmayan block'ları backup içerisine eklemezdi. Bu davranış rman backup set'lerinin default hareketidir. Backup set'lerinin boyut olarak küçük olmalarının nedeni budur. Bu yüzden daha hızlı restore edilirler.

Incremental olarak alınan bir backup' ise en son alınan backup'tan itibaren değişen block'ların kopyasını alır.
Incremental Backup'lar her zaman backup set olarak tutulurlar O yüzden genelde daha küçüktürler. Rman sadece datafile'ların incremental backuplarını alabilir,archive redo log'ların ya da diğer dosyların incremental backuplarını alamaz.


Boyut olarak Sıralanırlarsa:

Full Database Image Copy > Full Database Backup Set => Incremental  Level 0 Backup Set > Incremental Level 1 Backup Set

Oracle Veritabanı: Rman Nedir? - Rman Konfigürasyonları

Bu yazının öncesi buradadır. - Oracle Veritabanı: Rman Nedir? - Rman Recovery Catalog Nedir?


RMAN Konfigürasyonu - Rman Ayarlarının Belirlenmesi

Rman ayarlarının belirlenmesi önemli bir konudur. Var olan ayarları "show all;" komutuyla rman'de görebiliriz. Bu ayarlar arasında backupların ne kadarının tutulması gerektiği, standart backup alma aracının ne olduğu veya control file autobackup'ının alınıp alınmaması gerektiği gibi ayarlar vardır.

Örnekler:

Bütün ayarların görülmesi:

SHOW ALL;

RMAN configuration parameters for database with db_unique_name PROD1 are:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 3 DAYS;
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE SBT_TAPE TO '%F'; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE 'SBT_TAPE' PARALLELISM 2 BACKUP TYPE TO COMPRESSED BACKUPSET;
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE SBT_TAPE TO 1; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE SBT_TAPE TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' PARMS 'ENV=(OB_DEVICE=tape1)';
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/disk1/oracle/dbs/snapcf_ev.f'; # default

Bütün disk backup'ları /tmp klasörünün altına %U olarak yani unique olarak yazılsın.

 RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/tmp/%U';

Rman controlfile autobackup'ının alınması:

 RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;   

Controlfile autobackup'larının diskte belirli bir klasör altına alınması:

 RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT   
      FOR DEVICE TYPE DISK TO '/cfilebackups/cf%F';  

Rman'in belirli bir süre boyunca bütün backupları tutması:

 RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;

Her backuptan 3 tane farklı versiyon bulunması ve korunmasının sağlanması:

RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY 3;  

Eğer default backup yeri FRA(Flash Recovery Area) ya da başka bir yer ise
Disk yerine default backup yerine backup alınmasını sağlar:

 RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT CLEAR; 

Tape'lere alınan backup'ların 2 paralel çalışmasını sağlar.

 RMAN> CONFIGURE DEVICE TYPE sbt PARALLELISM 2;  

Rman'de Ayarlar Nasıl Değiştirilir?

Rman de varolan bir ayarı değiştirmek için komutun başına configure ifadesi konur, sonrada ayar adı yazılır. Ayar adı yazılırken içeride istenen değişiklik yapılır. Örneğin backup alınacak yerin değiştirilmesi için:

CONFIGURE DEFAULT DEVICE TYPE TO DISK  

Rman Ayarlarının Görüntülenmesi:

Rman ayarlarıyla ilgili viewlar ve tabloları

 RC_RMAN_CONFIGURATION   
   
 V$RMAN_CONFIGURATION

Backup'ların Lokasyonlarının Ayarlanması:

Aşağıdaki ifadeyle ayarlanabilinir. Tape'e alınması isteniyorsa "disk" "sbt" ile değişitirilir.

 CONFIGURE DEFAULT DEVICE TYPE TO DISK  

Bu ayarlar istenildiğinde "override" edilebilir yani ezilebilinir.

 Backup device type sbt database;

Backup'ların Tiplerinin Ayarlanması:

2 tane backup tipi bulunmaktadır. Backup sets ve Image Copies. Image Copy sadece disk'e alınabilinir. Bu yüzden tape'e sadece backupset alınır.

Image Copy nedir?

Image Copy database'in birebir kopyasıdır.  Rman image copy'leri rman repository'sine yazılırken, database'i kapatıp alacağımız bir copy paste işlemi repositorde yer almaz.

Backup set nedir?

Backup set; backup ile ilgili bilgilerin mantıksal bir yapıda depolanmış halidir. Backup set'ler de birdeb falza datafiles veya archived redologs veya control files veya spfile bilgisi yer alır.

Backup set'ler backup piece denen rman'e özel dosyalardan oluşur. Örnek olarak 10 datafiledan oluşan bir database bir backup içinde bir backup piece'e sığacak şekilde backuplanabilinir.

CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COPY; 


Rman Channel'ları Hakkında:

Rman channel device'tan data'ya giden direk bir veri hattıdır. Server Session olarak tanımlanır. Server Session'da kullanıcı process'lerinin database process'leriyle iletişim kurmasıyla oluşur.

Çoğu Rman backup ve recovery işi server session'lar tarafından halledilir.

Rman Channel'ları ayarlamak için "Configure Parallelism" komutunu kullanırız. Böylece kaynaklarımızı paralel işleyerek işimizi kısaltabiliriz. Eğer komut listesinde özellikle belirtilmemiş ise rman configuration içerisindeki ayarlara bakılarak kanallar ayarlanır.

 CONFIGURE DEVICE TYPE DISK PARALLELISM 2;  
 CONFIGURE DEVICE TYPE DISK PARALLELISM 3; 

Parallelism ayarıyla kaç tane paralel session yaratılacağı ayarlanır.

Örnek Kod:

 RUN  
 {  
  ALLOCATE CHANNEL c1 DEVICE TYPE sbt;  
  ALLOCATE CHANNEL c2 DEVICE TYPE sbt;  
  ALLOCATE CHANNEL c3 DEVICE TYPE sbt;  
  BACKUP DATAFILE 5,6,7;  
 }  


Yukarıdaki örneğimizde "Allocate Channel" ifadesiyle manuel olarak açtığımız bir channel'a isim vermiş oluruz. Örnekte tape'e alınan bir backup için 3 tane; c1,c2 ve c3 adlı kanal oluşturulmuştur. Bu işin otomatik olarak düzenlenmesini isteseydik aşağıdaki parametreyi set edebilirdik.

 RUN  
 {  
  ALLOCATE CHANNEL ch1 DEVICE TYPE DISK;  
  ALLOCATE CHANNEL ch2 DEVICE TYPE DISK;  
  ALLOCATE CHANNEL ch3 DEVICE TYPE DISK;  
  BACKUP   
   (DATAFILE 1,2,3,4    # CH1 datafile'ları yedekler  
   CHANNEL ch1)  
   (CONTROLFILE   
   CHANNEL ch2)       # CH2 controlfile için  
   (ARCHIVELOG FROM TIME 'SYSDATE-14'  
   CHANNEL ch3);      # CH3 archivelog için  
 }  

Yukarıdaki örnekte ise channel'ların nasıl kullanılacağı da belirtilir. Örnek olarak ch3  archivelog için kullanılır.
Backup İsimlendirme Format'ının Değiştirilmesi:

Rman konfigürasyon ayarları içinde backup'ları isimlendirmeyle ilgili bir seçenek vardır.  Bu seçenek ile birlikte backup'larımıza isim verebiliriz kendi isteklerimize uygun olarak

RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT  "+ASM/backup/rman/backup_%u_%s_%p" MAXPIECESIZE 2048 M; 


Backup format spec olarak belirtilen bu %u,%s,%p gibi ayarları  "http://docs.oracle.com/cd/B28359_01/backup.111/b28273/rcmsubcl010.htm" adresinden görebiliriz.