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:
346
oracle/standby-server-scripts/STRATEGIE_INCREMENTAL.md
Normal file
346
oracle/standby-server-scripts/STRATEGIE_INCREMENTAL.md
Normal file
@@ -0,0 +1,346 @@
|
||||
# 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 (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
|
||||
Reference in New Issue
Block a user