- Add comprehensive Oracle backup and DR strategy documentation - Add RMAN backup scripts (full and incremental) - Add PowerShell transfer scripts for DR site - Add bash restore and verification scripts - Reorganize Oracle documentation structure - Add Proxmox troubleshooting guide for VM 201 HA errors and NFS storage issues 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
321 lines
8.0 KiB
Markdown
321 lines
8.0 KiB
Markdown
# 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
|