Oracle DR: Complete Windows VM implementation and cleanup

Major changes:
- Implemented Windows VM 109 as DR target (replaces Linux LXC)
- Tested RMAN restore successfully (12-15 min RTO, 24h RPO)
- Added comprehensive DR documentation:
  * DR_WINDOWS_VM_STATUS_2025-10-09.md - Current implementation status
  * DR_UPGRADE_TO_CUMULATIVE_PLAN.md - Plan for cumulative incremental backups
  * DR_VM_MIGRATION_GUIDE.md - Guide for VM migration between Proxmox nodes
- Updated DR_WINDOWS_VM_IMPLEMENTATION_PLAN.md with completed phases

New scripts:
- add_system_key_dr.ps1 - SSH key setup for automated transfers
- configure_listener_dr.ps1 - Oracle Listener configuration
- fix_ssh_via_service.ps1 - SSH authentication fix
- rman_restore_final.cmd - Working RMAN restore script (tested)
- transfer_to_dr.ps1 - FULL backup transfer (renamed from 02_*)
- transfer_incremental.ps1 - Incremental backup transfer (renamed from 02b_*)

Cleanup:
- Removed 19 obsolete scripts for Linux LXC DR
- Removed 8 outdated documentation files
- Organized project structure

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Marius
2025-10-09 18:54:08 +03:00
parent 6a6ffe84af
commit ac2340c967
26 changed files with 2309 additions and 6208 deletions

View File

@@ -0,0 +1,101 @@
@echo off
REM RMAN Restore Database - FINAL VERSION
REM Backups are in FRA - RMAN will find them automatically
REM Run this script as Administrator on DR VM (10.0.20.37)
set ORACLE_HOME=C:\Users\Administrator\Downloads\WINDOWS.X64_193000_db_home
set ORACLE_SID=ROA
set PATH=%ORACLE_HOME%\bin;%PATH%
echo ============================================
echo RMAN Database Restore - DR VM (FINAL)
echo ============================================
echo.
echo Database: ROA
echo DBID: 1363569330
echo Backups: C:\Users\oracle\recovery_area\ROA\autobackup
echo.
REM Create temp directory
if not exist D:\oracle\temp mkdir D:\oracle\temp
REM Step 1: Shutdown database if running
echo [1/5] Shutting down database if running...
echo SHUTDOWN ABORT; > D:\oracle\temp\shutdown.sql
echo EXIT; >> D:\oracle\temp\shutdown.sql
sqlplus -s / as sysdba @D:\oracle\temp\shutdown.sql > nul 2>&1
timeout /t 2 /nobreak > nul
REM Step 2: Startup NOMOUNT
echo [2/5] Starting database in NOMOUNT mode...
echo STARTUP NOMOUNT PFILE='C:\Users\oracle\admin\ROA\pfile\initROA.ora'; > D:\oracle\temp\nomount.sql
echo EXIT; >> D:\oracle\temp\nomount.sql
sqlplus / as sysdba @D:\oracle\temp\nomount.sql
timeout /t 3 /nobreak > nul
REM Step 3: Create simplified RMAN script
echo [3/5] Creating RMAN restore script...
set RMAN_SCRIPT=D:\oracle\temp\restore_final.rman
echo SET DBID 1363569330; > %RMAN_SCRIPT%
echo. >> %RMAN_SCRIPT%
echo RUN { >> %RMAN_SCRIPT%
echo ALLOCATE CHANNEL ch1 DEVICE TYPE DISK FORMAT 'C:/Users/oracle/recovery_area/ROA/autobackup/%%U'; >> %RMAN_SCRIPT%
echo RESTORE CONTROLFILE FROM 'C:/Users/oracle/recovery_area/ROA/autobackup/O1_MF_S_1214013953_NGFVLL29_.BKP'; >> %RMAN_SCRIPT%
echo RELEASE CHANNEL ch1; >> %RMAN_SCRIPT%
echo } >> %RMAN_SCRIPT%
echo. >> %RMAN_SCRIPT%
echo ALTER DATABASE MOUNT; >> %RMAN_SCRIPT%
echo. >> %RMAN_SCRIPT%
echo CATALOG START WITH 'C:/Users/oracle/recovery_area/ROA/autobackup' NOPROMPT; >> %RMAN_SCRIPT%
echo. >> %RMAN_SCRIPT%
echo RUN { >> %RMAN_SCRIPT%
echo ALLOCATE CHANNEL ch1 DEVICE TYPE DISK; >> %RMAN_SCRIPT%
echo ALLOCATE CHANNEL ch2 DEVICE TYPE DISK; >> %RMAN_SCRIPT%
echo RESTORE DATABASE; >> %RMAN_SCRIPT%
echo RELEASE CHANNEL ch1; >> %RMAN_SCRIPT%
echo RELEASE CHANNEL ch2; >> %RMAN_SCRIPT%
echo } >> %RMAN_SCRIPT%
echo. >> %RMAN_SCRIPT%
echo RUN { >> %RMAN_SCRIPT%
echo ALLOCATE CHANNEL ch1 DEVICE TYPE DISK; >> %RMAN_SCRIPT%
echo RECOVER DATABASE NOREDO; >> %RMAN_SCRIPT%
echo RELEASE CHANNEL ch1; >> %RMAN_SCRIPT%
echo } >> %RMAN_SCRIPT%
echo. >> %RMAN_SCRIPT%
echo ALTER DATABASE OPEN RESETLOGS; >> %RMAN_SCRIPT%
echo. >> %RMAN_SCRIPT%
echo ALTER TABLESPACE TEMP ADD TEMPFILE 'C:\Users\oracle\oradata\ROA\temp01.dbf' SIZE 567M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE 32767M; >> %RMAN_SCRIPT%
echo. >> %RMAN_SCRIPT%
echo EXIT; >> %RMAN_SCRIPT%
REM Step 4: Run RMAN restore
echo [4/5] Running RMAN restore (this will take 10-20 minutes)...
rman target / cmdfile=%RMAN_SCRIPT% log=D:\oracle\logs\rman_restore_final.log
REM Step 5: Verify database status
echo.
echo [5/5] Verifying database status...
echo SET PAGESIZE 100 LINESIZE 200 > D:\oracle\temp\verify.sql
echo SELECT 'DB_NAME: ' ^|^| NAME ^|^| ', OPEN_MODE: ' ^|^| OPEN_MODE FROM V$DATABASE; >> D:\oracle\temp\verify.sql
echo SELECT 'INSTANCE: ' ^|^| INSTANCE_NAME ^|^| ', STATUS: ' ^|^| STATUS FROM V$INSTANCE; >> D:\oracle\temp\verify.sql
echo SELECT 'TABLESPACES: ' ^|^| COUNT(*) FROM DBA_TABLESPACES; >> D:\oracle\temp\verify.sql
echo SELECT 'DATAFILES: ' ^|^| COUNT(*) FROM DBA_DATA_FILES; >> D:\oracle\temp\verify.sql
echo SELECT 'TABLES: ' ^|^| COUNT(*) FROM DBA_TABLES WHERE OWNER NOT IN ('SYS','SYSTEM'); >> D:\oracle\temp\verify.sql
echo EXIT; >> D:\oracle\temp\verify.sql
sqlplus -s / as sysdba @D:\oracle\temp\verify.sql
echo.
echo ============================================
echo Database Restore Complete!
echo ============================================
echo.
echo Log: D:\oracle\logs\rman_restore_final.log
echo.
echo Next steps:
echo 1. Test database connectivity
echo 2. Verify application tables
echo 3. Configure RMAN retention
echo 4. Shutdown DR VM to conserve resources
echo.