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

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.txtD:\rman_backup\rman_backup_incremental.txt
  • Copiere 02b_transfer_incremental_to_dr.ps1D:\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