Add Oracle DR standby server scripts and Proxmox troubleshooting docs

- 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>
This commit is contained in:
Marius
2025-10-08 13:37:33 +03:00
parent 95f76d7ffb
commit d5bfc6b5c7
19 changed files with 6766 additions and 0 deletions

View File

@@ -0,0 +1,320 @@
# 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ă 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