Files
ROMFASTSQL/oracle/standby-server-scripts/STRATEGIE_INCREMENTAL.md
Marius d5bfc6b5c7 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>
2025-10-08 13:37:33 +03:00

347 lines
11 KiB
Markdown

# Strategie Backup cu INCREMENTAL pentru RPO Îmbunătățit
## Oracle ROA Database Contabilitate
**Obiectiv:** Reducere RPO de la **36 ore** la **12 ore** (sau mai puțin)
---
## 🎯 PROBLEMA REZOLVATĂ
### **Situația FĂRĂ incremental:**
```
Luni 02:00 → Full backup
...36 ore fără backup...
Marți 14:00 → PRIMARY crash! ❌
→ Restore din backup Luni 02:00
→ PIERDERE: 36 ore (1.5 zile) de contabilitate ❌
```
### **Situația CU incremental:**
```
Luni 02:00 → Full backup
Luni 14:00 → Incremental backup ✅
Marți 02:00 → Full backup
Marți 14:00 → Incremental backup ✅ ← CEL MAI RECENT!
Marți 15:00 → PRIMARY crash! ❌
→ Restore: Full (marți 02:00) + Incremental (marți 14:00)
→ PIERDERE: DOAR 1 oră! ✅
```
**Îmbunătățire RPO:** 36 ore → **max 12 ore** (de obicei 1-8 ore)
---
## 📋 ARHITECTURĂ BACKUP INTEGRATĂ
### **Timeline zilnic complet:**
```
┌────────────────────────────────────────────────────────┐
│ DAILY BACKUP SCHEDULE │
├────────────────────────────────────────────────────────┤
│ │
│ 02:00 → FULL Backup (RMAN Level 0 COMPRESSED) │
│ ├─ Database complet: ~8GB compressed │
│ ├─ + ARCHIVELOG DELETE INPUT │
│ ├─ + BACKUP VALIDATE (integrity check) │
│ └─ Salvat în FRA │
│ │
│ 03:00 → Transfer FULL la DR │
│ └─ SCP → 10.0.20.37 │
│ │
│ 06:00 - 13:00 → Lucru normal contabilitate │
│ │
│ 14:00 → INCREMENTAL Backup (Level 1 COMPRESSED) ←NEW!│
│ ├─ Doar modificări: ~500MB-2GB compressed │
│ ├─ + ARCHIVELOG DELETE INPUT │
│ ├─ + BACKUP VALIDATE │
│ └─ Salvat în FRA │
│ │
│ 14:30 → Transfer INCREMENTAL la DR ← NEW! │
│ └─ SCP → 10.0.20.37 (rapid: 5-10 min) │
│ │
│ 14:00 - 18:00 → Lucru normal contabilitate │
│ │
│ 21:00 → Copiere FRA → E:\ (existent) │
│ └─ Include full + incremental │
│ │
└────────────────────────────────────────────────────────┘
```
---
## 🔧 IMPLEMENTARE
### **Fișiere noi create:**
| Fișier | Descriere | Locație |
|--------|-----------|---------|
| `01b_rman_backup_incremental.txt` | Script RMAN pentru incremental | PRIMARY `D:\rman_backup\` |
| `02b_transfer_incremental_to_dr.ps1` | Transfer incremental → DR | PRIMARY `D:\rman_backup\` |
| `03b_setup_incremental_tasks.ps1` | Setup Task Scheduler | PRIMARY (rulează o dată) |
---
### **Pas 1: Copiere scripturi pe PRIMARY**
```powershell
# Pe PRIMARY Windows (10.0.20.36)
# Copiază scripturile
# Script 1: RMAN incremental
Copy-Item "\\path\to\01b_rman_backup_incremental.txt" "D:\rman_backup\rman_backup_incremental.txt"
# Script 2: Transfer incremental
Copy-Item "\\path\to\02b_transfer_incremental_to_dr.ps1" "D:\rman_backup\transfer_incremental_to_dr.ps1"
# Verificare
Test-Path "D:\rman_backup\rman_backup_incremental.txt"
Test-Path "D:\rman_backup\transfer_incremental_to_dr.ps1"
```
---
### **Pas 2: Setup Task Scheduler**
```powershell
# Rulează ca Administrator
PowerShell -ExecutionPolicy Bypass -File "\\path\to\03b_setup_incremental_tasks.ps1"
# SAU manual:
# Task 1: Incremental backup la 14:00
$action1 = New-ScheduledTaskAction -Execute "cmd.exe" `
-Argument "/c D:\rman_backup\rman_backup_incremental.bat"
$trigger1 = New-ScheduledTaskTrigger -Daily -At "14:00"
$principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" `
-LogonType ServiceAccount -RunLevel Highest
Register-ScheduledTask -TaskName "Oracle_IncrementalBackup" `
-Action $action1 -Trigger $trigger1 -Principal $principal
# Task 2: Transfer incremental la 14:30
$action2 = New-ScheduledTaskAction -Execute "PowerShell.exe" `
-Argument "-ExecutionPolicy Bypass -File D:\rman_backup\transfer_incremental_to_dr.ps1"
$trigger2 = New-ScheduledTaskTrigger -Daily -At "14:30"
Register-ScheduledTask -TaskName "Oracle_DR_TransferIncremental" `
-Action $action2 -Trigger $trigger2 -Principal $principal
# Verificare
Get-ScheduledTask | Where-Object { $_.TaskName -like "Oracle*" }
```
---
### **Pas 3: Test manual**
```powershell
# Test incremental backup
Start-ScheduledTask -TaskName "Oracle_IncrementalBackup"
# Așteaptă 5-10 minute să se termine, apoi test transfer
Start-ScheduledTask -TaskName "Oracle_DR_TransferIncremental"
# Verificare logs
Get-Content "D:\rman_backup\logs\transfer_incr_*.log" -Tail 50
```
---
## 📊 CE SE ÎNTÂMPLĂ LA RESTORE
### **Restore cu FULL + INCREMENTAL:**
```bash
# Pe DR Server (10.0.20.37)
# Script-ul 04_full_dr_restore.sh e deja modificat!
# Când rulezi restore:
/opt/oracle/scripts/dr/full_dr_restore.sh
# RMAN face automat:
1. Catalog toate backup-urile din /opt/oracle/backups/primary/
├─ Full backup (Level 0): ~8GB
└─ Incremental backup (Level 1): ~2GB
2. RESTORE DATABASE
├─ Aplică FULL backup mai întâi
└─ Aplică INCREMENTAL automat (RMAN e inteligent!)
3. RECOVER cu archived logs (dacă există)
4. OPEN database cu RESETLOGS
REZULTAT: Database restaurat până la ultimul incremental backup!
```
**RMAN știe AUTOMAT** să aplice incremental după full - NU trebuie configurare extra!
---
## 💾 STORAGE ȘI BANDWIDTH
### **Impact Storage:**
| Locație | FĂRĂ Incremental | CU Incremental | Diferență |
|---------|------------------|----------------|-----------|
| **PRIMARY FRA** | ~8GB (1 full) | ~10GB (1 full + 1 incr) | +2GB |
| **DR Server** | ~8GB | ~10GB | +2GB |
| **E:\ HDD extern** | ~16GB | ~20GB | +4GB |
| **TOTAL** | ~32GB | ~40GB | **+8GB** |
**Concluzie:** Cost storage +25% pentru RPO de 3x mai bun!
---
### **Impact Bandwidth:**
| Transfer | Fără Incremental | Cu Incremental | Diferență |
|----------|------------------|----------------|-----------|
| **Zilnic total** | ~8GB (la 03:00) | ~10GB (8GB + 2GB) | +2GB |
| **Timp transfer** | ~15 min | ~20 min total | +5 min |
**Impact minim** pe network!
---
## 📈 RPO IMPROVEMENT
### **Scenarii recovery:**
| Ora Crash | Backup disponibil | Pierdere date | RPO |
|-----------|-------------------|---------------|-----|
| **03:00** | Full (02:00) | 1 oră | ✅ Excelent |
| **08:00** | Full (02:00) | 6 ore | ⚠️ Acceptabil |
| **14:00** | Full (02:00) | 12 ore | ⚠️ Acceptabil |
| **15:00** | Full (02:00) + Incr (14:00) | **1 oră** | ✅ **Excelent!** |
| **20:00** | Full (02:00) + Incr (14:00) | 6 ore | ⚠️ Acceptabil |
| **01:00** | Full (02:00 ieri) + Incr (14:00 ieri) | 11 ore | ⚠️ Acceptabil |
**Average RPO:** ~6 ore (vs 18 ore fără incremental)
**Max RPO:** 12 ore (vs 36 ore fără incremental)
---
## ⚠️ CONSIDERAȚII
### **Când e UTIL incremental:**
**DA - Activează incremental dacă:**
- Contabilitate activă în cursul zilei
- Modificări frecvente (facturi, înregistrări)
- RPO de 36h e prea mare (pierdere inacceptabilă)
- Aveți +10GB spațiu extra pe PRIMARY și DR
### **Când NU e necesar:**
**NU activa incremental dacă:**
- Baza de date se modifică doar dimineața
- RPO de 36h e acceptabil pentru business
- Spațiu disk limitat (<20GB free)
- Problemă de bandwidth (transfer lent)
---
## 🎯 ALTERNATIVE
### **Opțiunea 2: Două incrementale pe zi**
```
02:00 → Full backup
10:00 → Incremental #1
16:00 → Incremental #2
```
**RPO:** max 8 ore (și mai bun!)
**Dezavantaje:**
- Mai mult storage (~12GB total)
- Mai mult bandwidth
- Restore mai lent (3 backup-uri: full + 2x incremental)
**Când să folosești:**
- Contabilitate super-critică
- Modificări masive în cursul zilei
- RPO target <8 ore
---
### **Opțiunea 3: Archive log shipping**
```
02:00 → Full backup
La fiecare 15 min → Transfer archive logs către DR
```
**RPO:** ~15 minute! (cel mai bun)
**Dezavantaje:**
- Foarte complex de implementat
- Transfer continuu (impact bandwidth)
- Database pe DR trebuie în MOUNT mode (consumă resurse)
- NU funcționează bine cross-platform (WindowsLinux)
**Când să folosești:**
- RPO <1 oră OBLIGATORIU
- Buget pentru licență Oracle Enterprise Edition + Data Guard
- Same-platform (WindowsWindows sau LinuxLinux)
---
## ✅ RECOMANDARE FINALĂ
**Pentru database CONTABILITATE ROA:**
### **Începe cu Opțiunea 1 (un incremental la 14:00)**
**De ce:**
- RPO improvement semnificativ: 36h 12h (3x mai bun!)
- Cost reasonable: +8GB storage, +5 min transfer
- Simplu de implementat (3 scripturi)
- RMAN aplică automat incremental la restore
- Nu impactează performanța (ora 14:00 = pauză masă)
**Măsoară după 1 lună:**
- Dimensiune medie incremental backup
- Timp transfer
- Încărcarea pe PRIMARY la 14:00
**Dacă e nevoie, upgrade la Opțiunea 2** (2 incrementale/zi)
---
## 📋 CHECKLIST IMPLEMENTARE
### **Setup (once):**
- [ ] Copiere `01b_rman_backup_incremental.txt` `D:\rman_backup\rman_backup_incremental.txt`
- [ ] Copiere `02b_transfer_incremental_to_dr.ps1` `D:\rman_backup\transfer_incremental_to_dr.ps1`
- [ ] Rulare `03b_setup_incremental_tasks.ps1` (ca Administrator)
- [ ] Verificare task-uri create în Task Scheduler
- [ ] Test manual incremental backup
- [ ] Test manual transfer incremental
- [ ] Verificare pe DR fișierele ajung
### **Monitoring (zilnic - primele 2 săptămâni):**
- [ ] Verifică incremental backup rulează la 14:00
- [ ] Verifică transfer rulează la 14:30
- [ ] Verifică logs pentru erori
- [ ] Verifică dimensiune backup incremental
- [ ] Verifică spațiu disk (PRIMARY și DR)
### **Test restore (lunar):**
- [ ] Rulează `/opt/oracle/scripts/dr/05_test_restore_dr.sh`
- [ ] Verifică RMAN aplică corect full + incremental
- [ ] Verifică RTO (ar trebui fie similar: 45-75 min)
- [ ] Verifică integritate date restaurate
---
**Versiune:** 1.0
**Data:** 2025-10-08
**Status:** Ready for Implementation