Oracle DR: Phase 6.5 - Complete cleanup and restore scripts (TESTING)

Major improvements to DR restore workflow:

**New Scripts:**
- cleanup_database.cmd: Complete cleanup using oradim + registry deletion
- rman_restore_from_zero.cmd: Copy backups to recovery_area + restore

**Key Solutions Implemented:**
1. RMAN AUTOBACKUP limitation: Must have backups in recovery_area
   - Solution: Copy ALL backups from F:\ (NFS) to C:\...\recovery_area
   - Performance: 6.7 GB copied in ~2 minutes

2. Oracle service persistence issue: Service remains after sc delete
   - Solution: Use oradim -delete -sid ROA (proper Oracle cleanup)
   - Bonus: Delete registry keys to ensure clean state

**Current Status:**
- Cleanup:  TESTED (oradim works perfectly)
- Backup copy:  TESTED (6.7 GB in 2 min)
- RMAN restore: 🟡 IN PROGRESS (expected completion 03:35-03:40)

**Updated:**
- DR_UPGRADE_TO_CUMULATIVE_PLAN.md: Progress tracking + solutions documented
- rman_restore_final.cmd: Use F:\ mount point

🤖 Generated with Claude Code
This commit is contained in:
Marius
2025-10-10 03:29:25 +03:00
parent 8682e0ee04
commit cbad9ee779
4 changed files with 630 additions and 49 deletions

View File

@@ -0,0 +1,102 @@
@echo off
REM Oracle Database Complete Cleanup Script
REM Purpose: Remove all database files and services to restore DR VM to clean state
REM Run as: Administrator
REM Location: D:\oracle\scripts\cleanup_database.cmd
set ORACLE_HOME=C:\Users\Administrator\Downloads\WINDOWS.X64_193000_db_home
set ORACLE_SID=ROA
set PATH=%ORACLE_HOME%\bin;%PATH%
echo ============================================
echo Oracle Database Cleanup Script
echo ============================================
echo.
echo This script will:
echo 1. Stop and delete Oracle service
echo 2. Delete all database files (datafiles, control files, redo logs)
echo 3. Delete local FRA (backups are on F:\, safe to delete)
echo 4. Delete trace files
echo 5. Leave VM in completely clean state (no service, no DB files)
echo.
echo WARNING: This will DELETE the entire database!
echo Starting cleanup in 3 seconds... (Press Ctrl+C to cancel)
timeout /t 3 /nobreak > nul
REM Create temp directory
if not exist D:\oracle\temp mkdir D:\oracle\temp
if not exist D:\oracle\logs mkdir D:\oracle\logs
echo.
echo [1/6] Shutting down database (if running)...
echo SHUTDOWN ABORT; > D:\oracle\temp\cleanup_shutdown.sql
echo EXIT; >> D:\oracle\temp\cleanup_shutdown.sql
sqlplus -s / as sysdba @D:\oracle\temp\cleanup_shutdown.sql > nul 2>&1
timeout /t 3 /nobreak > nul
echo [2/6] Stopping and deleting Oracle service + registry + instance...
REM Method 1: Use oradim to delete Oracle instance (recommended)
set ORACLE_HOME=C:\Users\Administrator\Downloads\WINDOWS.X64_193000_db_home
set PATH=%ORACLE_HOME%\bin;%PATH%
oradim -delete -sid ROA >nul 2>&1
echo Oracle instance deleted with oradim
REM Method 2: Delete service directly (backup method)
sc query OracleServiceROA > nul 2>&1
if %errorlevel% equ 0 (
sc stop OracleServiceROA > nul 2>&1
timeout /t 2 /nobreak > nul
sc delete OracleServiceROA > nul 2>&1
echo Oracle service deleted with sc
)
REM Method 3: Delete Oracle registry keys (ensures clean state)
reg delete "HKLM\SOFTWARE\ORACLE\KEY_OraDB19Home1" /v ORA_ROA_PFILE /f >nul 2>&1
reg delete "HKLM\SOFTWARE\ORACLE\KEY_OraDB19Home1" /v ORA_ROA_AUTOSTART /f >nul 2>&1
reg delete "HKLM\SOFTWARE\ORACLE\KEY_OraDB19Home1" /v ORA_ROA_SHUTDOWN /f >nul 2>&1
reg delete "HKLM\SOFTWARE\ORACLE\KEY_OraDB19Home1" /v ORA_ROA_SHUTDOWNTYPE /f >nul 2>&1
reg delete "HKLM\SOFTWARE\ORACLE\KEY_OraDB19Home1" /v ORA_ROA_SHUTDOWN_TIMEOUT /f >nul 2>&1
echo Registry keys cleaned
timeout /t 2 /nobreak > nul
echo [3/6] Deleting database files...
echo Deleting datafiles...
del /Q C:\Users\oracle\oradata\ROA\*.dbf 2>nul
echo Deleting control files...
del /Q C:\Users\oracle\oradata\ROA\*.ctl 2>nul
echo Deleting redo logs...
del /Q C:\Users\oracle\oradata\ROA\*.log 2>nul
echo [4/6] Deleting local FRA (backups are on F:\)...
if exist C:\Users\oracle\recovery_area\ROA (
rmdir /S /Q C:\Users\oracle\recovery_area\ROA 2>nul
mkdir C:\Users\oracle\recovery_area\ROA
echo FRA cleared
) else (
mkdir C:\Users\oracle\recovery_area\ROA 2>nul
echo FRA directory created
)
echo [5/6] Deleting trace files (to save space)...
del /Q C:\Users\oracle\diag\rdbms\roa\ROA\trace\*.trc 2>nul
del /Q C:\Users\oracle\diag\rdbms\roa\ROA\trace\*.trm 2>nul
echo Trace files deleted
echo.
echo ============================================
echo Database Cleanup Complete!
echo ============================================
echo.
echo Current state:
echo [YES] Oracle software installed
echo [YES] PFILE exists (C:\Users\oracle\admin\ROA\pfile\initROA.ora)
echo [NO] Oracle service (will be created during restore)
echo [NO] Database files (will be restored from backups)
echo [NO] Control files (will be restored from backups)
echo [NO] Datafiles (will be restored from backups)
echo.
echo VM is now in COMPLETELY CLEAN STATE!
echo.
echo Next step: Run D:\oracle\scripts\rman_restore_from_zero.cmd
echo (It will create the Oracle service and restore the database)
echo.