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:
@@ -322,7 +322,7 @@ EXIT;
|
||||
|
||||
$synData = @{}
|
||||
foreach ($line in $synResult -split "`n") {
|
||||
if ($line -match "^([A-Z_]+):(\d+)$") {
|
||||
if ($line -match "^([A-Z_]+):(\d+)\s*$") {
|
||||
$synData[$Matches[1]] = [int]$Matches[2]
|
||||
}
|
||||
}
|
||||
@@ -454,6 +454,70 @@ EXIT;
|
||||
}
|
||||
}
|
||||
|
||||
# Company Template + SMTP
|
||||
# ------------------------------------------------------------------------
|
||||
# SYS.NEWSCHEMA (si 06-add-company.ps1) creeaza o firma noua importand
|
||||
# sablonul FIRMANOUA.dmp din directorul Oracle DMPDIR. Daca fisierul nu e
|
||||
# acolo, adaugarea de firme noi pica in DBMS_DATAPUMP.ADD_FILE - dar abia
|
||||
# peste luni, cand clientul chiar adauga o firma. Il verificam la instalare.
|
||||
Add-ReportSection "Company Template + SMTP"
|
||||
|
||||
# Lipsa sablonului e un defect real (blocheaza adaugarea de firme), deci
|
||||
# intra in $issues si in codul de iesire. SMTP nesetat ramane doar o nota:
|
||||
# nu toti clientii folosesc notificarile pe email.
|
||||
$extraIssues = @()
|
||||
|
||||
$tmplSql = @"
|
||||
SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF LINESIZE 200
|
||||
SELECT 'DMPDIR_PATH:' || directory_path FROM dba_directories WHERE directory_name = 'DMPDIR';
|
||||
SELECT 'SMTP_OUT:' || NVL(value, '<nesetat>') FROM v`$parameter WHERE name = 'smtp_out_server';
|
||||
EXIT;
|
||||
"@
|
||||
|
||||
$tmplResult = Invoke-SqlPlus -OracleHome $oraHome -ServiceName $ServiceName `
|
||||
-Username "SYS" -Password $SystemPassword -SqlCommand $tmplSql -AsSysdba -Silent
|
||||
|
||||
$dmpDirPath = $null
|
||||
$smtpOut = $null
|
||||
foreach ($line in $tmplResult -split "`n") {
|
||||
$line = $line.Trim()
|
||||
if ($line -match "^DMPDIR_PATH:(.+)$") { $dmpDirPath = $Matches[1].Trim() }
|
||||
if ($line -match "^SMTP_OUT:(.+)$") { $smtpOut = $Matches[1].Trim() }
|
||||
}
|
||||
|
||||
if (-not $dmpDirPath) {
|
||||
Add-ReportLine "[WARNING] Directorul Oracle DMPDIR nu exista."
|
||||
$extraIssues += "Oracle directory DMPDIR missing"
|
||||
}
|
||||
else {
|
||||
Add-ReportLine "DMPDIR: $dmpDirPath"
|
||||
$tmplPath = Join-Path $dmpDirPath "FIRMANOUA.dmp"
|
||||
if (Test-Path $tmplPath) {
|
||||
$sizeMb = [math]::Round((Get-Item $tmplPath).Length / 1MB, 1)
|
||||
Add-ReportLine "FIRMANOUA.dmp: OK ($sizeMb MB)"
|
||||
}
|
||||
else {
|
||||
Add-ReportLine "FIRMANOUA.dmp: LIPSA"
|
||||
Add-ReportLine ""
|
||||
Add-ReportLine "[WARNING] Fara sablonul FIRMANOUA.dmp in DMPDIR, adaugarea unei firme"
|
||||
Add-ReportLine " noi (SYS.NEWSCHEMA / 06-add-company.ps1) va esua la"
|
||||
Add-ReportLine " DBMS_DATAPUMP.ADD_FILE. Copiaza-l in $dmpDirPath."
|
||||
Add-ReportLine " Sursa: LXC 108, container oracle-xe,"
|
||||
Add-ReportLine " /tmp/oracle-import-roa2/firmanoua.dmp"
|
||||
$extraIssues += "FIRMANOUA.dmp missing from DMPDIR (adding new companies will fail)"
|
||||
}
|
||||
}
|
||||
|
||||
Add-ReportLine ""
|
||||
if ($smtpOut -and $smtpOut -ne '<nesetat>') {
|
||||
Add-ReportLine "SMTP_OUT_SERVER: $smtpOut"
|
||||
}
|
||||
else {
|
||||
Add-ReportLine "SMTP_OUT_SERVER: NESETAT"
|
||||
Add-ReportLine "[NOTA] UTL_MAIL.SEND va da ORA-29278/29279 pana cand e setat."
|
||||
Add-ReportLine " Ruleaza 08-post-install-config.ps1 -EmailSmtp <server>."
|
||||
}
|
||||
|
||||
# Network ACL Status
|
||||
Add-ReportSection "Network ACL Status"
|
||||
|
||||
@@ -531,6 +595,10 @@ EXIT;
|
||||
$issues += "$($missingCompanies.Count) company schemas are missing"
|
||||
}
|
||||
|
||||
if ($extraIssues.Count -gt 0) {
|
||||
$issues += $extraIssues
|
||||
}
|
||||
|
||||
if ($issues.Count -eq 0) {
|
||||
Add-ReportLine "[OK] All checks passed!"
|
||||
Add-ReportLine ""
|
||||
|
||||
Reference in New Issue
Block a user