Files
ROMFASTSQL/oracle/standby-server-scripts/IMPLEMENTARE_PAS_CU_PAS.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

749 lines
22 KiB
Markdown

# 🚀 GHID IMPLEMENTARE DR BACKUP - PAS CU PAS
## Oracle ROA Contabilitate: PRIMARY (10.0.20.36) → DR (10.0.20.37)
**Data implementare:** 2025-10-08
**Status:** Ready to Execute
**Durată totală estimată:** 60-90 minute
---
## ✅ PRE-VERIFICĂRI (COMPLETATE)
| Verificare | Status | Detalii |
|------------|--------|---------|
| DR Server operațional | ✅ | Container oracle-standby UP |
| Spațiu disk DR | ✅ | 93GB liberi (suficient) |
| Directoare DR | ✅ | `/opt/oracle/backups/primary/` există |
| Script-uri DR | ✅ | `full_dr_restore.sh` instalat |
| Script-uri locale | ✅ | Toate scripturile pregătite |
| PRIMARY SSH access | ✅ | SSH pe port 22122 funcțional |
---
## 📋 PLAN IMPLEMENTARE
Implementarea se face în **4 FAZE**:
### **FAZA 1:** Setup SSH Keys (30 minute)
### **FAZA 2:** Upgrade RMAN Backup Script (15 minute)
### **FAZA 3:** Instalare Transfer Script (15 minute)
### **FAZA 4:** Setup Task Scheduler (10 minute)
### **FAZA 5:** Testing (30-60 minute)
---
## 🔐 FAZA 1: SETUP SSH KEYS (30 minute)
### Pas 1.1: Conectare la PRIMARY server
```powershell
# CONECTEAZĂ-TE la PRIMARY server 10.0.20.36
# Folosește RDP sau SSH:
ssh -p 22122 romfast@10.0.20.36
# SAU deschide PowerShell direct pe PRIMARY
```
### Pas 1.2: Verificare SSH client instalat
```powershell
# În PowerShell pe PRIMARY:
Get-Command ssh
# Output așteptat:
# CommandType Name Version Source
# ----------- ---- ------- ------
# Application ssh.exe ... C:\Windows\System32\OpenSSH\ssh.exe
# Dacă SSH nu e instalat, instalează OpenSSH:
# Settings > Apps > Optional Features > Add OpenSSH Client
```
### Pas 1.3: Generare SSH Key Pair
```powershell
# Pe PRIMARY - în PowerShell ca Administrator (sau user Oracle)
# IMPORTANT: Rulează ca user-ul care va fi folosit pentru Task Scheduler
# Verifică user curent:
whoami
# Output: DOMAIN\Administrator sau DOMAIN\Oracle
# Generare SSH key:
ssh-keygen -t rsa -b 4096 -f "$env:USERPROFILE\.ssh\id_rsa" -N '""'
# Output așteptat:
# Generating public/private rsa key pair.
# Your identification has been saved in C:\Users\Administrator\.ssh\id_rsa
# Your public key has been saved in C:\Users\Administrator\.ssh\id_rsa.pub
```
### Pas 1.4: Afișare și copiere Public Key
```powershell
# Afișează public key:
Get-Content "$env:USERPROFILE\.ssh\id_rsa.pub"
# Output (un exemplu):
# ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC... user@hostname
# COPIAZĂ ÎNTREGUL OUTPUT (toată linia - e lungă!)
```
### Pas 1.5: Adăugare Public Key pe DR Server
**OPȚIUNEA A: Direct din PRIMARY (recomandat - mai rapid)**
```powershell
# Pe PRIMARY - trimite direct cheia pe DR:
$pubKey = Get-Content "$env:USERPROFILE\.ssh\id_rsa.pub"
# Conectare la DR și adăugare key (o să ceară parolă ROOT o singură dată):
ssh root@10.0.20.37 "mkdir -p /root/.ssh && chmod 700 /root/.ssh && echo '$pubKey' >> /root/.ssh/authorized_keys && chmod 600 /root/.ssh/authorized_keys"
# Dacă apare eroare "Permission denied", rulează manual Opțiunea B de mai jos
```
**OPȚIUNEA B: Manual pe DR Server (backup plan)**
```bash
# Deschide o nouă sesiune SSH către DR:
ssh root@10.0.20.37
# Creare director SSH:
mkdir -p /root/.ssh
chmod 700 /root/.ssh
# Editare authorized_keys:
nano /root/.ssh/authorized_keys
# PASTE cheia publică copiată la Pas 1.4 (click dreapta în terminal = paste)
# Salvează: Ctrl+X, apoi Y, apoi Enter
# Setare permissions:
chmod 600 /root/.ssh/authorized_keys
# Verificare:
cat /root/.ssh/authorized_keys
# Ar trebui să vezi cheia publică
# Exit din DR:
exit
```
### Pas 1.6: Test Conexiune SSH Passwordless
```powershell
# Pe PRIMARY - test conexiune FĂRĂ parolă:
ssh -i "$env:USERPROFILE\.ssh\id_rsa" -o "StrictHostKeyChecking=no" root@10.0.20.37 "echo 'SSH OK'"
# Output așteptat:
# SSH OK
# Dacă cere parolă = ceva nu e OK, verifică pașii anteriori!
# Dacă vezi "SSH OK" FĂRĂ să fi introdus parolă = SUCCESS! ✅
```
### Pas 1.7: Verificare finală SSH pentru SYSTEM account
⚠️ **IMPORTANT:** Task Scheduler va rula ca **SYSTEM** account, deci trebuie să configurăm SSH keys pentru SYSTEM.
```powershell
# Pe PRIMARY - rulează ca Administrator:
# Creează director SSH pentru SYSTEM account:
New-Item -ItemType Directory -Force -Path "C:\Windows\System32\config\systemprofile\.ssh"
# Copiază SSH keys de la user curent la SYSTEM:
Copy-Item "$env:USERPROFILE\.ssh\id_rsa*" "C:\Windows\System32\config\systemprofile\.ssh\"
# Verificare:
Test-Path "C:\Windows\System32\config\systemprofile\.ssh\id_rsa"
# Ar trebui să returneze: True
# Test conexiune ca SYSTEM (folosind PsExec dacă e disponibil):
# SAU lasă testarea pentru Task Scheduler la FAZA 4
```
---
## 📦 FAZA 2: UPGRADE RMAN BACKUP SCRIPT (15 minute)
### Pas 2.1: Backup script vechi
```powershell
# Pe PRIMARY:
# Verifică că scriptul existent există:
Test-Path "D:\rman_backup\rman_backup.txt"
# Ar trebui să returneze: True
# BACKUP scriptul vechi (IMPORTANT - safety!):
Copy-Item "D:\rman_backup\rman_backup.txt" "D:\rman_backup\rman_backup.txt.backup_$(Get-Date -Format 'yyyyMMdd_HHmmss')"
# Verificare backup creat:
Get-ChildItem "D:\rman_backup\rman_backup.txt.backup_*"
# Ar trebui să vezi fișierul backup
# OPȚIONAL - Afișează conținut script vechi pentru referință:
Get-Content "D:\rman_backup\rman_backup.txt"
```
### Pas 2.2: Transfer script nou de pe WSL
```powershell
# OPȚIUNEA A: Transfer direct din WSL mount point (dacă e accesibil):
Copy-Item "\\wsl$\Ubuntu\mnt\e\proiecte\ROMFASTSQL\oracle\standby-server-scripts\01_rman_backup_upgraded.txt" "D:\rman_backup\rman_backup.txt" -Force
# OPȚIUNEA B: Dacă PRIMARY nu are acces la WSL, copiază manual:
# 1. Pe WSL/local machine, deschide fișierul:
# cat /mnt/e/proiecte/ROMFASTSQL/oracle/standby-server-scripts/01_rman_backup_upgraded.txt
# 2. Copiază conținutul
# 3. Pe PRIMARY, editează:
# notepad D:\rman_backup\rman_backup.txt
# 4. ÎNLOCUIEȘTE tot conținutul cu cel copiat
# 5. Salvează (Ctrl+S)
```
**CONȚINUT Script Nou (pentru referință - copiază asta dacă Opțiunea B):**
```sql
RUN {
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO COMPRESSED BACKUPSET;
ALLOCATE CHANNEL ch1 DEVICE TYPE DISK;
ALLOCATE CHANNEL ch2 DEVICE TYPE DISK;
# Full backup COMPRESSED + Archive logs (șterge logs după backup)
BACKUP AS COMPRESSED BACKUPSET
INCREMENTAL LEVEL 0
CUMULATIVE
DEVICE TYPE DISK
TAG 'DAILY_FULL_COMPRESSED'
DATABASE
INCLUDE CURRENT CONTROLFILE
PLUS ARCHIVELOG
DELETE INPUT;
# Backup SPFILE separat
BACKUP AS COMPRESSED BACKUPSET SPFILE;
# Verificare backup integrity IMEDIAT după creare
BACKUP VALIDATE CHECK LOGICAL DATABASE;
# Cleanup old backups (păstrează ultimele 2 - REDUNDANCY 2)
ALLOCATE CHANNEL FOR MAINTENANCE TYPE DISK;
DELETE NOPROMPT OBSOLETE DEVICE TYPE DISK;
RELEASE CHANNEL;
RELEASE CHANNEL ch1;
RELEASE CHANNEL ch2;
}
```
### Pas 2.3: Verificare script nou instalat
```powershell
# Pe PRIMARY:
# Afișează script nou:
Get-Content "D:\rman_backup\rman_backup.txt"
# Verifică că are:
# - REDUNDANCY 2 (la linia 2)
# - COMPRESSED BACKUPSET
# - PLUS ARCHIVELOG DELETE INPUT
# - BACKUP VALIDATE CHECK LOGICAL
```
### Pas 2.4: Test RMAN backup upgraded (OPȚIONAL - ia timp!)
⚠️ **ATENȚIE:** Acest test va rula un backup complet (~20-30 minute). Recomandabil doar dacă ai timp SAU lasă să ruleze automat în noaptea următoare.
```powershell
# Pe PRIMARY - dacă vrei să testezi ACUM:
cd D:\rman_backup
# Rulează manual backup-ul (durează 20-30 min):
.\rman_backup.bat
# Monitorizează în alt terminal:
# Tail la Oracle alert log pentru a vedea progresul
# SAU verifică mărimea fișierelor în FRA:
Get-ChildItem "C:\Users\Oracle\recovery_area\ROA\BACKUPSET" -Recurse -File |
Sort-Object LastWriteTime -Descending | Select-Object -First 10 |
Format-Table Name, @{L="Size(MB)";E={[math]::Round($_.Length/1MB,2)}}, LastWriteTime
# Ar trebui să vezi fișiere noi .BKP cu compression (mai mici decât înainte)
```
---
## 📤 FAZA 3: INSTALARE TRANSFER SCRIPT (15 minute)
### Pas 3.1: Creare director logs
```powershell
# Pe PRIMARY:
New-Item -ItemType Directory -Force -Path "D:\rman_backup\logs"
# Verificare:
Test-Path "D:\rman_backup\logs"
# Ar trebui să returneze: True
```
### Pas 3.2: Transfer script PowerShell
```powershell
# OPȚIUNEA A: Transfer direct din WSL:
Copy-Item "\\wsl$\Ubuntu\mnt\e\proiecte\ROMFASTSQL\oracle\standby-server-scripts\02_transfer_to_dr.ps1" "D:\rman_backup\transfer_to_dr.ps1" -Force
# OPȚIUNEA B: Dacă PRIMARY nu vede WSL, folosește transfer prin SSH:
# Pe WSL/local machine:
scp -P 22122 /mnt/e/proiecte/ROMFASTSQL/oracle/standby-server-scripts/02_transfer_to_dr.ps1 romfast@10.0.20.36:/d/rman_backup/
# Verificare pe PRIMARY:
Test-Path "D:\rman_backup\transfer_to_dr.ps1"
# Ar trebui să returneze: True
```
### Pas 3.3: Verificare parametri script
```powershell
# Pe PRIMARY - afișează header script:
Get-Content "D:\rman_backup\transfer_to_dr.ps1" -Head 15
# Verifică parametrii default:
# - SourceFRA = "C:\Users\Oracle\recovery_area\ROA" ✅
# - DRHost = "10.0.20.37" ✅
# - DRUser = "root" ✅
# - DRPath = "/opt/oracle/backups/primary" ✅
# - SSHKeyPath = "$env:USERPROFILE\.ssh\id_rsa" ✅
# - MaxBackupsOnDR = 1 ✅ (păstrează doar ultimul backup pe DR)
```
### Pas 3.4: Test manual transfer script
⚠️ **ATENȚIE:** Acest test va transfera backup-urile existente către DR. Durează ~10-15 minute în funcție de mărimea backup-urilor.
```powershell
# Pe PRIMARY - test manual:
PowerShell -ExecutionPolicy Bypass -NoProfile -File "D:\rman_backup\transfer_to_dr.ps1"
# Output așteptat:
# [2025-10-08 HH:MM:SS] [INFO] Oracle DR Backup Transfer Started
# [2025-10-08 HH:MM:SS] [INFO] Testing SSH connection to 10.0.20.37...
# [2025-10-08 HH:MM:SS] [SUCCESS] SSH connection successful
# [2025-10-08 HH:MM:SS] [INFO] Waiting for RMAN backup to complete...
# [2025-10-08 HH:MM:SS] [INFO] Searching for today's backup files...
# [2025-10-08 HH:MM:SS] [INFO] Found X files, total size: Y GB
# [2025-10-08 HH:MM:SS] [INFO] Transferring: filename.BKP (XXX MB)
# [2025-10-08 HH:MM:SS] [SUCCESS] ✅ Transferred: filename.BKP
# ...
# [2025-10-08 HH:MM:SS] [INFO] Transfer summary: X succeeded, 0 failed
# [2025-10-08 HH:MM:SS] [INFO] DR Backup Transfer Completed Successfully
# Dacă apare EROARE, verifică:
# - SSH connection (Pas 1.6)
# - Directoare DR (verificate în PRE-VERIFICĂRI)
# - Backup-uri există în FRA (verifică cu Get-ChildItem)
```
### Pas 3.5: Verificare fișiere transferate pe DR
```powershell
# Pe PRIMARY - verifică remote pe DR:
ssh -i "$env:USERPROFILE\.ssh\id_rsa" root@10.0.20.37 "ls -lh /opt/oracle/backups/primary/"
# Ar trebui să vezi fișierele .BKP transferate
# Exemplu output:
# -rw-r--r-- 1 root root 2.1G Oct 8 03:15 o1_mf_nnnd0_DAILY_FULL_COMPRESSED_mfxxx.BKP
# -rw-r--r-- 1 root root 45M Oct 8 03:20 o1_mf_ncsnf_TAG20251008T0315_mfxxx.BKP
```
### Pas 3.6: Verificare log transfer
```powershell
# Pe PRIMARY:
$logFile = Get-ChildItem "D:\rman_backup\logs\transfer_*.log" | Sort-Object LastWriteTime -Descending | Select-Object -First 1
# Afișează ultimele 30 linii din log:
Get-Content $logFile -Tail 30
# Caută erori:
Select-String -Path $logFile -Pattern "ERROR|FAILED"
# Dacă nu returnează nimic = totul OK! ✅
```
---
## ⏰ FAZA 4: SETUP TASK SCHEDULER (10 minute)
### Pas 4.1: Verificare script setup există
```powershell
# Pe PRIMARY - verifică că ai scriptul de setup:
# OPȚIUNEA A: Transfer din WSL:
Copy-Item "\\wsl$\Ubuntu\mnt\e\proiecte\ROMFASTSQL\oracle\standby-server-scripts\03_setup_dr_transfer_task.ps1" "D:\rman_backup\setup_task.ps1" -Force
# OPȚIUNEA B: Transfer prin SCP:
# Pe WSL: scp -P 22122 /mnt/e/proiecte/ROMFASTSQL/oracle/standby-server-scripts/03_setup_dr_transfer_task.ps1 romfast@10.0.20.36:/d/rman_backup/setup_task.ps1
```
### Pas 4.2: Rulare script setup (ca Administrator!)
```powershell
# Pe PRIMARY - DESCHIDE PowerShell ca Administrator!
# Click dreapta pe PowerShell > Run as Administrator
# Verifică că ești Administrator:
([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
# Ar trebui să returneze: True
# Rulează script setup:
PowerShell -ExecutionPolicy Bypass -File "D:\rman_backup\setup_task.ps1"
# Output așteptat:
# Setting up Oracle DR Transfer scheduled task...
# Created log directory: D:\rman_backup\logs
# ✅ Task created successfully: Oracle_DR_Transfer
#
# Task details:
# Name: Oracle_DR_Transfer
# Schedule: Daily at 03:00 AM
# Script: D:\rman_backup\transfer_to_dr.ps1
# Logs: D:\rman_backup\logs\transfer_YYYYMMDD.log
#
# Task status: Ready
```
### Pas 4.3: Verificare Task creat
```powershell
# Pe PRIMARY:
Get-ScheduledTask -TaskName "Oracle_DR_Transfer" | Format-List *
# Verifică:
# - TaskName: Oracle_DR_Transfer
# - State: Ready
# - Triggers: Daily at 03:00 AM
# - Actions: PowerShell with transfer_to_dr.ps1
# SAU vizualizează în Task Scheduler GUI:
taskschd.msc
# Caută task-ul "Oracle_DR_Transfer" în Task Scheduler Library
```
### Pas 4.4: Test manual task (OPȚIONAL)
```powershell
# Pe PRIMARY - test rulare manuală:
Start-ScheduledTask -TaskName "Oracle_DR_Transfer"
# Monitorizează status:
Get-ScheduledTask -TaskName "Oracle_DR_Transfer" | Select-Object Name, State, LastRunTime, LastTaskResult
# Verifică log:
Start-Sleep -Seconds 60 # Așteaptă să se termine
Get-Content "D:\rman_backup\logs\transfer_$(Get-Date -Format 'yyyyMMdd').log" -Tail 20
```
---
## 🧪 FAZA 5: TESTING ȘI VALIDARE (30-60 minute)
### Test 1: Verificare calendar backup existent
```powershell
# Pe PRIMARY - verifică task-ul RMAN existent:
Get-ScheduledTask | Where-Object {$_.TaskName -like "*backup*" -or $_.TaskName -like "*RMAN*"} |
Select-Object TaskName, State, @{L="Trigger";E={(Get-ScheduledTaskInfo $_).NextRunTime}}
# Identifică task-ul de la 02:00 AM
# Verifică task-ul MareBackup de la 21:00
```
### Test 2: Verificare flow complet (simulare)
```
02:00 AM → RMAN Backup (EXISTENT - upgradat)
03:00 AM → Transfer DR (NOU - instalat)
21:00 PM → MareBackup HDD E:\ (EXISTENT - nu modificat)
```
**Verificare:**
1. RMAN backup task există și e setat pentru 02:00 AM
2. DR transfer task există și e setat pentru 03:00 AM (DUPĂ RMAN)
3. MareBackup task există și e setat pentru 21:00 (DUPĂ toate)
### Test 3: Verificare spațiu disk
```powershell
# Pe PRIMARY:
Get-PSDrive C,D,E | Format-Table Name,
@{L="Used(GB)";E={[math]::Round($_.Used/1GB,1)}},
@{L="Free(GB)";E={[math]::Round($_.Free/1GB,1)}},
@{L="Total(GB)";E={[math]::Round(($_.Used+$_.Free)/1GB,1)}},
@{L="Use%";E={[math]::Round($_.Used/($_.Used+$_.Free)*100,0)}}
# Verifică că:
# - C:\ are >10GB free (pentru FRA și temp)
# - D:\ are >20GB free (pentru scripts și logs)
# - E:\ variabil (HDD extern)
```
```bash
# Pe DR:
ssh root@10.0.20.37 "df -h /opt/oracle"
# Verifică că ai >50GB free (pentru 3+ zile de backups compressed)
```
### Test 4: Test restore pe DR (RECOMANDAT - durează 45-75 min)
⚠️ **IMPORTANT:** Acest test validează că backup-urile transferate FUNCȚIONEAZĂ și pot fi folosite pentru disaster recovery!
```bash
# Pe DR Server:
ssh root@10.0.20.37
# Verifică că backup-uri există:
ls -lh /opt/oracle/backups/primary/
# Rulează test restore (DOAR dacă ai timpul disponibil):
/opt/oracle/scripts/dr/05_test_restore_dr.sh
# Monitorizează progres:
tail -f /opt/oracle/logs/dr/test_restore_*.log
# După 45-75 minute, verifică raport:
cat /opt/oracle/logs/dr/test_report_$(date +%Y%m%d).txt
# ⚠️ IMPORTANT: După test, OPREȘTE database pe DR!
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 <<< 'SHUTDOWN IMMEDIATE;'
"
# Exit din DR:
exit
```
---
## 📊 POST-IMPLEMENTATION MONITORING
### Zi 1 (mâine dimineață):
```powershell
# Pe PRIMARY - verifică că totul a rulat OK noaptea trecută:
# Check 1: RMAN backup (02:00 AM)
$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 RMAN backup: $($lastBackup.Name)"
Write-Host "Age: $($age.Hours) hours $($age.Minutes) minutes"
# Ar trebui să fie <12 ore (backup de azi-noapte la 02:00)
# Check 2: Transfer DR (03:00 AM)
$transferLog = Get-ChildItem "D:\rman_backup\logs\transfer_*.log" |
Sort-Object LastWriteTime -Descending | Select-Object -First 1
Write-Host "`nTransfer log: $($transferLog.Name)"
Get-Content $transferLog -Tail 10
# Ar trebui să vezi "Transfer Completed Successfully"
# Check 3: MareBackup HDD (21:00)
Get-ChildItem "E:\backup_roa\" -Recurse |
Sort-Object LastWriteTime -Descending | Select-Object -First 5 |
Format-Table Name, @{L="Size(MB)";E={[math]::Round($_.Length/1MB,2)}}, LastWriteTime
```
```bash
# Pe DR - verifică backup-uri primite:
ssh root@10.0.20.37 "ls -lth /opt/oracle/backups/primary/ | head -10"
# Ar trebui să vezi fișiere noi de azi-noapte
```
### Săptămânal (Luni dimineața):
```powershell
# Quick health check:
Get-Content "D:\rman_backup\logs\transfer_*.log" | Select-String "ERROR|FAILED"
# Dacă nu returnează nimic = totul OK!
# Verifică spațiu disk:
Get-PSDrive C,D,E | Format-Table Name, @{L="Free(GB)";E={[math]::Round($_.Free/1GB,1)}}
```
### Lunar (Prima Duminică):
```bash
# Test restore complet pe DR (OBLIGATORIU!):
ssh root@10.0.20.37 "/opt/oracle/scripts/dr/05_test_restore_dr.sh"
# Verifică raport și documentează RTO/RPO
```
---
## 🚨 TROUBLESHOOTING
### Problem: "SSH connection refused"
```powershell
# Test conectivitate:
ping 10.0.20.37
# Test SSH manual:
ssh -v -i "$env:USERPROFILE\.ssh\id_rsa" root@10.0.20.37 "echo OK"
# Soluții:
# 1. Verifică DR server pornit
# 2. Verifică firewall permite port 22
# 3. Re-generare SSH keys (vezi FAZA 1)
```
### Problem: "RMAN backup failed"
```powershell
# Check Oracle alert log:
# Găsește alert.log în $ORACLE_BASE/diag/rdbms/roa/ROA/trace/
# Check FRA space:
sqlplus / as sysdba
SELECT * FROM v$recovery_area_usage;
# Cleanup manual dacă e plin:
RMAN> DELETE NOPROMPT OBSOLETE;
```
### Problem: "Transfer failed - no files found"
```powershell
# Verifică că backup RMAN a rulat:
Get-ChildItem "C:\Users\Oracle\recovery_area\ROA\BACKUPSET" -Recurse -File |
Sort-Object LastWriteTime -Descending | Select-Object -First 5
# Verifică că fișierele sunt din azi:
# Ar trebui să vezi LastWriteTime = azi după 02:00 AM
```
---
## ✅ CHECKLIST FINAL
### Pre-Implementation:
- [x] DR Server operațional (container oracle-standby UP)
- [x] Spațiu disk verificat (93GB liberi pe DR)
- [x] Directoare create (`/opt/oracle/backups/primary/`)
- [x] Script-uri locale pregătite (toate .ps1, .txt, .sh)
### FAZA 1 - SSH Keys:
- [ ] SSH key pair generat pe PRIMARY
- [ ] Public key copiat pe DR
- [ ] Test conexiune passwordless OK
- [ ] SSH keys copiate pentru SYSTEM account
### FAZA 2 - RMAN Upgrade:
- [ ] Script vechi backed up
- [ ] Script nou instalat cu REDUNDANCY 2
- [ ] Verificat conținut script nou
- [ ] Test backup (opțional)
### FAZA 3 - Transfer Script:
- [ ] Director logs creat
- [ ] Script transfer_to_dr.ps1 instalat
- [ ] Test manual transfer OK
- [ ] Fișiere verificate pe DR
- [ ] Log transfer fără erori
### FAZA 4 - Task Scheduler:
- [ ] Script setup rulat ca Administrator
- [ ] Task "Oracle_DR_Transfer" creat
- [ ] Task verificat (Ready, 03:00 AM daily)
- [ ] Test manual task (opțional)
### FAZA 5 - Testing:
- [ ] Flow complet verificat (02:00 → 03:00 → 21:00)
- [ ] Spațiu disk verificat (PRIMARY și DR)
- [ ] Test restore pe DR (recomandat)
- [ ] Database DR oprit după test
### Post-Implementation:
- [ ] Monitorizare Zi 1 (mâine dimineață)
- [ ] Monitorizare săptămânală
- [ ] Schedule primul test restore lunar
---
## 📞 CONTACT ȘI ESCALATION
| Issue | Response Time | Action |
|-------|---------------|--------|
| **PRIMARY Down** | Immediate | Activate DR (`full_dr_restore.sh` pe 10.0.20.37) |
| **Backup Failed** | 2 hours | Check logs, retry manual |
| **Transfer Failed** | 4 hours | Verifică SSH, retry |
---
## 📄 FIȘIERE IMPORTANTE
**Pe PRIMARY (10.0.20.36):**
```
D:\rman_backup\
├── rman_backup.bat # Launcher existent
├── rman_backup.txt # UPGRADED cu compression
├── rman_backup.txt.backup_* # Backup vechi (safety)
├── transfer_to_dr.ps1 # NOU - transfer script
├── setup_task.ps1 # Setup Task Scheduler
└── logs\
└── transfer_YYYYMMDD.log # Transfer logs
```
**Pe DR (10.0.20.37):**
```
/opt/oracle/backups/primary/ # Backup-uri primite
/opt/oracle/scripts/dr/ # Restore scripts
/opt/oracle/logs/dr/ # Restore logs
```
---
## 🎯 NEXT STEPS
1.**CITEȘTE acest ghid complet**
2. 🔜 **EXECUTĂ FAZA 1** (SSH Keys)
3. 🔜 **EXECUTĂ FAZA 2** (RMAN Upgrade)
4. 🔜 **EXECUTĂ FAZA 3** (Transfer Script)
5. 🔜 **EXECUTĂ FAZA 4** (Task Scheduler)
6. 🔜 **EXECUTĂ FAZA 5** (Testing)
7. 📅 **MONITORIZEAZĂ** primele 3 zile
8. 📅 **SCHEDULE** primul test restore (luna viitoare)
---
**Document creat:** 2025-10-08
**Status:** Ready for Implementation
**Versiune:** 1.0
**Durată estimată:** 60-90 minute (exclusiv test restore opțional)
---
## 🔐 SECURITY NOTES
- SSH private key (`id_rsa`) e sensibil - NU îl partaja niciodată!
- Backup SSH keys în locație sigură offline
- Logs pot conține informații sensibile - restricționează access
- Test restore pe DR NU afectează PRIMARY (database pe DR e separat)
---
**Succes la implementare! 🚀**
**Dacă întâmpini probleme, consultă secțiunea TROUBLESHOOTING sau contactează suportul.**