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
This commit is contained in:
205
proxmox/lxc108-oracle/roa-windows-setup/INSTALEAZA.cmd
Normal file
205
proxmox/lxc108-oracle/roa-windows-setup/INSTALEAZA.cmd
Normal file
@@ -0,0 +1,205 @@
|
||||
@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
|
||||
Reference in New Issue
Block a user