789 lines
26 KiB
Batchfile
789 lines
26 KiB
Batchfile
@echo off
|
|
REM ==============================================================================
|
|
REM Script: 00-MASTER-MIGRATION.bat
|
|
REM Descriere: Master control script - Windows Edition
|
|
REM Data: 1 Octombrie 2025
|
|
REM Autor: Migrare Oracle automata
|
|
REM ==============================================================================
|
|
REM
|
|
REM Acest script controleaza intregul proces de migrare Oracle pe Windows
|
|
REM - Ghideaza utilizatorul prin fiecare pas
|
|
REM - Suport special pentru UPGRADE IN-PLACE (Oracle vechi → 21c pe acelasi PC)
|
|
REM - Poate rula scripturi bash prin WSL sau ghidare manuala
|
|
REM
|
|
REM ==============================================================================
|
|
|
|
setlocal enabledelayedexpansion
|
|
|
|
REM Culori (Windows 10+)
|
|
set "GREEN=[92m"
|
|
set "YELLOW=[93m"
|
|
set "RED=[91m"
|
|
set "BLUE=[94m"
|
|
set "NC=[0m"
|
|
|
|
REM Banner
|
|
cls
|
|
echo.
|
|
echo ========================================
|
|
echo MASTER MIGRARE ORACLE 10g - 21c XE
|
|
echo Windows Edition
|
|
echo ========================================
|
|
echo.
|
|
echo Acest script te va ghida prin intregul proces de migrare Oracle.
|
|
echo.
|
|
echo IMPORTANT: Ruleaza ca ADMINISTRATOR!
|
|
echo.
|
|
pause
|
|
|
|
REM ==============================================================================
|
|
REM CONFIGURARE MEDIU
|
|
REM ==============================================================================
|
|
|
|
cls
|
|
echo.
|
|
echo ========================================
|
|
echo CONFIGURARE CONEXIUNI ORACLE
|
|
echo ========================================
|
|
echo.
|
|
|
|
REM Detectare SQLPlus (Oracle Client)
|
|
set SQLPLUS_AVAILABLE=0
|
|
where sqlplus >nul 2>&1
|
|
if %errorlevel% equ 0 (
|
|
set SQLPLUS_AVAILABLE=1
|
|
echo %GREEN%[✓] SQLPlus disponibil%NC%
|
|
) else (
|
|
echo %YELLOW%[!] SQLPlus nu este instalat sau nu este in PATH%NC%
|
|
)
|
|
echo.
|
|
|
|
echo Unde este instalat Oracle 21c XE?
|
|
echo 1) Acest PC Windows (local)
|
|
echo 2) VM/Server Linux (cu WSL pentru scripturi)
|
|
echo 3) LXC Proxmox (necesita WSL + SSH)
|
|
echo.
|
|
set /p ORACLE_LOCATION="Alegere (1/2/3): "
|
|
|
|
if "%ORACLE_LOCATION%"=="1" (
|
|
set ORACLE_CONNECT_TYPE=WINDOWS_LOCAL
|
|
echo - Oracle 21c: Windows Local
|
|
) else if "%ORACLE_LOCATION%"=="2" (
|
|
set /p ORACLE_HOST="IP/hostname server Linux: "
|
|
set ORACLE_CONNECT_TYPE=LINUX_REMOTE
|
|
echo - Oracle 21c: Linux Remote ^(!ORACLE_HOST!^)
|
|
) else if "%ORACLE_LOCATION%"=="3" (
|
|
set /p PROXMOX_HOST="IP/hostname Proxmox: "
|
|
set /p LXC_ID="ID LXC: "
|
|
set ORACLE_CONNECT_TYPE=LXC
|
|
echo - Oracle 21c: LXC !LXC_ID! @ !PROXMOX_HOST!
|
|
) else (
|
|
echo %RED%Alegere invalida!%NC%
|
|
pause
|
|
exit /b 1
|
|
)
|
|
|
|
echo.
|
|
echo ========================================
|
|
echo CONFIGURARE EXPORT
|
|
echo ========================================
|
|
echo.
|
|
echo Cum vrei sa faci EXPORTUL din Oracle sursa?
|
|
echo 1) AUTOMAT - SSH catre server sursa (export automat)
|
|
echo 2) MANUAL - Tu exporti, scriptul preia fisierele DMP
|
|
echo 3) LOCAL - Migrare pe acelasi server (porturi diferite)
|
|
echo 4) UPGRADE IN-PLACE - Oracle vechi - Oracle nou (acest PC, ghidare completa)
|
|
echo.
|
|
set /p EXPORT_CHOICE="Alegere (1/2/3/4): "
|
|
|
|
if "%EXPORT_CHOICE%"=="1" (
|
|
REM Export AUTOMAT via SSH
|
|
set /p ORACLE_SOURCE_HOST="IP/hostname Oracle sursa: "
|
|
set /p ORACLE_SOURCE_USER="User SSH: "
|
|
set /p ORACLE_SOURCE_OS="Tip server sursa (Linux/Windows): "
|
|
set EXPORT_MODE=AUTO
|
|
echo - Export AUTOMAT via SSH
|
|
|
|
) else if "%EXPORT_CHOICE%"=="2" (
|
|
REM Export MANUAL
|
|
set /p EXPORT_DIR="Director unde vei pune fisierele DMP (ex: D:\ORACLE_EXPORT): "
|
|
set EXPORT_MODE=MANUAL
|
|
echo - Export MANUAL (tu exporti local)
|
|
|
|
) else if "%EXPORT_CHOICE%"=="3" (
|
|
REM Migrare LOCALA (porturi diferite)
|
|
echo.
|
|
echo %YELLOW%Migrare LOCALA detectata (acelasi server)%NC%
|
|
echo.
|
|
set /p ORACLE_SOURCE_PORT="Port Oracle SURSA (ex: 1521): "
|
|
set /p ORACLE_SOURCE_SID="SID Oracle SURSA (ex: XE): "
|
|
set /p ORACLE_SOURCE_PASS="Password SYSTEM pentru Oracle SURSA: "
|
|
set /p ORACLE_DEST_PORT="Port Oracle DESTINATIE (ex: 1522): "
|
|
set /p ORACLE_DEST_SID="SID Oracle DESTINATIE (ex: roa): "
|
|
set /p EXPORT_DIR="Director pentru export local (ex: D:\oracle-export): "
|
|
set EXPORT_MODE=LOCAL
|
|
echo - Export LOCAL (acelasi server: !ORACLE_SOURCE_PORT! - !ORACLE_DEST_PORT!)
|
|
|
|
) else if "%EXPORT_CHOICE%"=="4" (
|
|
REM UPGRADE IN-PLACE
|
|
cls
|
|
echo.
|
|
echo ╔══════════════════════════════════════════════════════════════╗
|
|
echo ║ UPGRADE ORACLE IN-PLACE - GHIDARE COMPLETA ║
|
|
echo ╚══════════════════════════════════════════════════════════════╝
|
|
echo.
|
|
echo Acest mod te va ghida prin urmatorii pasi:
|
|
echo 1. 📤 Export DMP din Oracle vechi (pe Windows)
|
|
echo 2. ⏸️ Oprire servicii Oracle vechi
|
|
echo 3. 📥 Instalare Oracle 21c XE nou
|
|
echo 4. 📦 Import DMP in Oracle 21c
|
|
echo 5. ✅ Verificare si finalizare
|
|
echo.
|
|
|
|
set /p OLD_ORACLE_PORT="Port Oracle VECHI (default 1521): "
|
|
if "!OLD_ORACLE_PORT!"=="" set OLD_ORACLE_PORT=1521
|
|
|
|
set /p OLD_ORACLE_SID="SID Oracle VECHI (ex: XE, ROA): "
|
|
set /p OLD_ORACLE_PASS="Password SYSTEM pentru Oracle VECHI: "
|
|
set /p EXPORT_DIR="Director pentru salvare DMP (ex: D:\oracle-export): "
|
|
|
|
set EXPORT_MODE=INPLACE
|
|
set ORACLE_SOURCE_OS=Windows
|
|
|
|
echo.
|
|
echo %GREEN%Configurare UPGRADE IN-PLACE completa!%NC%
|
|
echo Oracle vechi: !OLD_ORACLE_SID! @ localhost:!OLD_ORACLE_PORT!
|
|
echo Export in: !EXPORT_DIR!
|
|
|
|
) else (
|
|
echo %RED%Alegere invalida!%NC%
|
|
pause
|
|
exit /b 1
|
|
)
|
|
|
|
echo.
|
|
echo ========================================
|
|
echo REZUMAT CONFIGURARE
|
|
echo ========================================
|
|
echo.
|
|
echo Oracle 21c: %ORACLE_CONNECT_TYPE%
|
|
echo Export mode: %EXPORT_MODE%
|
|
if "%EXPORT_MODE%"=="INPLACE" (
|
|
echo Oracle vechi: !OLD_ORACLE_SID! @ localhost:!OLD_ORACLE_PORT!
|
|
echo Export dir: !EXPORT_DIR!
|
|
)
|
|
echo.
|
|
set /p CONFIRM="Configurarea este corecta? (Y/N): "
|
|
if /i not "%CONFIRM%"=="Y" (
|
|
echo.
|
|
echo Reconfigureaza si ruleaza din nou
|
|
pause
|
|
exit /b 1
|
|
)
|
|
|
|
REM ==============================================================================
|
|
REM MOD OPERARE
|
|
REM ==============================================================================
|
|
|
|
cls
|
|
echo.
|
|
echo ========================================
|
|
echo SELECTARE MOD OPERARE
|
|
echo ========================================
|
|
echo.
|
|
echo Selecteaza modul de lucru:
|
|
echo 1) MIGRARE COMPLETA (Oracle 10g - 21c)
|
|
echo 2) INSTALARE NOUA (din template-uri)
|
|
echo.
|
|
set /p MODE_CHOICE="Alegere (1/2): "
|
|
|
|
if "%MODE_CHOICE%"=="1" (
|
|
set MODE=MIGRATION
|
|
echo.
|
|
echo %GREEN%Mod selectat: MIGRARE COMPLETA%NC%
|
|
) else if "%MODE_CHOICE%"=="2" (
|
|
set MODE=NEW_INSTALL
|
|
echo.
|
|
echo %GREEN%Mod selectat: INSTALARE NOUA%NC%
|
|
) else (
|
|
echo %RED%Alegere invalida!%NC%
|
|
pause
|
|
exit /b 1
|
|
)
|
|
|
|
echo.
|
|
pause
|
|
|
|
REM ==============================================================================
|
|
REM UPGRADE IN-PLACE - WORKFLOW SPECIAL
|
|
REM ==============================================================================
|
|
|
|
if "%EXPORT_MODE%"=="INPLACE" (
|
|
call :InPlaceUpgrade
|
|
goto :End
|
|
)
|
|
|
|
REM ==============================================================================
|
|
REM WORKFLOW NORMAL (AUTO/MANUAL/LOCAL)
|
|
REM ==============================================================================
|
|
|
|
echo.
|
|
echo ========================================
|
|
echo PORNIRE MIGRARE
|
|
echo ========================================
|
|
echo.
|
|
|
|
if %WSL_AVAILABLE% equ 1 (
|
|
echo %GREEN%Rulare scripturi bash prin WSL...%NC%
|
|
echo.
|
|
|
|
REM Converteste path-ul Windows la WSL
|
|
set SCRIPT_PATH=%~dp0
|
|
set SCRIPT_PATH=!SCRIPT_PATH:\=/!
|
|
set SCRIPT_PATH=!SCRIPT_PATH:C:=/mnt/c!
|
|
set SCRIPT_PATH=!SCRIPT_PATH:D:=/mnt/d!
|
|
set SCRIPT_PATH=!SCRIPT_PATH:E:=/mnt/e!
|
|
|
|
echo Scripturi in: !SCRIPT_PATH!
|
|
echo.
|
|
|
|
REM Export variabile environment pentru WSL
|
|
wsl export EXPORT_MODE="%EXPORT_MODE%"
|
|
wsl export ORACLE_CONNECT_TYPE="%ORACLE_CONNECT_TYPE%"
|
|
|
|
if "%EXPORT_MODE%"=="MANUAL" (
|
|
wsl export EXPORT_DIR="%EXPORT_DIR%"
|
|
)
|
|
|
|
REM Ruleaza master script bash prin WSL
|
|
wsl bash -c "cd '!SCRIPT_PATH!' && ./00-MASTER-MIGRATION.sh"
|
|
|
|
) else (
|
|
echo %YELLOW%WSL nu este disponibil!%NC%
|
|
echo.
|
|
echo Optiuni:
|
|
echo 1. Instaleaza WSL: https://docs.microsoft.com/en-us/windows/wsl/install
|
|
echo 2. SAU ruleaza manual scripturile (vezi README.md)
|
|
echo.
|
|
pause
|
|
)
|
|
|
|
goto :End
|
|
|
|
REM ==============================================================================
|
|
REM FUNCTIE: UPGRADE IN-PLACE
|
|
REM ==============================================================================
|
|
:InPlaceUpgrade
|
|
|
|
cls
|
|
echo.
|
|
echo ╔══════════════════════════════════════════════════════════════╗
|
|
echo ║ UPGRADE IN-PLACE - PASUL 1/5: EXPORT DMP ║
|
|
echo ╚══════════════════════════════════════════════════════════════╝
|
|
echo.
|
|
echo %YELLOW%IMPORTANT: Executa comenzile de mai jos in acest Command Prompt%NC%
|
|
echo (sau deschide un nou Command Prompt CA ADMINISTRATOR)
|
|
echo.
|
|
pause
|
|
|
|
REM Genereaza timestamp pentru fisiere
|
|
for /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c%%a%%b)
|
|
|
|
echo.
|
|
echo ========================================
|
|
echo COMENZI EXPORT (COPY-PASTE)
|
|
echo ========================================
|
|
echo.
|
|
echo REM Creaza director export
|
|
echo mkdir "%EXPORT_DIR%" 2^>nul
|
|
echo cd /d "%EXPORT_DIR%"
|
|
echo.
|
|
echo REM Export CONTAFIN_ORACLE
|
|
echo exp system/%OLD_ORACLE_PASS%@localhost:%OLD_ORACLE_PORT%/%OLD_ORACLE_SID% ^
|
|
echo FILE=CONTAFIN_ORACLE_%mydate%.dmp ^
|
|
echo OWNER=CONTAFIN_ORACLE ^
|
|
echo LOG=contafin_export.log ^
|
|
echo CONSISTENT=Y
|
|
echo.
|
|
echo REM Export MARIUSM_AUTO (daca ai)
|
|
echo exp system/%OLD_ORACLE_PASS%@localhost:%OLD_ORACLE_PORT%/%OLD_ORACLE_SID% ^
|
|
echo FILE=MARIUSM_AUTO_%mydate%.dmp ^
|
|
echo OWNER=MARIUSM_AUTO ^
|
|
echo LOG=mariusm_export.log ^
|
|
echo CONSISTENT=Y
|
|
echo.
|
|
echo REM Verificare fisiere create
|
|
echo dir *.dmp
|
|
echo.
|
|
echo ========================================
|
|
echo.
|
|
|
|
REM Creeaza fisier batch pentru export
|
|
set EXPORT_BATCH=%EXPORT_DIR%\RUN-EXPORT.bat
|
|
echo @echo off > "%EXPORT_BATCH%"
|
|
echo REM Export generat automat >> "%EXPORT_BATCH%"
|
|
echo cd /d "%EXPORT_DIR%" >> "%EXPORT_BATCH%"
|
|
echo. >> "%EXPORT_BATCH%"
|
|
echo echo Exportare CONTAFIN_ORACLE... >> "%EXPORT_BATCH%"
|
|
echo exp system/%OLD_ORACLE_PASS%@localhost:%OLD_ORACLE_PORT%/%OLD_ORACLE_SID% FILE=CONTAFIN_ORACLE_%mydate%.dmp OWNER=CONTAFIN_ORACLE LOG=contafin_export.log CONSISTENT=Y >> "%EXPORT_BATCH%"
|
|
echo. >> "%EXPORT_BATCH%"
|
|
echo echo Exportare MARIUSM_AUTO... >> "%EXPORT_BATCH%"
|
|
echo exp system/%OLD_ORACLE_PASS%@localhost:%OLD_ORACLE_PORT%/%OLD_ORACLE_SID% FILE=MARIUSM_AUTO_%mydate%.dmp OWNER=MARIUSM_AUTO LOG=mariusm_export.log CONSISTENT=Y >> "%EXPORT_BATCH%"
|
|
echo. >> "%EXPORT_BATCH%"
|
|
echo echo Export complet! >> "%EXPORT_BATCH%"
|
|
echo dir *.dmp >> "%EXPORT_BATCH%"
|
|
echo pause >> "%EXPORT_BATCH%"
|
|
|
|
echo %GREEN%[✓] Am creat fisier batch automat: %EXPORT_BATCH%%NC%
|
|
echo.
|
|
echo Poti rula direct: "%EXPORT_BATCH%"
|
|
echo.
|
|
set /p RUN_EXPORT_NOW="Vrei sa rulez exportul ACUM? (Y/N): "
|
|
|
|
if /i "%RUN_EXPORT_NOW%"=="Y" (
|
|
echo.
|
|
echo %GREEN%Pornire export...%NC%
|
|
call "%EXPORT_BATCH%"
|
|
) else (
|
|
echo.
|
|
echo %YELLOW%OK - ruleaza manual exportul cand esti gata%NC%
|
|
)
|
|
|
|
echo.
|
|
set /p EXPORT_DONE="Ai terminat exportul si ai verificat fisierele DMP? (Y/N): "
|
|
if /i not "%EXPORT_DONE%"=="Y" (
|
|
echo.
|
|
echo Termina exportul si apoi continua...
|
|
pause
|
|
goto :InPlaceUpgrade
|
|
)
|
|
|
|
REM Verificare fisiere DMP
|
|
echo.
|
|
echo Verificare fisiere in %EXPORT_DIR%...
|
|
if exist "%EXPORT_DIR%\CONTAFIN*.dmp" (
|
|
echo %GREEN%[✓] Fisier CONTAFIN gasit!%NC%
|
|
dir "%EXPORT_DIR%\CONTAFIN*.dmp"
|
|
) else (
|
|
echo %RED%[✗] Nu gasesc fisier CONTAFIN in %EXPORT_DIR%%NC%
|
|
pause
|
|
)
|
|
|
|
REM ==============================================================================
|
|
REM PASUL 2: OPRIRE ORACLE VECHI
|
|
REM ==============================================================================
|
|
|
|
cls
|
|
echo.
|
|
echo ╔══════════════════════════════════════════════════════════════╗
|
|
echo ║ UPGRADE IN-PLACE - PASUL 2/5: OPRIRE ORACLE VECHI ║
|
|
echo ╚══════════════════════════════════════════════════════════════╝
|
|
echo.
|
|
echo %YELLOW%ATENTIE: Vei opri Oracle VECHI!%NC%
|
|
echo Asigura-te ca ai backup la fisierele DMP!
|
|
echo.
|
|
pause
|
|
|
|
echo.
|
|
echo ========================================
|
|
echo COMENZI OPRIRE SERVICII (COPY-PASTE)
|
|
echo ========================================
|
|
echo.
|
|
echo REM Oprire servicii Oracle vechi
|
|
echo net stop OracleServiceXE
|
|
echo net stop OracleXETNSListener
|
|
echo.
|
|
echo REM Optional: Dezactiveaza pornirea automata
|
|
echo sc config OracleServiceXE start= disabled
|
|
echo sc config OracleXETNSListener start= disabled
|
|
echo.
|
|
echo REM Verificare
|
|
echo sc query OracleServiceXE
|
|
echo.
|
|
echo ========================================
|
|
echo.
|
|
|
|
REM Creeaza fisier batch pentru oprire
|
|
set STOP_BATCH=%EXPORT_DIR%\STOP-ORACLE-OLD.bat
|
|
echo @echo off > "%STOP_BATCH%"
|
|
echo REM Oprire Oracle vechi >> "%STOP_BATCH%"
|
|
echo echo Oprire servicii Oracle vechi... >> "%STOP_BATCH%"
|
|
echo net stop OracleServiceXE >> "%STOP_BATCH%"
|
|
echo net stop OracleXETNSListener >> "%STOP_BATCH%"
|
|
echo echo. >> "%STOP_BATCH%"
|
|
echo sc config OracleServiceXE start= disabled >> "%STOP_BATCH%"
|
|
echo sc config OracleXETNSListener start= disabled >> "%STOP_BATCH%"
|
|
echo echo. >> "%STOP_BATCH%"
|
|
echo echo Verificare status: >> "%STOP_BATCH%"
|
|
echo sc query OracleServiceXE >> "%STOP_BATCH%"
|
|
echo pause >> "%STOP_BATCH%"
|
|
|
|
echo %GREEN%[✓] Am creat fisier batch: %STOP_BATCH%%NC%
|
|
echo.
|
|
set /p STOP_NOW="Vrei sa opresc Oracle VECHI ACUM? (Y/N): "
|
|
|
|
if /i "%STOP_NOW%"=="Y" (
|
|
echo.
|
|
echo %GREEN%Oprire Oracle vechi...%NC%
|
|
call "%STOP_BATCH%"
|
|
) else (
|
|
echo.
|
|
echo %YELLOW%OK - opreste manual Oracle vechi cand esti gata%NC%
|
|
)
|
|
|
|
echo.
|
|
set /p ORACLE_STOPPED="Ai oprit Oracle vechi? (Y/N): "
|
|
if /i not "%ORACLE_STOPPED%"=="Y" (
|
|
echo.
|
|
echo Opreste Oracle vechi si apoi continua...
|
|
pause
|
|
exit /b 1
|
|
)
|
|
|
|
REM ==============================================================================
|
|
REM PASUL 3: INSTALARE ORACLE 21c XE
|
|
REM ==============================================================================
|
|
|
|
cls
|
|
echo.
|
|
echo ╔══════════════════════════════════════════════════════════════╗
|
|
echo ║ UPGRADE IN-PLACE - PASUL 3/5: INSTALARE ORACLE 21c ║
|
|
echo ╚══════════════════════════════════════════════════════════════╝
|
|
echo.
|
|
echo Urmatorul pas: Instalare Oracle 21c XE
|
|
echo.
|
|
echo Optiuni:
|
|
echo 1. Download Oracle XE 21c pentru Windows:
|
|
echo https://www.oracle.com/database/technologies/xe-downloads.html
|
|
echo.
|
|
echo 2. Fisier: OracleXE213_Win64.zip (~2.5 GB)
|
|
echo.
|
|
echo 3. Instalare:
|
|
echo - Extrage ZIP
|
|
echo - Ruleaza setup.exe CA ADMINISTRATOR
|
|
echo - Port: 1521 (acelasi ca Oracle vechi)
|
|
echo - Password SYS: OraclePass123 (sau custom)
|
|
echo.
|
|
echo 4. Dupa instalare, revino aici pentru import!
|
|
echo.
|
|
pause
|
|
|
|
echo.
|
|
echo Deschid browser pentru download...
|
|
start https://www.oracle.com/database/technologies/xe-downloads.html
|
|
|
|
echo.
|
|
set /p ORACLE21_INSTALLED="Ai instalat Oracle 21c XE? (Y/N): "
|
|
if /i not "%ORACLE21_INSTALLED%"=="Y" (
|
|
echo.
|
|
echo Instaleaza Oracle 21c XE si apoi continua...
|
|
pause
|
|
exit /b 1
|
|
)
|
|
|
|
REM ==============================================================================
|
|
REM PASUL 4: SETUP + IMPORT
|
|
REM ==============================================================================
|
|
|
|
cls
|
|
echo.
|
|
echo ╔══════════════════════════════════════════════════════════════╗
|
|
echo ║ UPGRADE IN-PLACE - PASUL 4/5: SETUP ^& IMPORT ║
|
|
echo ╚══════════════════════════════════════════════════════════════╝
|
|
echo.
|
|
|
|
REM ==============================================================================
|
|
REM RULARE NATIVA WINDOWS (fara WSL)
|
|
REM ==============================================================================
|
|
|
|
if %SQLPLUS_AVAILABLE% equ 1 (
|
|
echo %GREEN%Rulare setup ^& import NATIV pe Windows...%NC%
|
|
echo.
|
|
|
|
set SCRIPT_DIR=%~dp0
|
|
set ORACLE21_PASSWORD=OraclePass123
|
|
|
|
REM Pasul 1: Setup Oracle 21c
|
|
echo ========================================
|
|
echo PASUL 1: Setup Tablespace ^& Useri
|
|
echo ========================================
|
|
echo.
|
|
|
|
call :CreateSetupScript
|
|
|
|
echo Rulare setup SQL...
|
|
sqlplus sys/!ORACLE21_PASSWORD!@localhost:1521/XE as sysdba @"%SCRIPT_DIR%setup-windows.sql"
|
|
|
|
if %errorlevel% neq 0 (
|
|
echo %RED%Eroare la setup!%NC%
|
|
pause
|
|
goto :End
|
|
)
|
|
|
|
echo %GREEN%[✓] Setup complet!%NC%
|
|
echo.
|
|
|
|
REM Pasul 2: Import DMP
|
|
echo ========================================
|
|
echo PASUL 2: Import DMP
|
|
echo ========================================
|
|
echo.
|
|
|
|
call :CreateImportScript
|
|
|
|
echo Import CONTAFIN_ORACLE...
|
|
call "%SCRIPT_DIR%import-windows.bat"
|
|
|
|
if %errorlevel% neq 0 (
|
|
echo %YELLOW%Importul poate avea warning-uri normale (obiecte existente)%NC%
|
|
)
|
|
|
|
echo %GREEN%[✓] Import complet!%NC%
|
|
echo.
|
|
|
|
REM Pasul 3: Sinonime + Grant-uri
|
|
echo ========================================
|
|
echo PASUL 3: Sinonime ^& Grant-uri
|
|
echo ========================================
|
|
echo.
|
|
|
|
call :CreateSynonymsScript
|
|
|
|
sqlplus system/!ORACLE21_PASSWORD!@localhost:1521/roa @"%SCRIPT_DIR%synonyms-windows.sql"
|
|
|
|
echo %GREEN%[✓] Sinonime create!%NC%
|
|
echo.
|
|
|
|
REM Pasul 4: Finalizare
|
|
echo ========================================
|
|
echo PASUL 4: Recompilare ^& Verificare
|
|
echo ========================================
|
|
echo.
|
|
|
|
call :CreateFinalizeScript
|
|
|
|
sqlplus system/!ORACLE21_PASSWORD!@localhost:1521/roa @"%SCRIPT_DIR%finalize-windows.sql"
|
|
|
|
echo %GREEN%[✓] Finalizare completa!%NC%
|
|
|
|
) else (
|
|
echo %YELLOW%SQLPlus nu este disponibil!%NC%
|
|
echo.
|
|
echo Pentru import manual, instaleaza Oracle Client si adauga sqlplus in PATH
|
|
echo SAU urmeaza pasii din README-UPGRADE-IN-PLACE.md
|
|
echo.
|
|
pause
|
|
)
|
|
|
|
REM ==============================================================================
|
|
REM PASUL 5: VERIFICARE
|
|
REM ==============================================================================
|
|
|
|
cls
|
|
echo.
|
|
echo ╔══════════════════════════════════════════════════════════════╗
|
|
echo ║ UPGRADE IN-PLACE - PASUL 5/5: VERIFICARE FINALA ║
|
|
echo ╚══════════════════════════════════════════════════════════════╝
|
|
echo.
|
|
echo %GREEN%Migrare completata!%NC%
|
|
echo.
|
|
echo Verificare conexiune:
|
|
echo sqlplus CONTAFIN_ORACLE/OraclePass123@localhost:1521/roa
|
|
echo.
|
|
echo Verificare obiecte:
|
|
echo SELECT COUNT(*) FROM user_tables;
|
|
echo SELECT COUNT(*) FROM user_objects WHERE status = 'INVALID';
|
|
echo.
|
|
echo Log-uri disponibile:
|
|
echo %EXPORT_DIR%\*.log
|
|
echo.
|
|
echo %GREEN%Succes!%NC%
|
|
echo.
|
|
pause
|
|
|
|
goto :End
|
|
|
|
REM ==============================================================================
|
|
REM FUNCTII GENERARE SCRIPTURI SQL
|
|
REM ==============================================================================
|
|
|
|
:CreateSetupScript
|
|
echo Generare script setup...
|
|
set SETUP_SQL=%SCRIPT_DIR%setup-windows.sql
|
|
|
|
(
|
|
echo -- Setup Oracle 21c - Generat automat
|
|
echo SET ECHO ON
|
|
echo SET SERVEROUTPUT ON
|
|
echo.
|
|
echo -- Conectare la CDB
|
|
echo ALTER SESSION SET CONTAINER = CDB$ROOT;
|
|
echo.
|
|
echo -- Creare PDB ROA ^(daca nu exista^)
|
|
echo DECLARE
|
|
echo v_count NUMBER;
|
|
echo BEGIN
|
|
echo SELECT COUNT^(^*^) INTO v_count FROM dba_pdbs WHERE pdb_name = 'ROA';
|
|
echo IF v_count = 0 THEN
|
|
echo EXECUTE IMMEDIATE 'CREATE PLUGGABLE DATABASE roa ADMIN USER pdbadmin IDENTIFIED BY OraclePass123';
|
|
echo EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE roa OPEN';
|
|
echo EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE roa SAVE STATE';
|
|
echo END IF;
|
|
echo END;
|
|
echo /
|
|
echo.
|
|
echo -- Conectare la PDB ROA
|
|
echo ALTER SESSION SET CONTAINER = ROA;
|
|
echo.
|
|
echo -- Creare tablespace ROA
|
|
echo CREATE TABLESPACE roa_data
|
|
echo DATAFILE 'roa_data01.dbf' SIZE 2G
|
|
echo AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED
|
|
echo EXTENT MANAGEMENT LOCAL
|
|
echo SEGMENT SPACE MANAGEMENT AUTO;
|
|
echo.
|
|
echo -- Creare user CONTAFIN_ORACLE
|
|
echo CREATE USER CONTAFIN_ORACLE IDENTIFIED BY OraclePass123
|
|
echo DEFAULT TABLESPACE roa_data
|
|
echo TEMPORARY TABLESPACE temp
|
|
echo QUOTA UNLIMITED ON roa_data;
|
|
echo.
|
|
echo -- Grant-uri CONTAFIN_ORACLE
|
|
echo GRANT CONNECT, RESOURCE, DBA TO CONTAFIN_ORACLE;
|
|
echo GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW TO CONTAFIN_ORACLE;
|
|
echo GRANT CREATE PROCEDURE, CREATE TRIGGER, CREATE SEQUENCE TO CONTAFIN_ORACLE;
|
|
echo GRANT CREATE SYNONYM, CREATE PUBLIC SYNONYM TO CONTAFIN_ORACLE;
|
|
echo.
|
|
echo -- Creare user MARIUSM_AUTO
|
|
echo CREATE USER MARIUSM_AUTO IDENTIFIED BY OraclePass123
|
|
echo DEFAULT TABLESPACE roa_data
|
|
echo TEMPORARY TABLESPACE temp
|
|
echo QUOTA UNLIMITED ON roa_data;
|
|
echo.
|
|
echo GRANT CONNECT, RESOURCE TO MARIUSM_AUTO;
|
|
echo GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW TO MARIUSM_AUTO;
|
|
echo.
|
|
echo PROMPT Setup complet!
|
|
echo EXIT;
|
|
) > "%SETUP_SQL%"
|
|
|
|
echo %GREEN%[✓] Script generat: %SETUP_SQL%%NC%
|
|
goto :eof
|
|
|
|
:CreateImportScript
|
|
echo Generare script import...
|
|
set IMPORT_BAT=%SCRIPT_DIR%import-windows.bat
|
|
|
|
for /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c%%a%%b)
|
|
|
|
(
|
|
echo @echo off
|
|
echo REM Import DMP - Generat automat
|
|
echo cd /d "%EXPORT_DIR%"
|
|
echo.
|
|
echo echo Import CONTAFIN_ORACLE...
|
|
echo imp system/%ORACLE21_PASSWORD%@localhost:1521/roa ^
|
|
echo FILE=CONTAFIN_ORACLE*.dmp ^
|
|
echo FROMUSER=CONTAFIN_ORACLE ^
|
|
echo TOUSER=CONTAFIN_ORACLE ^
|
|
echo IGNORE=Y ^
|
|
echo COMMIT=Y ^
|
|
echo BUFFER=10485760 ^
|
|
echo LOG=contafin_import.log
|
|
echo.
|
|
echo echo Import MARIUSM_AUTO...
|
|
echo imp system/%ORACLE21_PASSWORD%@localhost:1521/roa ^
|
|
echo FILE=MARIUSM_AUTO*.dmp ^
|
|
echo FROMUSER=MARIUSM_AUTO ^
|
|
echo TOUSER=MARIUSM_AUTO ^
|
|
echo IGNORE=Y ^
|
|
echo COMMIT=Y ^
|
|
echo BUFFER=10485760 ^
|
|
echo LOG=mariusm_import.log
|
|
echo.
|
|
echo echo Import complet!
|
|
echo dir *.log
|
|
) > "%IMPORT_BAT%"
|
|
|
|
echo %GREEN%[✓] Script generat: %IMPORT_BAT%%NC%
|
|
goto :eof
|
|
|
|
:CreateSynonymsScript
|
|
echo Generare script sinonime...
|
|
set SYN_SQL=%SCRIPT_DIR%synonyms-windows.sql
|
|
|
|
(
|
|
echo -- Sinonime + Grant-uri - Generat automat
|
|
echo SET ECHO ON
|
|
echo.
|
|
echo -- Grant SELECT on CONTAFIN tables to PUBLIC
|
|
echo DECLARE
|
|
echo CURSOR c_tables IS
|
|
echo SELECT table_name FROM dba_tables WHERE owner = 'CONTAFIN_ORACLE';
|
|
echo BEGIN
|
|
echo FOR rec IN c_tables LOOP
|
|
echo BEGIN
|
|
echo EXECUTE IMMEDIATE 'GRANT SELECT ON CONTAFIN_ORACLE.' ^|^| rec.table_name ^|^| ' TO PUBLIC';
|
|
echo EXECUTE IMMEDIATE 'CREATE OR REPLACE PUBLIC SYNONYM SYN_' ^|^| rec.table_name ^|^| ' FOR CONTAFIN_ORACLE.' ^|^| rec.table_name;
|
|
echo EXCEPTION
|
|
echo WHEN OTHERS THEN NULL;
|
|
echo END;
|
|
echo END LOOP;
|
|
echo END;
|
|
echo /
|
|
echo.
|
|
echo PROMPT Sinonime create!
|
|
echo EXIT;
|
|
) > "%SYN_SQL%"
|
|
|
|
echo %GREEN%[✓] Script generat: %SYN_SQL%%NC%
|
|
goto :eof
|
|
|
|
:CreateFinalizeScript
|
|
echo Generare script finalizare...
|
|
set FIN_SQL=%SCRIPT_DIR%finalize-windows.sql
|
|
|
|
(
|
|
echo -- Finalizare - Generat automat
|
|
echo SET ECHO ON
|
|
echo SET SERVEROUTPUT ON
|
|
echo.
|
|
echo -- Recompilare obiecte invalide
|
|
echo BEGIN
|
|
echo DBMS_UTILITY.compile_schema^(schema =^> 'CONTAFIN_ORACLE', compile_all =^> FALSE^);
|
|
echo DBMS_UTILITY.compile_schema^(schema =^> 'MARIUSM_AUTO', compile_all =^> FALSE^);
|
|
echo END;
|
|
echo /
|
|
echo.
|
|
echo -- Verificare obiecte invalide
|
|
echo SELECT owner, object_type, object_name, status
|
|
echo FROM dba_objects
|
|
echo WHERE owner IN ^('CONTAFIN_ORACLE', 'MARIUSM_AUTO'^)
|
|
echo AND status = 'INVALID';
|
|
echo.
|
|
echo -- Statistici finale
|
|
echo SELECT 'CONTAFIN_ORACLE' AS schema, COUNT^(^*^) AS total_tables
|
|
echo FROM dba_tables WHERE owner = 'CONTAFIN_ORACLE'
|
|
echo UNION ALL
|
|
echo SELECT 'MARIUSM_AUTO', COUNT^(^*^)
|
|
echo FROM dba_tables WHERE owner = 'MARIUSM_AUTO';
|
|
echo.
|
|
echo PROMPT Migrare completa!
|
|
echo EXIT;
|
|
) > "%FIN_SQL%"
|
|
|
|
echo %GREEN%[✓] Script generat: %FIN_SQL%%NC%
|
|
goto :eof
|
|
|
|
REM ==============================================================================
|
|
REM FINAL
|
|
REM ==============================================================================
|
|
:End
|
|
echo.
|
|
echo ========================================
|
|
echo MIGRARE COMPLETA
|
|
echo ========================================
|
|
echo.
|
|
pause
|
|
exit /b 0
|