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:
@@ -163,6 +163,62 @@ C:\roa-setup\
|
||||
|
||||
---
|
||||
|
||||
### Capcane de mediu (verificate 2026-08-25)
|
||||
|
||||
**1. VM-ul își poate pierde IP-ul static la boot.** La pornirea din 2026-08-25 adaptorul
|
||||
s-a re-enumerat ca `Ethernet 2` și a venit pe DHCP (`10.0.20.118`). `listener.ora` are
|
||||
`HOST=10.0.20.130` scris în clar, deci serviciul listener pornește („Running") dar nu
|
||||
leagă portul, iar orice conectare dă `ORA-12541: TNS:no listener`. Verifică IP-ul
|
||||
**înainte** de a începe testul:
|
||||
|
||||
```bash
|
||||
ssh root@10.0.20.201 "qm agent 302 network-get-interfaces" | grep ip-address
|
||||
```
|
||||
|
||||
Dacă nu e `10.0.20.130`, restaurează-l (comanda rupe sesiunea SSH curentă, de aceea
|
||||
rulează printr-un task programat):
|
||||
|
||||
```powershell
|
||||
Set-NetIPInterface -InterfaceAlias 'Ethernet 2' -Dhcp Disabled
|
||||
Get-NetIPAddress -InterfaceAlias 'Ethernet 2' -AddressFamily IPv4 | Remove-NetIPAddress -Confirm:$false
|
||||
New-NetIPAddress -InterfaceAlias 'Ethernet 2' -IPAddress 10.0.20.130 -PrefixLength 24 -DefaultGateway 10.0.20.1
|
||||
Set-DnsClientServerAddress -InterfaceAlias 'Ethernet 2' -ServerAddresses 10.0.20.1
|
||||
```
|
||||
|
||||
Apoi `Restart-Service OracleOraDB21Home1TNSListener`. Listener-ul mai are nevoie de
|
||||
~60 s ca instanța să se înregistreze (PMON), altfel primești `ORA-12514`.
|
||||
|
||||
**2. `C:\roa-setup\` este o copie, nu un clone al repo-ului.** La 2026-08-25 era în urmă
|
||||
cu două commit-uri (`sys-objects.sql`, `scheduler-jobs.sql`, `uninstall-roa.sql` erau
|
||||
dinainte de `015cd79`). Sincronizează **tot** directorul, nu doar fișierele pe care
|
||||
crezi că le-ai atins, și confirmă cu hash-uri:
|
||||
|
||||
```bash
|
||||
cd proxmox/lxc108-oracle/roa-windows-setup
|
||||
scp sql/*.sql romfast@10.0.20.130:C:/roa-setup/sql/
|
||||
scp scripts/*.ps1 romfast@10.0.20.130:C:/roa-setup/scripts/
|
||||
scp scripts/lib/*.ps1 romfast@10.0.20.130:C:/roa-setup/scripts/lib/
|
||||
scp Run.cmd RunAll.cmd romfast@10.0.20.130:C:/roa-setup/
|
||||
```
|
||||
|
||||
**3. `RunAll.cmd` nu poate fi condus neinteractiv.** Folosește `set /p` pentru
|
||||
confirmări; pe stdin redirecționat (`< NUL` sau prin `ssh`) fie se anulează cu
|
||||
„Installation cancelled" **și iese cu codul 0**, fie crapă cu „The syntax of the command
|
||||
is incorrect". Nu te lua după codul de ieșire — verifică logul. Pentru rulare automată,
|
||||
apelează scripturile în ordine direct:
|
||||
|
||||
```
|
||||
01-setup-database.ps1 → 02-create-sys-objects.ps1 → 03-import-contafin.ps1
|
||||
→ 04-create-synonyms-grants.ps1 → 05-import-companies.ps1
|
||||
→ 08-post-install-config.ps1 → 07-verify-installation.ps1
|
||||
```
|
||||
|
||||
**4. `03-import-contafin.ps1` iese normal cu codul 5.** E codul Data Pump pentru
|
||||
„completat cu erori"; erorile sunt `ORA-31684 already exists` (userul e creat de scriptul
|
||||
01) și `ORA-39082` (warning-uri de compilare). Nu e un eșec.
|
||||
|
||||
---
|
||||
|
||||
## Testing Workflow
|
||||
|
||||
### Full Installation Test
|
||||
|
||||
Reference in New Issue
Block a user