Files
ROMFASTSQL/proxmox/lxc108-oracle/roa-windows-setup/INSTALEAZA.cmd
Marius 7fce925349 feat(oracle): kit de instalare la client + corectarea lipsurilor din instalare
Blocul de instalare/migrare Oracle 21c XE, terminat si validat pe VM 302.

Kit de instalare (nou)

  scripts/build-client-kit.ps1 exporta CONTAFIN_ORACLE si FIRMANOUA de pe
  LXC 108 (PDB ROA2, nu ROA - ROA e productia ROA_CENTRAL), le aduce local
  prin cele trei hopuri container -> LXC -> host -> statie, le redenumeste la
  numele pe care le asteapta scripturile si le impacheteaza cu o copie a
  directorului roa-windows-setup. Citeste logul expdp si raporteaza cate
  firme are NOM_FIRME, ca sa nu plece din greseala datele unui client.

  roa-windows-setup/INSTALEAZA.cmd ruleaza pasii 01..08 fara "set /p", deci
  merge si prin SSH - RunAll.cmd nu poate fi rulat neinteractiv. Trateaza
  corect codul 5 de la pasul 03 si se opreste la prima eroare reala.

Corectii

  01-setup-database.ps1 nu mai scrie SQLNET.RECV_TIMEOUT / SEND_TIMEOUT in
  sqlnet.ora. Le hardcoda la 30 s, iar fisierul e citit si de impdp: in timpul
  unui import serverul poate lucra minute fara sa trimita un pachet, clientul
  murea cu ORA-12609 iar scriptul raporta esec pentru un import care se
  terminase cu bine pe server. Reprodus si reparat pe VM 302.

  01-setup-database.ps1: Step 4c optional (-ResetSystemPassword) care curata
  EXPIRED(GRACE) pe SYSTEM in CDB root; ALTER PROFILE opreste expirarile
  viitoare dar nu reseteaza un cont deja intrat in gratie.

  uninstall-roa.sql: retry la DROP USER dupa KILL SESSION, plus un bloc final
  de verdict care numara ce a ramas si iese cu ORA-20900 daca baza nu e
  curata. Pana acum toate sectiunile prindeau exceptiile in WHEN OTHERS si
  scriptul tiparea "UNINSTALL COMPLETE" chiar si cand un user supravietuise,
  iar instalarea urmatoare dadea ORA-31684 in lant. 99-uninstall-roa.ps1
  propaga codul de iesire.

  08-post-install-config.ps1: Step 7b seteaza SMTP_OUT_SERVER si ACL-ul de
  retea pentru CONTAFIN_ORACLE. UTL_MAIL se instala si primea EXECUTE, adica
  destul cat sa compileze, dar nu si cat sa trimita. Privilegiul resolve nu
  accepta interval de porturi (ORA-24244), deci se acorda separat de connect.

  07-verify-installation.ps1: sectiune noua care verifica prezenta lui
  FIRMANOUA.dmp in DMPDIR si o raporteaza ca eroare daca lipseste. Fara el,
  adaugarea unei firme noi pica in DBMS_DATAPUMP.ADD_FILE peste luni de la
  instalare, cand nimeni nu mai leaga eroarea de instalare.

  configure-profile.sql: antetul spune ca e unealta de remediere manuala, nu
  parte din flux; pas nou la final pentru CDB root.

Documentatie

  README-ul roa-windows-setup descrie acum explicit cele doua scenarii -
  instalare pe curat si migrare - de unde se iau DMP-urile sablon, si capcana
  ORA-12609. Handoff-urile de sesiune au fost sterse; ce era durabil in ele a
  intrat in README-uri si in docs/diagnostic-spatiu-clienti.md.

Validare pe VM 302: ciclu complet din kit, instalare pe curat, verificarea
finala "[OK] All checks passed!".

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SzF1hf4aFS1tmJWpPMiwGp
2026-08-25 18:05:56 +03:00

206 lines
7.0 KiB
Batchfile

@echo off
REM =============================================================================
REM ROA Oracle - instalare la client, neinteractiva
REM =============================================================================
REM Ruleaza pasii 01..08 in ordine, din radacina kitului.
REM
REM Spre deosebire de RunAll.cmd, scriptul asta NU foloseste "set /p", deci
REM poate fi rulat si prin SSH / dintr-o sesiune fara tastatura.
REM
REM Utilizare:
REM INSTALEAZA.cmd curat [IdClient] [ServerSMTP]
REM INSTALEAZA.cmd migrare [IdClient] [ServerSMTP]
REM
REM Exemple:
REM INSTALEAZA.cmd curat 138 mail.romfast.ro
REM INSTALEAZA.cmd migrare 214
REM =============================================================================
setlocal enabledelayedexpansion
set "KIT=%~dp0"
set "SCEN=%~1"
set "IDCLIENT=%~2"
set "SMTP=%~3"
set "DMPDEST=C:\DMPDIR"
if /i "%SCEN%"=="curat" goto :scenar_ok
if /i "%SCEN%"=="migrare" goto :scenar_ok
goto :utilizare
:scenar_ok
if "%SMTP%"=="" set "SMTP=mail.romfast.ro"
echo.
echo ============================================================
echo ROA Oracle - instalare (%SCEN%)
echo ============================================================
echo.
echo Kit: %KIT%
echo DMPDIR tinta: %DMPDEST%
echo Id client: %IDCLIENT%
echo Server SMTP: %SMTP%
echo.
REM ---------------------------------------------------------------------------
REM Pregatirea DMPDIR
REM ---------------------------------------------------------------------------
if not exist "%KIT%DMPDIR\FIRMANOUA.dmp" (
echo [EROARE] Lipseste "%KIT%DMPDIR\FIRMANOUA.dmp".
echo Fara sablonul de firma noua, clientul nu va putea adauga firme.
echo Reconstruieste kitul cu build-client-kit.ps1.
exit /b 1
)
dir /b "%KIT%DMPDIR\*contafin*.dmp" >nul 2>&1
if errorlevel 1 (
echo [EROARE] Lipseste un fisier *contafin*.dmp din "%KIT%DMPDIR".
exit /b 1
)
if /i "%SCEN%"=="migrare" (
REM Kitul contine mereu 2 sabloane: *contafin*.dmp si FIRMANOUA.dmp.
REM Orice peste 2 sunt DMP-urile de firma ale clientului.
set /a TOTALDMP=0
for %%F in ("%KIT%DMPDIR\*.dmp") do set /a TOTALDMP+=1
if !TOTALDMP! LEQ 2 (
echo [ATENTIE] In "%KIT%DMPDIR" sunt doar !TOTALDMP! fisiere DMP,
echo adica doar sabloanele. La o migrare ar trebui sa existe
echo si cate un DMP per firma a clientului.
echo Continui - pasul 05 va raporta firmele lipsa.
echo.
)
)
if not exist "%DMPDEST%" mkdir "%DMPDEST%"
echo [1/9] Copiez fisierele DMP in %DMPDEST% ...
copy /Y "%KIT%DMPDIR\*.dmp" "%DMPDEST%\" >nul
if errorlevel 1 (
echo [EROARE] Copierea DMP-urilor a esuat.
exit /b 1
)
REM Serviciul Oracle citeste fisierele cu contul lui, nu cu al tau. Fara
REM drepturi explicite, Data Pump da ORA-39002 / LFI la deschiderea fisierului.
icacls "%DMPDEST%" /grant "NT SERVICE\OracleServiceXE:(OI)(CI)F" /T >nul 2>&1
echo Gata.
REM ---------------------------------------------------------------------------
REM Pasii de instalare
REM ---------------------------------------------------------------------------
echo.
echo [2/9] 01-setup-database.ps1
powershell.exe -ExecutionPolicy Bypass -NoProfile -File "%KIT%scripts\01-setup-database.ps1"
if errorlevel 1 goto :esec_01
echo.
echo [3/9] 02-create-sys-objects.ps1
powershell.exe -ExecutionPolicy Bypass -NoProfile -File "%KIT%scripts\02-create-sys-objects.ps1"
if errorlevel 1 goto :esec_02
echo.
echo [4/9] 03-import-contafin.ps1
powershell.exe -ExecutionPolicy Bypass -NoProfile -File "%KIT%scripts\03-import-contafin.ps1"
set RC=!ERRORLEVEL!
REM Codul 5 e normal aici: Data Pump raporteaza "completed with errors" pentru
REM ORA-31684 (userul e creat deja de pasul 01) si ORA-39082 (warning-uri de
REM compilare, rezolvate la pasul 04). Orice alt cod nenul e esec real.
if "!RC!"=="0" goto :pas_04
if "!RC!"=="5" (
echo [INFO] Cod de iesire 5 - normal pentru Data Pump, se continua.
goto :pas_04
)
echo [EROARE] 03-import-contafin.ps1 a iesit cu codul !RC!.
exit /b !RC!
:pas_04
echo.
echo [5/9] 04-create-synonyms-grants.ps1
powershell.exe -ExecutionPolicy Bypass -NoProfile -File "%KIT%scripts\04-create-synonyms-grants.ps1"
if errorlevel 1 goto :esec_04
echo.
echo [6/9] 05-import-companies.ps1
powershell.exe -ExecutionPolicy Bypass -NoProfile -File "%KIT%scripts\05-import-companies.ps1"
if errorlevel 1 goto :esec_05
echo.
echo [7/9] 08-post-install-config.ps1
if "%IDCLIENT%"=="" (
powershell.exe -ExecutionPolicy Bypass -NoProfile -File "%KIT%scripts\08-post-install-config.ps1" -EmailSmtp "%SMTP%"
) else (
powershell.exe -ExecutionPolicy Bypass -NoProfile -File "%KIT%scripts\08-post-install-config.ps1" -CustomerId "%IDCLIENT%" -EmailSmtp "%SMTP%"
)
if errorlevel 1 goto :esec_08
echo.
echo [8/9] 07-verify-installation.ps1
powershell.exe -ExecutionPolicy Bypass -NoProfile -File "%KIT%scripts\07-verify-installation.ps1"
set RCVERIF=!ERRORLEVEL!
echo.
echo [9/9] Rezultat
echo ============================================================
if "!RCVERIF!"=="0" (
echo INSTALARE COMPLETA - verificarea a trecut integral.
) else (
echo INSTALARE TERMINATA, DAR VERIFICAREA A SEMNALAT PROBLEME.
echo Citeste lista din raportul de mai sus si logurile din logs\.
if /i "%SCEN%"=="migrare" (
echo.
echo La migrare, "N company schemas are missing" inseamna ca lipsesc
echo DMP-urile firmelor respective. Copiaza-le in %DMPDEST% si reia
echo doar pasul 05.
)
)
echo ============================================================
echo.
if /i "%SCEN%"=="curat" (
echo PASUL URMATOR - prima firma:
echo.
echo Se creeaza DIN APLICATIA ROA, nu din scripturi. Aplicatia scrie firma
echo in CONTAFIN_ORACLE.NOM_FIRME si apeleaza SYS.NEWSCHEMA, care importa
echo structura din %DMPDEST%\FIRMANOUA.dmp.
echo.
echo NU sterge FIRMANOUA.dmp din %DMPDEST% - e folosit la fiecare firma
echo noua, oricand pe viitor.
echo.
)
endlocal & exit /b %RCVERIF%
REM ---------------------------------------------------------------------------
:esec_01
echo [EROARE] 01-setup-database.ps1 a esuat. Instalarea se opreste.
exit /b 1
:esec_02
echo [EROARE] 02-create-sys-objects.ps1 a esuat. Instalarea se opreste.
exit /b 1
:esec_04
echo [EROARE] 04-create-synonyms-grants.ps1 a esuat. Instalarea se opreste.
exit /b 1
:esec_05
echo [EROARE] 05-import-companies.ps1 a esuat. Instalarea se opreste.
exit /b 1
:esec_08
echo [EROARE] 08-post-install-config.ps1 a esuat. Instalarea se opreste.
exit /b 1
:utilizare
echo.
echo Utilizare:
echo INSTALEAZA.cmd curat [IdClient] [ServerSMTP]
echo INSTALEAZA.cmd migrare [IdClient] [ServerSMTP]
echo.
echo curat Client nou, fara firme anterioare. In DMPDIR trebuie sa fie
echo doar sabloanele: contafin_oracle.dmp si FIRMANOUA.dmp.
echo.
echo migrare Client cu date existente. In DMPDIR trebuie sa fie
echo contafin_oracle.dmp AL CLIENTULUI, cate un DMP per firma,
echo plus sablonul FIRMANOUA.dmp.
echo.
echo ServerSMTP e optional (implicit mail.romfast.ro).
echo.
exit /b 2