ORACLE BACKUP RMAN-1

RMAN Oracle’ın sunduğu yedek alma ve kurtarma (BAckup and Recovery) aracıdır. Online tutarlı yedekler almak istiyorsanız RMAN kullanmalısınız. RMAN ile yedek alabilmeniz için veritabananının archivelog modda olması gerekmektedir.

Archivelog modda olan bir veritabanında geçmişte bir zamana dönebilme yeteneği bize sağloamasıdır.(PITR –> Point In Time Recovery)

RMAN ile veritabanına aşağıdaki gibi bağlanabiliriz.

 rman target / 
--veya
rman target sys/Password@....
rman target /

Recovery Manager: Release 12.2.0.1.0 - Production on Tue Oct 27 14:32:19 2020
Copyright (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved.
connected to target database: DBM (DBID=1536099635)

RMAN Configurasyonları

show all; komutu ile tüm konfigurasyonu görebiliriz.

RMAN> show all;

RMAN configuration parameters for database with db_unique_name DBM are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/12.2.0.0/db/dbs/snapcf_dbm2.f'; # default   

Konfigürasyonu default değerine almak için CLEAR özel anahtar kelimesi kullanılır.

RMAN>  CONFIGURE BACKUP OPTIMIZATION CLEAR;

RMAN configuration parameters are successfully reset to default value

Burada değiştirilen tüm konfigurasyonlar veritanbanında v$rman_configuration view’inde görüntülenebilmektedir.

Buradaki bazı önemli konfigürasyon parametreleri ne işe yarar onları inceleyelim;

  • Retention Policy : Alınan yedeğin saklanılma süresini belirler. 2 farklı kullanım şekli vardır.
    • İlki Redundancy Geçmişe yönelik kaç yedek saklayacağını belirler. 1 set edilirse RMAN 1 yedek saklar 2. yedek alındığında 1. yedek obsolete olarak işaretlernir.
    • İkincisi Recovery Window Yedeklerin ne kadar süre ile saklanacağını belirtir. Recovey Window 7 set edilirse 7 günden eskli yedekler obsolete olarak işaretlenir. Örnek
RMAN> CONFIGURE RETENTION POLICY TO recovery window of 7 days;

new RMAN configuration parameters:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
new RMAN configuration parameters are successfully stored
  • Yedeğin Alınacağı Ortam : Tape veya Disk olabilir eğer disk üzerine alacaksak default değeri budur yada aşağıdaki kod ile set edilir.
    • Disk için CONFIGURE DEFAULT DEVICE TYPE TO DISK
    • Tape kartuşa yedek alınıyorsa CONFIGURE DEFAULT DEVICE TYPE TO SBT
  • Control Dosyası Ve Parametre Dosyasının Otomatik Yedeğinin Alınması Defaultta On olarak gelir ancak On değilse de On olması tercih edilmelidir.
  • Control Dosyasının Yedek Yerinin Belirlenmesi: Varsayılan olarak FRA alanına kaydedilir. Eğer farklı bir yere kaydetmek istiyorsak; CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup/files/dbm_frkcvk_ctf_%F';
  • Backup Optimization : ON olması durumunda yedeği alınmış ve herhangi bir değişikliğe uğramamış objeler yedeklenmez.
    • CONFIGURE BACKUP OPTIMIZATION ON;
  • Paralellik derecesi belirleme,
  • Sıkıştırma kullanımı,
  • Şifreleyerek Backup alma,
  • Archive Dosyalarının Silinmesi : Varsayılan olarak NONE gelir. bu şekilde iken terminalden
    • backup archivelog delete input komutu ile veya
    • delete archivelog komutu ile silme işlemi yapılır.
  • Maksimum Yedek Boyutu: MAXSIZE parametresini en büyük datafile boyutunu geçmeyecek şekilde ayarlamak bazı durumlarda hata almamızın önüne geçecektir.
  • SNAPSHOT CONTROLFILE backup alınması sırasında geçici bir control file oluşturulur bu oluşturulan control file yeri ve ismi bu parametre ile ayarlanabilir.

Şimdi bir backup almayı deneyelim;

RMAN> backup database;

Starting backup at 27-OCT-20
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=406 instance=dbm2 device type=DISK
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of backup command at 10/27/2020 16:26:42
RMAN-06149: cannot BACKUP DATABASE in NOARCHIVELOG mode

Backup alamadık çünkü veri tabanımız archivelog modda değil RMAN backup almak ve backup tan geri doönmek istiyorsak veritabanı archivelog modda olması gerekmektedir. Veritabanımız archivelog moddamı kontrolü için

SQL> archive log list
Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            /u01/app/oracle/product/12.2.0.0/db/dbs/arch
Oldest online log sequence     25
Current log sequence           27

Archivelog moda almak için önce veritabanı kapatılır sonra mount modda açılır, aşağıdaki komut ile archivelog mode açılır ve sonra alter yapılarak tekrar veritabanı açılır

SQL> shu immediate;
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database open;

RAC için

srvctl stop database -d dbm
srvctl start database -d dbm -o mount
SQL> alter database archivelog;
srvctl stop database -d dbm
srvctl start database -d dbm

Kontrol edelim

SQL> archivelog list
SP2-0734: unknown command beginning "archivelog..." - rest of line ignored.
SQL> archive log list
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /u01/app/oracle/product/12.2.0.0/db/dbs/arch
Oldest online log sequence     25
Next log sequence to archive   27
Current log sequence           27

backup alalım

RMAN> backup database;

Starting backup at 27-OCT-20
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=274 instance=dbm1 device type=DISK
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00003 name=+DATA/dbm/undotbs01.dbf
input datafile file number=00005 name=+DATA/dbm/undotbs02.dbf
input datafile file number=00001 name=+DATA/dbm/system01.dbf
input datafile file number=00002 name=+DATA/dbm/sysaux01.dbf
input datafile file number=00004 name=+DATA/dbm/users01.dbf
channel ORA_DISK_1: starting piece 1 at 27-OCT-20
channel ORA_DISK_1: finished piece 1 at 27-OCT-20
piece handle=/u01/app/oracle/product/12.2.0.0/db/dbs/0ive1gk8_1_1 tag=TAG20201027T163416 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:01:25
Finished backup at 27-OCT-20

Starting Control File and SPFILE Autobackup at 27-OCT-20
piece handle=/u01/app/oracle/product/12.2.0.0/db/dbs/c-1536099635-20201027-00 comment=NONE
Finished Control File and SPFILE Autobackup at 27-OCT-20

Archivelog dosyalarının yerini ASM Diski üzerine ayarlamak istersek

SQL> alter system set log_archive_dest_1='LOCATION=+ARCH/' scope=both sid='*';

System altered.

INCREMENTAL BACKUP

Incremental backup demek bir önceki backuptan sonraki değişen blokların backup ını al anlamına gelir. Block değişikliklerini izlemek için oracle Block Change Tracking File dosyasının enable olarak set edilirse (https://www.farukcevik.com.tr/block-change-trancking-file/) oracle değişen blokların yerini buradan bulacak ve değişen blokların backup ını çok hızlı bir şekilde alabilecektir.

L0 backup full backup anlamına gelir.

RMAN> backup incremental level=0 database;

L1 Backup son alınan L0 backuptan sonraki değişen blokların backupını alır.

RMAN> backup incremental level=1 database;

Bununda iki türü vardır, varsayılan olanı differantial dır ve son alınan l0 veya l1 den sonraki değişen blokların yedeğini alır. Birde Cumulative olanı vardır bu ise son alınan l0 dan sonraki değişen blokların yedeğini alır l1 leri yok sayar.

RMAN> backup incremental level=1 cumulative database;

RMAN uzun bir konu o yüzden parça parça yazmak istedim. Bir sonraki bölümde değişik şekillerde backup alıp bu backupların listelenmesi, doğrulanması ve recovey kısmı diğer RMAN yazısında olacak.