- 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>
13 KiB
13 KiB
Oracle ROA - Disaster Recovery Setup
Backup-Based DR: Windows PRIMARY (10.0.20.36) → Linux DR (10.0.20.37)
Database: ROA (Contabilitate) Strategie: 4-Level Backup Protection RTO: 45-75 minute RPO: Max 1 zi (ultimul backup de la 02:00 AM)
📋 COMPONENTE SISTEM
PRIMARY Server (10.0.20.36 - Windows)
- Oracle 19c SE2 database ROA (producție)
- RMAN backup zilnic la 02:00 AM (COMPRESSED)
- Transfer DR la 03:00 AM
- Copiere HDD extern la 21:00
DR Server (10.0.20.37 - Linux LXC 109)
- Docker container:
oracle-standby - Oracle 19c instalat (database OPRIT până la dezastru)
- Primește backup-uri automat de pe PRIMARY
- Retenție: 1 backup (DOAR cel mai recent - relevant pentru contabilitate!)
🗂️ FIȘIERE ÎN ACEST DIRECTOR
| Fișier | Descriere | Folosit Pe |
|---|---|---|
01_rman_backup_upgraded.txt |
Script RMAN upgrade cu compression | PRIMARY (Windows) |
02_transfer_to_dr.ps1 |
Script PowerShell transfer backups → DR | PRIMARY (Windows) |
03_setup_dr_transfer_task.ps1 |
Setup Task Scheduler pentru transfer | PRIMARY (Windows) |
04_full_dr_restore.sh |
Script COMPLET restore pe DR (disaster recovery) | DR (Linux) |
05_test_restore_dr.sh |
Test restore LUNAR (verificare DR capability) | DR (Linux) |
06_quick_verify_backups.sh |
Verificare ZILNICĂ backup-uri (monitoring) | DR (Linux) |
| OPȚIONAL - Incremental Backups (RPO îmbunătățit): | ||
01b_rman_backup_incremental.txt |
Script RMAN incremental (midday) | PRIMARY (Windows) |
02b_transfer_incremental_to_dr.ps1 |
Transfer incremental → DR | PRIMARY (Windows) |
03b_setup_incremental_tasks.ps1 |
Setup tasks pentru incremental | PRIMARY (Windows) |
| Documentație: | ||
STRATEGIE_BACKUP_CONTABILITATE.md |
Documentație strategiei complete | Referință |
STRATEGIE_INCREMENTAL.md |
Backup incremental pentru RPO mai bun (OPȚIONAL) | Referință |
PLAN_BACKUP_DR_SIMPLE.md |
Plan tehnic detaliat original | Referință |
VERIFICARE_DR.md |
Ghid verificare și testare DR capability | Referință |
RATIONAL_RETENTIE.md |
Justificare REDUNDANCY 1 pentru contabilitate | Referință |
README.md |
Acest fișier - quick start guide | Referință |
🚀 SETUP RAPID (Quick Start)
Pas 1: Setup SSH Keys (PRIMARY → DR)
# Pe PRIMARY (10.0.20.36) - PowerShell ca Administrator
ssh-keygen -t rsa -b 4096 -f "$env:USERPROFILE\.ssh\id_rsa" -N '""'
# Afișează public key
Get-Content "$env:USERPROFILE\.ssh\id_rsa.pub"
# Copiază OUTPUT-ul
# Pe DR Server (10.0.20.37)
ssh root@10.0.20.37
# Adaugă cheia publică
mkdir -p /root/.ssh
chmod 700 /root/.ssh
nano /root/.ssh/authorized_keys
# PASTE cheia publică aici, save (Ctrl+X, Y, Enter)
chmod 600 /root/.ssh/authorized_keys
exit
# Test conexiune (pe PRIMARY)
ssh -i "$env:USERPROFILE\.ssh\id_rsa" root@10.0.20.37 "echo 'SSH OK'"
# Ar trebui să vezi "SSH OK" FĂRĂ parolă!
Pas 2: Upgrade Script RMAN Backup (PRIMARY)
# Pe PRIMARY - backup scriptul vechi
Copy-Item "D:\rman_backup\rman_backup.txt" "D:\rman_backup\rman_backup.txt.backup_$(Get-Date -Format 'yyyyMMdd')"
# Copiază conținutul din 01_rman_backup_upgraded.txt
# în D:\rman_backup\rman_backup.txt
# SAU direct:
# Copy-Item "\\path\to\01_rman_backup_upgraded.txt" "D:\rman_backup\rman_backup.txt"
Ce face upgrade-ul:
- ✅ Adaugă compression → reduce de la 23GB la ~8GB
- ✅ Include ARCHIVELOG DELETE INPUT
- ✅ REDUNDANCY 1 (păstrează doar ultimul backup - relevant pentru contabilitate!)
- ✅ BACKUP VALIDATE (verificare integritate după backup)
- ✅ Parallelism 2 channels (mai rapid)
Pas 3: Instalare Script Transfer (PRIMARY)
# Creare director logs
New-Item -ItemType Directory -Force -Path "D:\rman_backup\logs"
# Copiere script
Copy-Item "\\path\to\02_transfer_to_dr.ps1" "D:\rman_backup\transfer_to_dr.ps1"
# Test manual
PowerShell -ExecutionPolicy Bypass -File "D:\rman_backup\transfer_to_dr.ps1"
Pas 4: Setup Task Scheduler (PRIMARY)
# Rulează scriptul de setup ca Administrator
PowerShell -ExecutionPolicy Bypass -File "\\path\to\03_setup_dr_transfer_task.ps1"
# SAU manual:
$action = New-ScheduledTaskAction -Execute "PowerShell.exe" `
-Argument "-ExecutionPolicy Bypass -File D:\rman_backup\transfer_to_dr.ps1"
$trigger = New-ScheduledTaskTrigger -Daily -At "03:00AM"
$principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" `
-LogonType ServiceAccount -RunLevel Highest
Register-ScheduledTask -TaskName "Oracle_DR_Transfer" `
-Action $action -Trigger $trigger -Principal $principal
# Verificare
Get-ScheduledTask -TaskName "Oracle_DR_Transfer"
Pas 5: Setup DR Server (Linux)
# Pe DR Server (10.0.20.37)
ssh root@10.0.20.37
# Directoare sunt deja create, verificare:
ls -la /opt/oracle/backups/primary/
ls -la /opt/oracle/scripts/dr/
ls -la /opt/oracle/logs/dr/
# Verificare container Docker
docker ps | grep oracle-standby
# Verificare Oracle software
docker exec -u oracle oracle-standby bash -c 'ls -la $ORACLE_HOME/bin/rman'
Script-ul de restore (04_full_dr_restore.sh) e deja instalat pe DR!
🔥 DISASTER RECOVERY - Procedură Urgență
Când să activezi DR?
✅ DA - Activează DR dacă:
- PRIMARY server 10.0.20.36 NU răspunde >30 minute
- Oracle database corupt (nu se deschide)
- Crash disk C:\ sau D:\
- Ransomware / malware
❌ NU - Nu activa DR pentru:
- Probleme minore de performance
- User șters accidental câteva înregistrări
- Restart Windows sau maintenance
- Erori fixabile în <30 minute
Procedură DR (60 minute)
# Conectare la DR server
ssh root@10.0.20.37
# IMPORTANT: Verifică că PRIMARY e CU ADEVĂRAT down!
ping -c 10 10.0.20.36
# Dacă răspunde → STOP! NU continua!
# Rulează script restore
/opt/oracle/scripts/dr/full_dr_restore.sh
# Monitorizează progres
tail -f /opt/oracle/logs/dr/restore_*.log
# După ~45-60 minute, verifică database e OPEN
docker exec -u oracle oracle-standby bash -c "
export ORACLE_SID=ROA
export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
\$ORACLE_HOME/bin/sqlplus / as sysdba <<< 'SELECT name, open_mode FROM v\$database;'
"
# Output așteptat:
# NAME OPEN_MODE
# --------- ----------
# ROA READ WRITE
După restore:
- Update connection strings:
10.0.20.36:1521/ROA→10.0.20.37:1521/ROA - Notifică utilizatori
- Test aplicații
- Monitorizează performance
📊 ARHITECTURĂ FLOW
┌──────────────────────────────────────────────┐
│ PRIMARY 10.0.20.36 (Windows) │
│ │
│ 02:00 → RMAN Backup COMPRESSED │
│ └─ FRA: ~8GB (vs 23GB original) │
│ ↓ │
│ 21:00 → MareBackup (EXISTENT) │
│ └─ Copiere → E:\backup_roa\ │
│ ↓ │
│ 03:00 → Transfer DR (NOU) │
│ └─ SCP → 10.0.20.37 │
│ │
└──────────────────────────────────────────────┘
↓ SSH/SCP
┌──────────────────────────────────────────────┐
│ DR 10.0.20.37 (Linux LXC 109) │
│ Docker: oracle-standby │
│ │
│ /opt/oracle/backups/primary/ │
│ ├─ *.BKP (backup files) │
│ └─ Retenție: 1 backup (doar ultimul!) │
│ │
│ Database: OPRIT (pornit la dezastru) │
│ │
│ La disaster: │
│ → /opt/oracle/scripts/dr/full_dr_restore.sh│
│ → RTO: 45-75 minute │
│ → RPO: Max 1 zi │
│ │
└──────────────────────────────────────────────┘
✅ CHECKLIST IMPLEMENTARE
Pre-Implementation
- Backup script RMAN vechi (
rman_backup.txt.backup_*) - Verificare spațiu disk PRIMARY (C:, D:, E:)
- Verificare spațiu disk DR (
/opt/oracle>50GB free) - Container
oracle-standbyrulează pe DR
Setup SSH (30 minute)
- Generare SSH keys pe PRIMARY
- Copiere public key pe DR
- Test conexiune passwordless
- Verificare firewall permite port 22
PRIMARY Setup (20 minute)
- Upgrade
rman_backup.txt(adaugă compression) - Copiere
transfer_to_dr.ps1înD:\rman_backup\ - Creare director
D:\rman_backup\logs\ - Setup Task Scheduler (Oracle_DR_Transfer la 03:00 AM)
- Test manual transfer script
DR Setup (10 minute)
- Verificare directoare (
/opt/oracle/backups/primary) - Script
full_dr_restore.shinstalat - Permissions corecte (oracle:dba)
- Container Oracle functional
Testing (60 minute)
- Test manual RMAN backup (verifică compression)
- Test manual transfer (verifică backup-uri ajung pe DR)
- Verificare logs transfer (fără erori)
- Test restore pe DR (OPȚIONAL dar RECOMANDAT!)
Go-Live
- Monitorizare 3 nopți consecutive
- Review logs zilnic
- Documentare issues
- Update documentație
📈 MONITORING
Daily Checks (5 minute)
# Pe PRIMARY - quick health check
# Check 1: Ultimul backup
$lastBackup = Get-ChildItem "C:\Users\Oracle\recovery_area\ROA\BACKUPSET" -Recurse -File |
Sort-Object LastWriteTime -Descending | Select-Object -First 1
$age = (Get-Date) - $lastBackup.LastWriteTime
Write-Host "Last backup: $($age.Hours) hours ago"
# Check 2: Transfer log
Get-Content "D:\rman_backup\logs\transfer_*.log" | Select-String "completed successfully" | Select-Object -Last 1
# Check 3: Disk space
Get-PSDrive C,D,E | Format-Table Name, @{L="Free(GB)";E={[math]::Round($_.Free/1GB,1)}}
# Pe DR - săptămânal
ssh root@10.0.20.37 "ls -lth /opt/oracle/backups/primary/*.BKP | head -5"
Weekly Checks (10 minute)
# Pe DR - verificare status backup-uri
ssh root@10.0.20.37 "/opt/oracle/scripts/dr/06_quick_verify_backups.sh"
Monthly Tasks (OBLIGATORIU!)
Prima Duminică a lunii - TEST RESTORE complet:
# Pe DR - test restore (durează 45-75 min)
ssh root@10.0.20.37
/opt/oracle/scripts/dr/05_test_restore_dr.sh
# Verifică raport
cat /opt/oracle/logs/dr/test_report_$(date +%Y%m%d).txt
- Review: Metrics, logs, disk space, RTO
- Update: Documentație dacă e necesar
- Notifică: Management despre rezultat test
🐛 TROUBLESHOOTING
"Transfer failed - SSH connection refused"
# Test conexiune
ping 10.0.20.37
ssh -v -i "$env:USERPROFILE\.ssh\id_rsa" root@10.0.20.37 "echo OK"
Soluții:
- Verifică DR server pornit
- Check firewall (port 22)
- Regenerare SSH keys
"RMAN backup failed"
-- Pe PRIMARY
sqlplus / as sysdba
-- Check FRA usage
SELECT * FROM v$recovery_area_usage;
-- Cleanup manual
RMAN> DELETE NOPROMPT OBSOLETE;
Soluții:
- Disk plin → cleanup old backups
- FRA quota exceeded → increase size
- Oracle process crash → restart database
"Restore failed on DR"
# Check backup files integrity
md5sum /opt/oracle/backups/primary/*.BKP
# Check container logs
docker logs oracle-standby --tail 100
# Check Oracle alert log
docker exec oracle-standby tail -100 /opt/oracle/diag/rdbms/roa/ROA/trace/alert_ROA.log
📞 SUPPORT
Log Locations
| Tip | Location |
|---|---|
| RMAN Backup | Oracle Alert Log |
| Transfer DR | D:\rman_backup\logs\transfer_YYYYMMDD.log |
| Restore DR | /opt/oracle/logs/dr/restore_*.log |
| Task Scheduler | Event Viewer > Task Scheduler |
Escalation
| Severity | Response Time | Action |
|---|---|---|
| P1 - PRIMARY Down | Immediate | Activate DR |
| P2 - Backup Failed | 2 hours | Retry manual |
| P3 - Transfer Failed | 4 hours | Retry next night |
📚 DOCUMENTAȚIE COMPLETĂ
Pentru detalii tehnice complete, vezi:
STRATEGIE_BACKUP_CONTABILITATE.md- Strategia completă 4-level protectionPLAN_BACKUP_DR_SIMPLE.md- Plan tehnic detaliat original
✨ NEXT STEPS
- Citește acest README complet
- Urmează CHECKLIST IMPLEMENTARE (secțiunea de mai sus)
- Test manual toate componentele
- Monitorizare primele 3 zile după activare
- Schedule primul test restore lunar (obligatoriu!)
Ultima actualizare: 2025-10-07 Status: Production Ready Versiune: 1.0