# Verificare Capability Disaster Recovery - Oracle ROA **Scop:** Verificare că backup-urile de pe DR server pot fi restaurate cu SUCCESS --- ## 📋 DOUĂ TIPURI DE VERIFICARE ### **1. Verificare ZILNICĂ (Quick Check) - 30 secunde** **Script:** `06_quick_verify_backups.sh` **Frecvență:** Zilnic (automat via cron) **Durată:** <1 minut **Ce verifică:** - ✅ Backup-urile există pe DR - ✅ Ultimul backup e recent (<30 ore) - ✅ Fișierele backup sunt readable (integrity check rapid) - ✅ Spațiu disk disponibil (>20GB free) - ✅ Inventar complet backup-uri **Rulare:** ```bash ssh root@10.0.20.37 /opt/oracle/scripts/dr/06_quick_verify_backups.sh ``` **Output așteptat:** ``` ✅ Backup directory: OK ✅ Backup files: 1 present ✅ Latest backup age: 5h (threshold: 30h) ✅ Disk space: 45GB free ✅ File integrity: OK ``` --- ### **2. Verificare LUNARĂ (Full Test Restore) - 45-75 minute** **Script:** `05_test_restore_dr.sh` **Frecvență:** LUNAR (prima Duminică) **Durată:** 45-75 minute **Ce face:** - ✅ **RESTORE complet** database din backup - ✅ **RECOVER** cu archived logs - ✅ **OPEN** database în read-write mode - ✅ **Verificare** integritate date - ✅ **Măsurare RTO** (Recovery Time Objective) - ✅ **Generare raport** detaliat **Rulare:** ```bash ssh root@10.0.20.37 /opt/oracle/scripts/dr/05_test_restore_dr.sh ``` **IMPORTANT:** - ✅ NU afectează production database (ROA) - ✅ Creează database temporar (ROATEST) - ✅ Cleanup automat după test - ✅ Durează 45-75 minute (așteaptă să se termine!) --- ## 🚀 SETUP AUTOMAT - Cron Jobs ### **Setup verificare zilnică:** ```bash # Pe DR Server (10.0.20.37) ssh root@10.0.20.37 # Editare crontab crontab -e # Adaugă această linie (rulează zilnic la 09:00 AM) 0 9 * * * /opt/oracle/scripts/dr/06_quick_verify_backups.sh >> /opt/oracle/logs/dr/cron_verify.log 2>&1 ``` ### **Setup test restore lunar:** ```bash # Adaugă în crontab (prima Duminică a lunii la 10:00 AM) 0 10 1-7 * 0 /opt/oracle/scripts/dr/05_test_restore_dr.sh >> /opt/oracle/logs/dr/cron_test.log 2>&1 ``` **Explicație:** - `0 10` = ora 10:00 - `1-7` = zilele 1-7 ale lunii - `* 0` = orice lună, dar doar Duminica (0 = Sunday) - Rezultat: rulează prima Duminică între 1-7 ale fiecărei luni --- ## 📊 INTERPRETARE REZULTATE ### **Verificare Zilnică - Scenarii:** #### ✅ **SUCCESS (Normal):** ``` ✅ Backup files: 1 present ✅ Latest backup age: 8h (threshold: 30h) ✅ Disk space: 45GB free ``` **Acțiune:** NONE - totul e OK --- #### ⚠️ **WARNING (Minor Issues):** ``` ⚠️ Backup is getting old (>26h) ⚠️ Disk space getting low (<20GB) ``` **Acțiune:** Investigare - de ce nu a venit backup nou? --- #### ❌ **ERROR (Critica):** ``` ❌ Latest backup is too old: 35 hours ❌ No backup files found! ❌ DISK SPACE LOW! (8GB free) ❌ BACKUP FILE CORRUPTED! ``` **Acțiune IMEDIATĂ:** 1. Verifică pe PRIMARY dacă backup-ul a rulat azi 2. Verifică transfer script (logs în `D:\rman_backup\logs\`) 3. Verifică conexiune SSH către DR 4. Rulează manual transfer dacă e nevoie --- ### **Test Restore Lunar - Scenarii:** #### ✅ **SUCCESS:** ``` ✅ Phase 1: RMAN RESTORE - SUCCESS ✅ Phase 2: RMAN RECOVER - SUCCESS ✅ Phase 3: DATABASE OPEN - SUCCESS ✅ Phase 4: DATA INTEGRITY - VERIFIED ✅ Phase 5: RTO CALCULATION - MEASURED Total duration: 52 minutes 34 seconds ✅ RTO GOOD: Under 60 minutes ``` **Concluzie:** DR capability VALIDAT - backup-urile funcționează! --- #### ❌ **FAILURE:** ``` ❌ RMAN RESTORE failed! ERROR: RMAN-06023: no backup or copy found ``` **Cauze posibile:** - Backup-uri corupte sau lipsă - DBID incorect - Path-uri backup incorecte **Acțiune IMEDIATĂ:** 1. Verifică că backup-urile există: `ls -lh /opt/oracle/backups/primary/` 2. Verifică integritatea: `md5sum /opt/oracle/backups/primary/*.BKP` 3. Re-transferă backup de pe PRIMARY 4. Rulează din nou test restore --- ## 📈 METRICI IMPORTANTE ### **RTO (Recovery Time Objective):** | Durată Test | Status | Acțiune | |-------------|--------|---------| | <45 min | ✅ EXCELLENT | Perfect! | | 45-60 min | ✅ GOOD | Acceptabil | | 60-75 min | ⚠️ ACCEPTABLE | Monitorizează | | >75 min | ❌ TOO HIGH | Optimizare necesară! | **Target:** 45-75 minute --- ### **Backup Age (Vârsta ultimului backup):** | Vârstă | Status | Acțiune | |--------|--------|---------| | <24h | ✅ FRESH | Perfect - backup de ieri | | 24-26h | ✅ OK | Normal - backup de alaltăieri | | 26-30h | ⚠️ OLD | Investigare - de ce întârziere? | | >30h | ❌ CRITICAL | ALERT - lipsește backup! | **Target:** <26 ore (backup de azi sau ieri) --- ## 🐛 TROUBLESHOOTING ### **Problem 1: "No backup files found"** **Verificări:** ```bash # Pe DR ls -la /opt/oracle/backups/primary/ # Verifică transfer log pe PRIMARY # D:\rman_backup\logs\transfer_YYYYMMDD.log # Test manual transfer (pe PRIMARY) PowerShell -File D:\rman_backup\transfer_to_dr.ps1 ``` **Soluții:** - Verifică SSH keys funcționează - Verifică task scheduler rulează - Rulează manual transfer --- ### **Problem 2: "Test restore failed - RMAN-06023"** **Verificări:** ```bash # Pe DR - verifică backup files find /opt/oracle/backups/primary -name "*.BKP" -ls # Verifică DBID corect (ar trebui să fie 1363569330) grep DBID /opt/oracle/scripts/dr/05_test_restore_dr.sh ``` **Soluții:** - Verifică că DBID = 1363569330 - Re-transferă backup de pe PRIMARY - Verifică permissions (oracle:dba) --- ### **Problem 3: "Backup file corrupted"** **Verificări:** ```bash # Pe DR - checksum backup md5sum /opt/oracle/backups/primary/*.BKP # Compară cu checksum de pe PRIMARY # (ar trebui să fie identice) # Test citire fișier head -c 1M /opt/oracle/backups/primary/*.BKP > /dev/null tail -c 1M /opt/oracle/backups/primary/*.BKP > /dev/null ``` **Soluții:** - Re-transfer backup de pe PRIMARY - Verifică network stability - Verifică disk health pe DR --- ## ✅ CHECKLIST VERIFICARE LUNARĂ **Prima Duminică a lunii:** - [ ] Rulează test restore: `/opt/oracle/scripts/dr/05_test_restore_dr.sh` - [ ] Verifică RTO < 75 minute - [ ] Verifică database se deschide cu SUCCESS - [ ] Verifică integritate date (object count, tablespaces) - [ ] Review raport: `/opt/oracle/logs/dr/test_report_YYYYMMDD.txt` - [ ] Documentează orice issue găsit - [ ] Update documentație dacă e necesar - [ ] Notifică management despre rezultat test --- ## 📞 ESCALATION ### **Severity Levels:** | Issue | Severity | Response Time | Escalate To | |-------|----------|---------------|-------------| | Daily check failed | P3 | 4 hours | DBA Team | | Backup >30h old | P2 | 2 hours | DBA + Manager | | Test restore failed | P2 | 2 hours | DBA + Manager | | No backups found | P1 | Immediate | DBA + Management | | RTO >90 min | P3 | Next day | DBA Team | --- ## 📚 LOGS LOCATION | Tip | Location | |-----|----------| | **Daily Verify** | `/opt/oracle/logs/dr/verify_YYYYMMDD.log` | | **Test Restore** | `/opt/oracle/logs/dr/test_restore_YYYYMMDD_HHMMSS.log` | | **Test Report** | `/opt/oracle/logs/dr/test_report_YYYYMMDD.txt` | | **Cron Jobs** | `/opt/oracle/logs/dr/cron_*.log` | --- ## 🎯 BEST PRACTICES 1. **✅ Rulează verificare zilnică** automat (cron) 2. **✅ Rulează test restore LUNAR** (obligatoriu!) 3. **✅ Review logs** săptămânal 4. **✅ Documentează issues** găsite 5. **✅ Test manual** după orice modificare în backup strategy 6. **✅ Măsoară RTO** și optimizează dacă crește 7. **✅ Păstrează rapoarte** pentru audit trail --- **IMPORTANT:** > **Un backup NETESTAT = NU ai backup!** > > Singurul mod de a fi sigur că poți face disaster recovery e să TESTEZI restore-ul lunar! --- **Versiune:** 1.0 **Data:** 2025-10-08 **Status:** Production Ready