docs: emailurile actualizarii si compatibilitatea scripturilor cu 10g/11g
Log-ul de actualizare (PACK_UPDATE.EmailLog, din baza) si buletinul informativ (trimis de serverul de update) sunt doua fluxuri diferite, cu destinatari configurati in locuri diferite. Scripturile de migrare se scriu la nivelul Oracle 10.2 si trebuie sa ruleze si pe 11.x; tabel cu versiunea minima a constructiilor uzuale si limitele XE. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TM9Cxpzrn9wBSkyBNr22Qc
This commit is contained in:
@@ -98,6 +98,31 @@ end;
|
|||||||
/
|
/
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Emailuri: log de actualizare vs buletin informativ
|
||||||
|
|
||||||
|
Sunt **doua emailuri diferite, trimise de doua masini diferite** — se confunda usor.
|
||||||
|
|
||||||
|
| | Log de actualizare | Buletin informativ |
|
||||||
|
|---|---|---|
|
||||||
|
| Cine trimite | baza de date, `PACK_UPDATE.EmailLog` (`UTL_SMTP` direct catre `EMAIL_SMTP:EMAIL_PORT`, `AUTH LOGIN`) | **serverul de update** (ASP.NET); baza doar face un GET pe `optiuni.UPD_URL_BULETININF` (cu `|CUSTOMERID|`) prin `PACK_UTILS.URL2Clob`, din `UpdateApp` |
|
||||||
|
| Destinatari | `server_info.EMAIL_TO` + `EMAIL_CC` | configurati pe serverul de update, **nu** in `server_info` (ex. `office@romfast.ro`) |
|
||||||
|
| Subiect / continut | `Actualizare ROA dd.mm.yyyy hh24:mi:ss`; liniile din `UPD_LOG`, text simplu separat cu TAB | compus de serverul de update |
|
||||||
|
| In `UPD_LOG` | erorile SMTP: `EROARE: utl_smpt ERROR CODE ...` | raspunsul HTTP, verbatim (ex. `ERR-1-BULETIN INFORMATIV NU S-A TRIMIS. MOTIVUL: Error: 1429`) |
|
||||||
|
|
||||||
|
Detalii care conteaza la depanare:
|
||||||
|
|
||||||
|
- **`EMAIL_CC` nu produce un antet `Cc:`.** Codul il concateneaza cu virgula la `EMAIL_TO` si trimite
|
||||||
|
`RCPT TO` pentru toti; antetul e un singur `To: <toti>`. Deci un email primit *in Cc* nu vine de la
|
||||||
|
`EmailLog`.
|
||||||
|
- **`EMAIL_FROM` e per server de client** (`roaupdate-<client>@romfast.ro`) si difera de contul
|
||||||
|
autentificat, care e acelasi peste tot (`EMAIL_USERNAME = roaupdate@romfast.ro`). Expeditorul e
|
||||||
|
singurul indiciu din email despre serverul care l-a trimis. Daca `EMAIL_FROM` lipseste, se compune
|
||||||
|
din `UTL_INADDR.get_host_name`.
|
||||||
|
- **Un buletin esuat nu opreste nimic**: raspunsul `ERR-1-...` e text normal, se scrie in `UPD_LOG` si
|
||||||
|
actualizarea merge mai departe. Doar exceptiile HTTP ajung ca `ERR: <url> ...`.
|
||||||
|
- **Un SMTP picat, in schimb, opreste tot** — `EmailLog` ridica `ORA-20000` care mascheaza eroarea
|
||||||
|
reala (vezi „Capcane" mai sus). E singurul loc din lantul de email care are voie sa arunce.
|
||||||
|
|
||||||
## Configurare (CONTAFIN_ORACLE)
|
## Configurare (CONTAFIN_ORACLE)
|
||||||
|
|
||||||
- `server_info`: `POWERSHELLDOWNLOAD`, `POWERSHELLPATH`, `POWERSHELLTIMEOUT`, `CURLPATH`,
|
- `server_info`: `POWERSHELLDOWNLOAD`, `POWERSHELLPATH`, `POWERSHELLTIMEOUT`, `CURLPATH`,
|
||||||
|
|||||||
@@ -27,17 +27,36 @@ Reguli confirmate de Marius (24.07.2026):
|
|||||||
## Compatibilitate cu serverele clientilor
|
## Compatibilitate cu serverele clientilor
|
||||||
|
|
||||||
Serverul de dezvoltare e mai nou decat serverele clientilor, deci un script care trece local poate
|
Serverul de dezvoltare e mai nou decat serverele clientilor, deci un script care trece local poate
|
||||||
pica la client si opri actualizarea. **ROMCONSTRUCT e singurul client ramas pe Oracle 10.2** — el da
|
pica la client si opri actualizarea.
|
||||||
masura pentru orice se pune in comune.
|
|
||||||
|
|
||||||
Constructii care merg pe dev si pica pe 10g:
|
Parcul de servere (03.08.2026): **un client pe Oracle 10.2** (ROMCONSTRUCT), cativa pe **XE 11 si
|
||||||
|
11g** standard, restul pe **XE 18/19/21 si 18/21**.
|
||||||
|
|
||||||
| Constructie | Ce iese pe 10g |
|
**Regula: orice script care ajunge in comune se scrie la nivelul Oracle 10.2 si trebuie sa ruleze pe
|
||||||
|---|---|
|
10.2 si pe 11.x.** Numitorul comun e 10.2 — nu se folosesc facilitati 11g si cu atat mai putin 12c+,
|
||||||
| identificator peste 30 de caractere (tabela, index, constrangere, coloana) | `ORA-00972` (12.2+ accepta 128) |
|
oricat de comod ar fi pe dev. Proba inainte de publicare se face pe serverul cel mai vechi
|
||||||
| `REGEXP_COUNT` (functie din 11g) | `ORA-00904` in SQL / `PLS-00201` in PL/SQL |
|
(ROMCONSTRUCT), nu pe dev.
|
||||||
| `CONTINUE` (instructiune PL/SQL din 11g) | `PLS-00201: identificatorul 'CONTINUE' trebuie declarat` |
|
|
||||||
| `FORALL` cu campuri de record din colectie (`S(i).camp`) | `PLS-00436` / `PLS-00382` |
|
Constructii care merg pe dev si pica mai jos:
|
||||||
|
|
||||||
|
| Constructie | Disponibila de la | Ce iese sub ea |
|
||||||
|
|---|---|---|
|
||||||
|
| identificator peste 30 de caractere (tabela, index, constrangere, coloana) | 12.2 | `ORA-00972` |
|
||||||
|
| `REGEXP_COUNT` | 11.1 | `ORA-00904` in SQL / `PLS-00201` in PL/SQL |
|
||||||
|
| `CONTINUE` (instructiune PL/SQL) | 11.1 | `PLS-00201: identificatorul 'CONTINUE' trebuie declarat` |
|
||||||
|
| `LISTAGG` | 11.2 | `ORA-00904` |
|
||||||
|
| `PIVOT` / `UNPIVOT` | 11.1 | eroare de sintaxa |
|
||||||
|
| trigger compus (`COMPOUND TRIGGER`) | 11.1 | eroare de compilare |
|
||||||
|
| `secventa.NEXTVAL` direct intr-o atribuire PL/SQL | 11.1 | `PLS-00357` (pe 10g: `select ... into` din `dual`) |
|
||||||
|
| `FETCH FIRST n ROWS`, `CROSS APPLY`, `LATERAL` | 12.1 | eroare de sintaxa (pe 10g/11g: `rownum`) |
|
||||||
|
| `IDENTITY`, `DEFAULT ON NULL`, coloane invizibile | 12.1 | eroare de sintaxa |
|
||||||
|
| `VALIDATE_CONVERSION`, `CAST ... DEFAULT ON CONVERSION ERROR` | 12.2 | `ORA-00904` |
|
||||||
|
| `FORALL` cu campuri de record din colectie (`S(i).camp`) | 11.1 | `PLS-00436` / `PLS-00382` |
|
||||||
|
|
||||||
|
Editiile **XE** adauga limite proprii, independent de sintaxa: XE 11.2 nu are partitionare, executie
|
||||||
|
paralela si nici masina virtuala Java in baza; XE 18/19/21 au setul de facilitati al editiei mari,
|
||||||
|
dar plafonate pe resurse (12 GB de date, 2 GB RAM, 2 fire de executie). Deci nimic care sa depinda de
|
||||||
|
partitionare sau de Java in baza, si nicio operatie care sa presupuna spatiu/memorie de server mare.
|
||||||
|
|
||||||
Plus, independent de versiune: **un obiect nu se poate referi la ceva creat de un script ulterior.**
|
Plus, independent de versiune: **un obiect nu se poate referi la ceva creat de un script ulterior.**
|
||||||
Pe dev obiectul exista deja, deci pachetul compileaza; la client scriptele se aplica in ordine si
|
Pe dev obiectul exista deja, deci pachetul compileaza; la client scriptele se aplica in ordine si
|
||||||
|
|||||||
Reference in New Issue
Block a user