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:
101
oracle/standby-server-scripts/rman_restore_final.cmd
Normal file
101
oracle/standby-server-scripts/rman_restore_final.cmd
Normal 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.
|
||||
Reference in New Issue
Block a user