feat(oracle): granturi dictionar PACK_DIAG_SPATIU + sys-grants.sql legat in flux
Trei probleme gasite pregatind migrarea unui client de pe Oracle XE 11 pe XE 21c. 1. sys-grants.sql nu era rulat de niciun script PowerShell. Era referit doar din run-all-sys.sql, care se lanseaza manual. Pe orice instalare facuta cu RunAll.cmd lipseau sinonimele SYS (SYN_NEWSCHEMA, SYN_NEWSCHEMAJOB, EXECUTESCRIPTOS, SYN_PINFO), DMPDIR si granturile pe DBMS_SCHEDULER / UTL_* / DBMS_CRYPTO catre CONTAFIN_ORACLE. Legat ca STEP 3 in 04-create-synonyms-grants, dupa import - unde propriul header al fisierului spune ca trebuie rulat. 2. Granturile de dictionar cerute de PACK_DIAG_SPATIU lipseau complet. Consolidez sys_2026_08_03_05, sys_2026_08_03_07 si sys_2026_08_06_07 in sectiunea [5/5] din sys-grants.sql: SELECT direct pe 18 vederi dba_*/v$*, idempotent, cu ORA-00942 tratat pentru vederile absente pe alte editii/versiuni. Grantul prin rolul DBA nu ajunge - rolurile nu se aplica in pachetele cu drepturi de definitor, iar PACK_DIAG_SPATIU e exact asa; fara ele ramane INVALID si DIAGSPATIU_ZILNIC nu ruleaza. 3. Capcana la migrari: tabela de versiuni a lui PACK_MIGRARE traieste in CONTAFIN_ORACLE si vine cu DMP-ul, deci baza noua raporteaza scripturile sys_* drept aplicate si ROAACTUALIZARI le sare, desi in SYS nu exista nimic. De aceea obiectele si granturile SYS se pun la instalare, nu prin actualizator. Documentat in sys-updates/README.md si in ghidul nou. 07-verify-installation raporteaza nominal care dintre cele 18 granturi lipsesc. Documentatie: docs/instalare-si-migrare-oracle.md - arbore de decizie intre roa-windows-setup/ (client pe Windows), migration/ (Oracle in Docker pe LXC 108) si new-roa-oracle-server/ (arhiva). Include de ce migration/ nu se foloseste la un client Windows: creeaza PDB ROA cu OraclePass123, sinonime minimale, fara SERVER_INFO / ROAUPDATE / ACL / sqlnet.ora, iar sys_objects.sql de acolo creeaza INFO in SYSTEM - cauza cunoscuta a ORA-01653 la actualizare. Plus comenzile de export din XE 11 / 10g si plafonul XE de 12 GB. Corectat pe drum: dual-edition-test-plan si issues-se-prod indicau clonarea VM 302 -> 303 pentru testul SE, dar 303 e ocupat de Win11-Adina. Mutat pe 304. NETESTAT pe baza reala - VM 302 e oprit. Scripturile trec doar parse-check PowerShell. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SzF1hf4aFS1tmJWpPMiwGp
This commit is contained in:
@@ -1,5 +1,10 @@
|
||||
# ROA Oracle Database Setup for Windows
|
||||
|
||||
> **Nu ești sigur că acesta e directorul potrivit?**
|
||||
> Vezi [`../docs/instalare-si-migrare-oracle.md`](../docs/instalare-si-migrare-oracle.md) —
|
||||
> compară acest director cu `migration/` și `new-roa-oracle-server/` și conține arborele
|
||||
> de decizie.
|
||||
|
||||
> **Status testare ediții Oracle 21c:**
|
||||
>
|
||||
> | Ediție | Status | Mediu validat |
|
||||
@@ -17,7 +22,7 @@ Scripts and documentation for setting up ROA Oracle Database on Windows servers:
|
||||
| Scenario | Description |
|
||||
|----------|-------------|
|
||||
| **New Server** | Oracle 21c SE (non-CDB) or XE (CDB/PDB) + CONTAFIN_ORACLE.dmp |
|
||||
| **Migration** | Import existing DMP files (CONTAFIN_ORACLE + 30-50 companies) |
|
||||
| **Migration** | Import existing DMP files (CONTAFIN_ORACLE + 30-50 companies), inclusiv de pe Oracle XE 11 / 10g |
|
||||
| **Add Company** | Add new company schema to existing server |
|
||||
|
||||
---
|
||||
@@ -92,7 +97,7 @@ roa-windows-setup/
|
||||
│ ├── 01-setup-database.ps1 # Tablespace, profile, CONTAFIN_ORACLE user
|
||||
│ ├── 02-create-sys-objects.ps1# SYS objects (AUTH_PACK, NEWSCHEMA, etc.)
|
||||
│ ├── 03-import-contafin.ps1 # Import CONTAFIN_ORACLE schema
|
||||
│ ├── 04-create-synonyms-grants.ps1 # Public synonyms and grants
|
||||
│ ├── 04-create-synonyms-grants.ps1 # Public synonyms, grants + sys-grants.sql
|
||||
│ ├── 05-import-companies.ps1 # Batch import company schemas
|
||||
│ ├── 06-add-company.ps1 # Add new company to existing server
|
||||
│ ├── 07-verify-installation.ps1# Verify installation completeness
|
||||
@@ -134,7 +139,7 @@ roa-windows-setup/
|
||||
| `01-setup-database.ps1` | Create tablespace ROA, configure profile, create CONTAFIN_ORACLE user | Yes |
|
||||
| `02-create-sys-objects.ps1` | Install SYS objects: AUTH_PACK, NEWSCHEMA, EXECUTESCRIPTOS, UTL_MAIL | Yes |
|
||||
| `03-import-contafin.ps1` | Import CONTAFIN_ORACLE schema from DMP | Yes |
|
||||
| `04-create-synonyms-grants.ps1` | Create public synonyms and grants for CONTAFIN_ORACLE | Yes |
|
||||
| `04-create-synonyms-grants.ps1` | Public synonyms + grants for CONTAFIN_ORACLE, then `sys-grants.sql` (SYS grants, SYS synonyms, DMPDIR, data dictionary reads for `PACK_DIAG_SPATIU`) | Yes |
|
||||
| `05-import-companies.ps1` | Batch import company schemas from DMP files | Yes |
|
||||
| `06-add-company.ps1` | Add new company to existing server | Optional |
|
||||
| `07-verify-installation.ps1` | Verify installation completeness (objects, grants, synonyms) | Yes |
|
||||
@@ -311,19 +316,84 @@ Copy-Item \\server\dmp\NEWCOMPANY.dmp C:\DMPDIR\
|
||||
.\06-add-company.ps1 -CompanyName "NEWCOMPANY" -Password "ROMFASTSOFT"
|
||||
```
|
||||
|
||||
### Migration from Oracle 10g
|
||||
### Migrare de la un server client existent (Oracle XE 11 / 10g)
|
||||
|
||||
Exportul de pe sursă **nu** e automatizat aici — scripturile presupun DMP-urile deja în
|
||||
`C:\DMPDIR\` pe serverul nou.
|
||||
|
||||
**Sursa Oracle XE 11.2.** `impdp` din 21c acceptă direct seturile Data Pump produse de 11.2,
|
||||
deci fără `VERSION=`:
|
||||
|
||||
```bat
|
||||
REM pe serverul sursă, ca SYSTEM
|
||||
sqlplus system/parola@XE
|
||||
CREATE OR REPLACE DIRECTORY DMPDIR AS 'C:\DMPDIR';
|
||||
GRANT READ, WRITE ON DIRECTORY DMPDIR TO SYSTEM;
|
||||
|
||||
expdp system/parola@XE SCHEMAS=CONTAFIN_ORACLE DIRECTORY=DMPDIR ^
|
||||
DUMPFILE=contafin_oracle.dmp LOGFILE=export_contafin.log
|
||||
|
||||
expdp system/parola@XE SCHEMAS=FIRMA1,FIRMA2 DIRECTORY=DMPDIR ^
|
||||
DUMPFILE=firme_%U.dmp LOGFILE=export_firme.log PARALLEL=2
|
||||
REM ^ %U e substituția Data Pump; din interiorul unui fișier .bat se scrie %%U
|
||||
```
|
||||
|
||||
Lista schemelor se ia din `CONTAFIN_ORACLE.NOM_FIRME` (`WHERE sters = 0`) — aceeași listă pe
|
||||
care `07-verify-installation.ps1` o compară apoi cu schemele existente.
|
||||
|
||||
**Sursa Oracle 10g cu `exp` clasic.** Formatele `exp`/`expdp` nu sunt interschimbabile: un
|
||||
fișier produs cu `exp` se importă cu `imp`, nu cu `impdp`.
|
||||
|
||||
```powershell
|
||||
# 1. Export from Oracle 10g (on source Windows server)
|
||||
# 1. Export de pe sursă (exp clasic)
|
||||
exp system/password@ORCL file=C:\backup\COMPANY.dmp owner=COMPANY
|
||||
|
||||
# 2. Convert with Oracle 21c imp (if needed)
|
||||
# Or use impdp with VERSION parameter
|
||||
|
||||
# 3. Import using scripts
|
||||
.\05-import-companies.ps1 -DmpFile "COMPANY.dmp"
|
||||
# 2. Import
|
||||
imp system/password@XEPDB1 file=C:\DMPDIR\COMPANY.dmp fromuser=COMPANY touser=COMPANY
|
||||
```
|
||||
|
||||
**Înainte de a porni:** verifică plafonul XE (12 GB date de utilizator pe 21c XE, față de
|
||||
11 GB pe 11.2 XE):
|
||||
|
||||
```sql
|
||||
SELECT ROUND(SUM(bytes)/1024/1024/1024, 2) AS gb
|
||||
FROM dba_segments
|
||||
WHERE owner NOT IN ('SYS','SYSTEM','OUTLN','DBSNMP','XDB','APEX_040000');
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Scripturile `sys_*` la o migrare — capcana tabelei de versiuni
|
||||
|
||||
Obiectele deținute de **SYS nu călătoresc în DMP-ul de schemă**. În schimb, tabela de versiuni
|
||||
a lui `PACK_MIGRARE` trăiește în `CONTAFIN_ORACLE` și **vine cu DMP-ul** — iar scripturile
|
||||
`sys_*` își înregistrează acolo aplicarea (`pack_migrare.UpdateVersiune(..., 'SYS')`).
|
||||
|
||||
Consecința: pe baza nouă, `ROAACTUALIZARI` vede scripturile `sys_*` drept deja aplicate și le
|
||||
sare, deși în `SYS` nu există nimic. De aceea obiectele și granturile SYS se pun **la
|
||||
instalare**, prin `02-create-sys-objects.ps1` și `04-create-synonyms-grants.ps1`, și nu se
|
||||
așteaptă de la actualizator.
|
||||
|
||||
Ce e consolidat unde:
|
||||
|
||||
| Script sursă (`D:\roa\database\SCRIPTURI_CLAR\`) | Unde e aici |
|
||||
|---|---|
|
||||
| `sys_2026_01_14_01_AUTH_PACK` | `sql/sys-objects.sql` |
|
||||
| `sys_2026_08_08_02_SYS_INFO_TABLESPACE_PURJARE` | `sql/sys-objects.sql` + `sql/scheduler-jobs.sql` |
|
||||
| `sys_2026_08_03_05_DIAG_SPATIU_GRANT` | `sql/sys-grants.sql`, secțiunea `[5/5]` |
|
||||
| `sys_2026_08_03_07_DIAG_SPATIU_GRANT2` | `sql/sys-grants.sql`, secțiunea `[5/5]` |
|
||||
| `sys_2026_08_06_07_DIAG_SPATIU_GRANT3` | `sql/sys-grants.sql`, secțiunea `[5/5]` |
|
||||
|
||||
Secțiunea `[5/5]` acordă `SELECT` **direct** pe 18 vederi de dicționar către
|
||||
`CONTAFIN_ORACLE`. Grantul prin rolul `DBA` nu ajunge: rolurile nu se aplică în pachetele cu
|
||||
drepturi de definitor, iar `CONTAFIN_ORACLE.PACK_DIAG_SPATIU` este exact așa. Fără ele
|
||||
pachetul rămâne `INVALID` și jobul `DIAGSPATIU_ZILNIC` nu rulează.
|
||||
`07-verify-installation.ps1` raportează care dintre cele 18 lipsesc.
|
||||
|
||||
Un `sys_*` nou fie se consolidează în `sys-objects.sql` / `sys-grants.sql` /
|
||||
`scheduler-jobs.sql`, fie se pune în [`sql/sys-updates/`](sql/sys-updates/README.md) ca patch
|
||||
post-instalare.
|
||||
|
||||
---
|
||||
|
||||
## Uninstall / Cleanup
|
||||
|
||||
Reference in New Issue
Block a user