- 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>
11 KiB
11 KiB
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
# 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
# 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
# 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:
# 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 (Windows→Linux)
Când să folosești:
- RPO <1 oră OBLIGATORIU
- Buget pentru licență Oracle Enterprise Edition + Data Guard
- Same-platform (Windows→Windows sau Linux→Linux)
✅ 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 că fișierele ajung
Monitoring (zilnic - primele 2 săptămâni):
- Verifică că incremental backup rulează la 14:00
- Verifică că 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ă că RMAN aplică corect full + incremental
- Verifică RTO (ar trebui să fie similar: 45-75 min)
- Verifică integritate date restaurate
Versiune: 1.0 Data: 2025-10-08 Status: Ready for Implementation