docs(oracle): SYS.INFO se recreeaza in ROA, nu se muta

DROP+CREATE in loc de ALTER TABLE MOVE: continutul e log fara valoare, iar
recrearea nu cere spatiu liber cat segmentul si nu tine tabela blocata cat ar
dura copierea. DROP e cu PURGE, altfel segmentul ramane in recyclebin si spatiul
nu se elibereaza. SYS.pINFO ramane INVALID dupa DROP, deci se recompileaza.

Scriptul de livrare: SVN r18010.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Rft5ofNa4Ux5VEh4YnhJRC
This commit is contained in:
Marius
2026-08-08 22:00:56 +03:00
parent 3473c4d971
commit 76a2eb69c1
4 changed files with 48 additions and 18 deletions

View File

@@ -310,15 +310,22 @@ Jobul e in schema `SYS` pentru ca privilegiile `ANY` nu se aplica pe obiectele `
### Livrarea catre clientii existenti
`D:\ROA\DATABASE\SCRIPTURI_CLAR\2026\08\sys_2026_08_08_02_SYS_INFO_TABLESPACE_PURJARE.sql`
(repo COMUN / SVN) face acelasi lucru pe bazele deja instalate, in trei pasi: purjare la 90 de zile
→ `alter table sys.info move tablespace ROA lob (info) store as (tablespace ROA)` → crearea jobului.
(SVN r18010) face acelasi lucru pe bazele deja instalate, in doi pasi: **recrearea** tabelei in
tablespace-ul `ROA` (`drop table sys.info purge` + `create ... tablespace ROA lob (info) store as
(tablespace ROA)`) → crearea jobului.
Pasii 1 si 2 au `EXCEPTION WHEN OTHERS THEN NULL` **intentionat**: o eroare acolo (lipsa de spatiu
in `ROA`, tabela blocata) nu are voie sa opreasca lantul de actualizare al clientului, iar ce nu s-a
facut se vede a doua zi in alerta `DIAGSPATIU_ZILNIC`. Scris la nivel Oracle 10.2, idempotent, CRLF.
**Se recreeaza, nu se muta**: continutul e log fara valoare, iar `DROP`+`CREATE` nu cere spatiu
liber cat segmentul si nu tine tabela blocata cat ar dura copierea. `DROP` e cu `PURGE`, altfel
segmentul ramane in recyclebin si spatiul nu se elibereaza. Daca `CREATE`-ul in `ROA` esueaza,
tabela se recreeaza in `SYSTEM`, ca sa existe intotdeauna; `SYS.pINFO` ramane `INVALID` dupa `drop`,
deci se recompileaza explicit (s-ar recompila si singura la primul apel).
**Nepublicat inca** — publicarea se face cu `COMUN\utile\publicare_scripturi.ps1` si e o actiune
catre toti clientii.
Pasul 1 are `EXCEPTION WHEN OTHERS THEN NULL` **intentionat**: o eroare acolo nu are voie sa
opreasca lantul de actualizare al clientului, iar ce nu s-a facut se vede a doua zi in alerta
`DIAGSPATIU_ZILNIC`. Scris la nivel Oracle 10.2, idempotent, CRLF.
**Nepublicat catre clienti** — publicarea se face cu `COMUN\utile\publicare_scripturi.ps1` si scrie
in `Y:\ROAUPDATE\_UPDATE\`, care e live pentru toti.
Pointeri incrucisati: [`00-INSTALL-ORACLE-XE.md`](../proxmox/lxc108-oracle/roa-windows-setup/docs/00-INSTALL-ORACLE-XE.md)
si [`00-INSTALL-ORACLE-SE.md`](../proxmox/lxc108-oracle/roa-windows-setup/docs/00-INSTALL-ORACLE-SE.md).

View File

@@ -16,18 +16,24 @@ Stare la predare. **Fara analize noi** — doar ce s-a facut, ce nu, si capcanel
| `.../roa-windows-setup/sql/uninstall-roa.sql` | dezinstalarea sterge si jobul |
| `.../roa-windows-setup/docs/00-INSTALL-ORACLE-XE.md` si `-SE.md` | pas post-instalare: plafon `SYSTEM` 2000M + mutarea `SYS.INFO` la instalari vechi |
### In SVN (r18009), **NEPUBLICAT catre clienti** — in afara acestui repo
### In SVN (r18010), **NEPUBLICAT catre clienti** — in afara acestui repo
`D:\ROA\DATABASE\SCRIPTURI_CLAR\2026\08\sys_2026_08_08_02_SYS_INFO_TABLESPACE_PURJARE.sql`
Purjare 90 zile → `move tablespace ROA lob (info) store as (tablespace ROA)` → creare job.
Nivel Oracle 10.2, idempotent, CRLF verificat (122 linii, 0 LF singure, 0 octeti non-ASCII).
Pasii 1-2 au `EXCEPTION WHEN OTHERS THEN NULL` **intentionat** (o eroare acolo nu are voie sa
Doi pasi: **recrearea** tabelei in `ROA` (`drop table sys.info purge` + `create ... tablespace ROA
lob (info) store as (tablespace ROA)` + `alter procedure sys.pinfo compile`) → creare job.
Nivel Oracle 10.2, idempotent, CRLF verificat (103 linii, 0 LF singure, 0 octeti non-ASCII).
**r18009 muta tabela** (`alter table ... move`); **r18010 o recreeaza** — decizia lui Marius:
continutul e log fara valoare, iar `DROP`+`CREATE` nu cere spatiu liber cat segmentul si nu tine
tabela blocata. `PURGE` e obligatoriu (altfel segmentul ramane in recyclebin). Fallback pe `SYSTEM`
daca `CREATE`-ul in `ROA` esueaza, ca tabela sa existe intotdeauna.
Pasul 1 are `EXCEPTION WHEN OTHERS THEN NULL` **intentionat** (o eroare acolo nu are voie sa
opreasca lantul de actualizare; ce n-a mers apare a doua zi in alerta `DIAGSPATIU_ZILNIC`).
Comis in SVN la **r18009** (08.08.2026). **Publicarea catre clienti NU s-a facut si e decizia lui
Marius** — `COMUN\utile\publicare_scripturi.ps1` scrie in `Y:\ROAUPDATE\_UPDATE\`, care e live
pentru toti clientii.
**Publicarea catre clienti NU s-a facut si e decizia lui Marius**
`COMUN\utile\publicare_scripturi.ps1` scrie in `Y:\ROAUPDATE\_UPDATE\`, care e live pentru toti.
## 2. Modificari aplicate in productie

View File

@@ -193,10 +193,18 @@ SELECT file_name, ROUND(bytes/1048576,2) mb, ROUND(maxbytes/1048576,2) max_mb, a
FROM dba_data_files WHERE tablespace_name = 'SYSTEM';
```
La o instalare mai veche, unde `SYS.INFO` a rămas în `SYSTEM`:
La o instalare mai veche, unde `SYS.INFO` a rămas în `SYSTEM`, tabela se **recreează** (conținutul e
log fără valoare). `PURGE` e obligatoriu, altfel segmentul rămâne în recyclebin și spațiul nu se
eliberează:
```sql
ALTER TABLE SYS.INFO MOVE TABLESPACE ROA LOB (INFO) STORE AS (TABLESPACE ROA);
DROP TABLE SYS.INFO PURGE;
CREATE TABLE SYS.INFO (
INFO CLOB,
DATAORA TIMESTAMP(6) DEFAULT SYSTIMESTAMP,
LOCATIA VARCHAR2(200) NULL
) TABLESPACE ROA LOB (INFO) STORE AS (TABLESPACE ROA);
ALTER PROCEDURE SYS.PINFO COMPILE; -- rămâne INVALID după DROP
```
> Diagnosticul zilnic care prinde asta automat, pragurile și triajul alertelor:

View File

@@ -338,10 +338,19 @@ SELECT file_name, ROUND(bytes/1048576,2) mb, ROUND(maxbytes/1048576,2) max_mb, a
Plafonul de 11/12 GB al editiei XE se aplica pe **date utilizator** — `SYSTEM` si `SYSAUX` nu intra
la socoteala, deci ridicarea la 2000 MB nu apropie baza de limita.
La o instalare mai veche, unde `SYS.INFO` a ramas in `SYSTEM`, mutarea se face cu:
La o instalare mai veche, unde `SYS.INFO` a ramas in `SYSTEM`, tabela se **recreeaza** (continutul e
log fara valoare; `DROP`+`CREATE` nu cere spatiu liber cat segmentul si nu blocheaza tabela cat ar
dura o copiere). `PURGE` e obligatoriu, altfel segmentul ramane in recyclebin si spatiul nu se
elibereaza:
```sql
ALTER TABLE SYS.INFO MOVE TABLESPACE ROA LOB (INFO) STORE AS (TABLESPACE ROA);
DROP TABLE SYS.INFO PURGE;
CREATE TABLE SYS.INFO (
INFO CLOB,
DATAORA TIMESTAMP(6) DEFAULT SYSTIMESTAMP,
LOCATIA VARCHAR2(200) NULL
) TABLESPACE ROA LOB (INFO) STORE AS (TABLESPACE ROA);
ALTER PROCEDURE SYS.PINFO COMPILE; -- ramane INVALID dupa DROP
```
> Diagnosticul zilnic care prinde asta automat, pragurile lui si triajul alertelor: