RMAN ile Veritabanı Yedekleme ve Kurtarma

### RMAN ile Veritabanı Yedekleme ve Kurtarma: Temel Teknikler

Oracle Recovery Manager (RMAN), Oracle veritabanlarında yedekleme ve kurtarma işlemleri için güçlü bir araçtır. Bu yazıda, RMAN kullanarak tam veritabanı yedekleme, artımlı yedekleme, tablo alanı yedekleme ve arşiv log yönetimi gibi temel işlemleri nasıl gerçekleştirebileceğinizi adım adım inceleyeceğiz.

#### 1. **Tam Veritabanı Yedekleme**

Tam veritabanı yedeklemesi, tüm veritabanının bir kopyasını alır. Bu yedekleme türü, veritabanının tamamen kurtarılması gerektiğinde kullanılır.

**RMAN Script:**
“`sql
RUN {
 ALLOCATE CHANNEL CH1 DEVICE TYPE DISK;
 BACKUP AS BACKUPSET DATABASE;
 RELEASE CHANNEL CH1;
}
“`

**Açıklama:**
– `ALLOCATE CHANNEL`: Yedekleme için bir disk kanalı tahsis eder.
– `BACKUP DATABASE`: Tüm veritabanını yedekler.
– `RELEASE CHANNEL`: Kanalı serbest bırakır.

#### 2. **Artımlı Veritabanı Yedekleme**

Artımlı yedekleme, son tam yedeklemeden bu yana değişen veri bloklarını yedekler. Bu, yedekleme süresini ve depolama alanını azaltır.

**RMAN Script:**
“`sql
RUN {
 ALLOCATE CHANNEL CH1 DEVICE TYPE DISK;
 BACKUP INCREMENTAL LEVEL 1 DATABASE;
 RELEASE CHANNEL CH1;
}
“`

**Açıklama:**
– `BACKUP INCREMENTAL LEVEL 1`: Son tam yedeklemeden bu yana değişen blokları yedekler.

#### 3. **Tablo Alanı Yedekleme**

Belirli bir tablo alanını yedeklemek için aşağıdaki RMAN komutunu kullanabilirsiniz.

**RMAN Script:**
“`sql
RUN {
 ALLOCATE CHANNEL CH1 DEVICE TYPE DISK;
 BACKUP TABLESPACE users;
 RELEASE CHANNEL CH1;
}
“`

**Açıklama:**
– `BACKUP TABLESPACE`: Belirtilen tablo alanını yedekler.

#### 4. **Arşiv Log Yedekleme ve Silme**

Arşiv loglar, veritabanının kurtarılabilirliği için kritik öneme sahiptir. Arşiv logları yedeklemek ve eski logları silmek için aşağıdaki komutları kullanabilirsiniz.

**Arşiv Log Yedekleme:**
“`sql
RUN {
 ALLOCATE CHANNEL CH1 DEVICE TYPE DISK;
 BACKUP ARCHIVELOG ALL;
 RELEASE CHANNEL CH1;
}
“`

**Arşiv Log Silme:**
“`sql
DELETE ARCHIVELOG ALL COMPLETED BEFORE ‘sysdate-1’;
“`

**Açıklama:**
– `BACKUP ARCHIVELOG ALL`: Tüm arşiv loglarını yedekler.
– `DELETE ARCHIVELOG`: Belirtilen tarihten eski arşiv loglarını siler.

#### 5. **Veritabanı Kurtarma**

RMAN ile veritabanını belirli bir noktaya kadar kurtarmak mümkündür. Özellikle yanlışlıkla silinen bir tabloyu kurtarmak için aşağıdaki komutları kullanabilirsiniz.

**RMAN Script:**
“`sql
RUN {
 ALLOCATE CHANNEL CH1 DEVICE TYPE DISK;
 RECOVER DATABASE UNTIL TIME ‘TO_DATE(“2024-03-25 12:00:00”, “YYYY-MM-DD HH24:MI:SS”)’;
 RELEASE CHANNEL CH1;
}
“`

**Açıklama:**
– `RECOVER DATABASE UNTIL TIME`: Veritabanını belirli bir zamana kadar kurtarır.

#### 6. **RMAN İşlemlerini İzleme**

RMAN yedekleme ve kurtarma işlemlerinin ilerlemesini izlemek için `V$SESSION_LONGOPS` görünümünü kullanabilirsiniz.

**SQL Sorgusu:**
“`sql
SELECT SID, SERIAL#, CONTEXT, SOFAR, TOTALWORK,
      ROUND(SOFAR/TOTALWORK*100,2) “%_COMPLETE”
FROM V$SESSION_LONGOPS
WHERE OPNAME LIKE ‘RMAN%’
AND OPNAME NOT LIKE ‘%aggregate%’
AND TOTALWORK != 0
AND SOFAR <> TOTALWORK;
“`

**Açıklama:**
– Bu sorgu, RMAN işlemlerinin tamamlanma yüzdesini gösterir.

### Sonuç

RMAN, Oracle veritabanlarının yedeklenmesi ve kurtarılması için güçlü ve esnek bir araçtır. Bu yazıda, temel RMAN komutlarını ve senaryolarını ele aldık. Bu komutları kullanarak veritabanınızın güvenliğini sağlayabilir ve olası veri kayıplarını önleyebilirsiniz.

RMAN ile ilgili daha fazla bilgi edinmek ve özelleştirilmiş senaryolar oluşturmak için Oracle’ın resmi dokümantasyonunu inceleyebilirsiniz.

**Teşekkürler!**