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:
@@ -45,6 +45,7 @@ input/ # Oracle DMP files for import
|
|||||||
- **Chatbot architecture**: `proxmox/lxc104-flowise/docs/prd.md`
|
- **Chatbot architecture**: `proxmox/lxc104-flowise/docs/prd.md`
|
||||||
- **Docker Sandboxes (sbx) — agenți AI izolați**: `proxmox/lxc102-docker/README.md`
|
- **Docker Sandboxes (sbx) — agenți AI izolați**: `proxmox/lxc102-docker/README.md`
|
||||||
- **Disaster recovery**: `proxmox/vm109-windows-dr/README.md`
|
- **Disaster recovery**: `proxmox/vm109-windows-dr/README.md`
|
||||||
|
- **Instalare/migrare Oracle — care director se folosește**: `proxmox/lxc108-oracle/docs/instalare-si-migrare-oracle.md`
|
||||||
- **ROA Windows setup scripts (XE/SE 21c)**: `proxmox/lxc108-oracle/roa-windows-setup/README.md`
|
- **ROA Windows setup scripts (XE/SE 21c)**: `proxmox/lxc108-oracle/roa-windows-setup/README.md`
|
||||||
- **VM 302 test environment for ROA setup**: `proxmox/vm302-oracle-test/README.md`
|
- **VM 302 test environment for ROA setup**: `proxmox/vm302-oracle-test/README.md`
|
||||||
- **Diagnostic spațiu Oracle la clienți (job zilnic + emailuri)**: `docs/diagnostic-spatiu-clienti.md`
|
- **Diagnostic spațiu Oracle la clienți (job zilnic + emailuri)**: `docs/diagnostic-spatiu-clienti.md`
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ proxmox/
|
|||||||
│ ├── clienti/ # Cazuri concrete clienți (depanare/recreare DB)
|
│ ├── clienti/ # Cazuri concrete clienți (depanare/recreare DB)
|
||||||
│ │ ├── README.md # Index cazuri
|
│ │ ├── README.md # Index cazuri
|
||||||
│ │ └── oracle-xe-21c/ # ROMPETROL ENERGY: recreare PDB după ORA-12954
|
│ │ └── oracle-xe-21c/ # ROMPETROL ENERGY: recreare PDB după ORA-12954
|
||||||
|
│ ├── docs/ # Ghid rutare instalare vs. migrare Oracle
|
||||||
│ ├── roa-windows-setup/ # Scripturi setup ROA pe Windows + Oracle 21c
|
│ ├── roa-windows-setup/ # Scripturi setup ROA pe Windows + Oracle 21c
|
||||||
│ └── sql/
|
│ └── sql/
|
||||||
│ ├── roa/ # SQL-uri Oracle 10g compatibilitate
|
│ ├── roa/ # SQL-uri Oracle 10g compatibilitate
|
||||||
@@ -482,6 +483,7 @@ ssh root@10.0.20.201 "qm snapshot 302 pre-test --description 'Before ROA test'"
|
|||||||
- **Plan testare dual-edition** → `vm302-oracle-test/docs/dual-edition-test-plan.md`
|
- **Plan testare dual-edition** → `vm302-oracle-test/docs/dual-edition-test-plan.md`
|
||||||
- **Erori prod Oracle SE (TODO)** → `vm302-oracle-test/docs/issues-se-prod.md`
|
- **Erori prod Oracle SE (TODO)** → `vm302-oracle-test/docs/issues-se-prod.md`
|
||||||
- **Scripturi setup ROA Windows** → `lxc108-oracle/roa-windows-setup/`
|
- **Scripturi setup ROA Windows** → `lxc108-oracle/roa-windows-setup/`
|
||||||
|
- **Care director de instalare/migrare Oracle se folosește** → `lxc108-oracle/docs/instalare-si-migrare-oracle.md`
|
||||||
|
|
||||||
### Windows VM 201
|
### Windows VM 201
|
||||||
- **Reînnoiesc certificate SSL** → `vm201-windows/docs/vm201-certificat-letsencrypt-iis.md`
|
- **Reînnoiesc certificate SSL** → `vm201-windows/docs/vm201-certificat-letsencrypt-iis.md`
|
||||||
|
|||||||
@@ -1,5 +1,10 @@
|
|||||||
# Oracle Database XE - LXC 108 (Proxmox)
|
# Oracle Database XE - LXC 108 (Proxmox)
|
||||||
|
|
||||||
|
> **Scripturi de instalare / migrare Oracle pentru ROA** — trei directoare, ghid de rutare
|
||||||
|
> în [`docs/instalare-si-migrare-oracle.md`](docs/instalare-si-migrare-oracle.md):
|
||||||
|
> `roa-windows-setup/` (client pe Windows), `migration/` (Oracle în Docker pe acest LXC),
|
||||||
|
> `new-roa-oracle-server/` (arhivă istorică, nu se rulează).
|
||||||
|
|
||||||
## 📌 Informații Container LXC
|
## 📌 Informații Container LXC
|
||||||
|
|
||||||
- **VMID:** 108
|
- **VMID:** 108
|
||||||
|
|||||||
218
proxmox/lxc108-oracle/docs/instalare-si-migrare-oracle.md
Normal file
218
proxmox/lxc108-oracle/docs/instalare-si-migrare-oracle.md
Normal file
@@ -0,0 +1,218 @@
|
|||||||
|
# Instalare și migrare Oracle pentru ROA — care director, pentru ce
|
||||||
|
|
||||||
|
În `proxmox/lxc108-oracle/` există **trei** directoare cu scripturi de instalare/migrare, iar
|
||||||
|
numele lor nu spun de la sine care se potrivește. Nota asta e ghidul de rutare: ce livrează
|
||||||
|
fiecare, ce **nu** livrează și cum se aleg între ele.
|
||||||
|
|
||||||
|
| Director | Ce e | Stare |
|
||||||
|
|---|---|---|
|
||||||
|
| [`roa-windows-setup/`](../roa-windows-setup/README.md) | instalare ROA completă pe **Windows** + Oracle 21c (XE sau SE) | activ, validat pe VM 302 (XE) |
|
||||||
|
| [`migration/`](../migration/README.md) | migrare Oracle 10g → 21c XE cu Oracle **în Docker pe LXC 108** | activ pentru infrastructura internă |
|
||||||
|
| [`new-roa-oracle-server/`](../new-roa-oracle-server/) | arhiva istorică din era Oracle 10g | **doar referință**, nu se rulează |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Arbore de decizie
|
||||||
|
|
||||||
|
```
|
||||||
|
Baza Oracle ajunge pe un server Windows la client?
|
||||||
|
├── DA → roa-windows-setup/ (PowerShell nativ, fără WSL)
|
||||||
|
└── NU → baza ajunge în Docker pe LXC 108 / alt Linux?
|
||||||
|
├── DA → migration/ (bash, orchestrat de 00-MASTER-MIGRATION.sh)
|
||||||
|
└── NU → niciunul; descrie scenariul înainte de a improviza
|
||||||
|
```
|
||||||
|
|
||||||
|
**Cazul tipic la client** — server vechi cu Oracle XE 11 (sau 10g), se mută
|
||||||
|
`CONTAFIN_ORACLE` + schemele de firme pe un server nou cu Oracle 21c XE, tot Windows:
|
||||||
|
→ **`roa-windows-setup/`**, plus pasul de export descris la §4.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Ce livrează fiecare
|
||||||
|
|
||||||
|
### `roa-windows-setup/` — instalare ROA, nu doar bază de date
|
||||||
|
|
||||||
|
Diferența esențială: `migration/` îți lasă o bază cu schemele înăuntru;
|
||||||
|
`roa-windows-setup/` îți lasă o **instalare ROA funcțională**.
|
||||||
|
|
||||||
|
| # | Script | Ce face |
|
||||||
|
|---|---|---|
|
||||||
|
| 01 | `01-setup-database.ps1` | tablespace `ROA`, profil, user `CONTAFIN_ORACLE`, `sqlnet.ora` cu `ALLOWED_LOGON_VERSION=8` |
|
||||||
|
| 02 | `02-create-sys-objects.ps1` | obiectele SYS din `sql/sys-objects.sql` (AUTH_PACK, AUTH_DETALII, AUTH_SERII, VAUTH_SERII, INFO, pINFO, SEQ_AUTH_SERII, EXECUTESCRIPTOS, NEWSCHEMA, NEWSCHEMAJOB, UPDATESQLPLUS) |
|
||||||
|
| 03 | `03-import-contafin.ps1` | import `CONTAFIN_ORACLE` (parfile: `par/import-contafin.par`) |
|
||||||
|
| 04 | `04-create-synonyms-grants.ps1` | `synonyms-public.sql` + `grants-public.sql` + **`sys-grants.sql`** (granturi SYS, sinonime SYS, DMPDIR, granturi de dicționar pentru `PACK_DIAG_SPATIU`), context `SESIUNE`, ACL de rețea |
|
||||||
|
| 05 | `05-import-companies.ps1` | import în lot al schemelor de firme (parfile: `par/import-company.par`) |
|
||||||
|
| 06 | `06-add-company.ps1` | adaugă o firmă nouă pe un server deja instalat (opțional) |
|
||||||
|
| 08 | `08-post-install-config.ps1` | 54 directoare `ROAUPDATE` (fizice + obiecte `DIRECTORY`), `SERVER_INFO`, `AUTH_DETALII` (Customer ID), joburile `UPDATEROA_ZILNIC` / `UPDATERTVAI_ZILNIC` / `SYSINFO_PURJARE_ZILNIC` |
|
||||||
|
| 07 | `07-verify-installation.ps1` | raport de verificare: versiune/ediție, tablespace, obiecte, obiecte invalide, sinonime, **granturi de dicționar**, firme din `NOM_FIRME` vs. scheme reale, ACL |
|
||||||
|
| 99 | `99-uninstall-roa.ps1` | curățare completă, pentru re-testare |
|
||||||
|
|
||||||
|
`RunAll.cmd` le rulează în ordinea `01 → 02 → 03 → 04 → 05 → 08 → 07`.
|
||||||
|
`Run.cmd <script>` rulează unul singur, rezolvând `ExecutionPolicy`.
|
||||||
|
|
||||||
|
Compatibilitate cu clienți vechi: `01-setup-database.ps1` scrie
|
||||||
|
`SQLNET.ALLOWED_LOGON_VERSION_SERVER/CLIENT=8` (implicitul în 21c este 12 și **refuză**
|
||||||
|
Instant Client 10/11). Detalii și capcanele — în
|
||||||
|
[`config/sqlnet.ora`](../roa-windows-setup/config/sqlnet.ora): fișierul merge în *Oracle Base
|
||||||
|
Home*, nu în `ORACLE_HOME`; listener-ul se **oprește și pornește** (nu doar `reload`); parolele
|
||||||
|
trebuie resetate ca să se regenereze verificatorul 10G.
|
||||||
|
|
||||||
|
### `migration/` — Oracle în Docker pe LXC 108
|
||||||
|
|
||||||
|
| Script | Ce face |
|
||||||
|
|---|---|
|
||||||
|
| `00-MASTER-MIGRATION.sh` | orchestratorul; moduri de export AUTO (SSH) / MANUAL / LOCAL / IN-PLACE |
|
||||||
|
| `00-MASTER-MIGRATION.bat` | varianta Windows; pentru scenariile 1-3 deleagă la `wsl bash -c ./00-MASTER-MIGRATION.sh`, iar pe ramura nativă își **generează la runtime** `setup-windows.sql`, `synonyms-windows.sql`, `finalize-windows.sql` |
|
||||||
|
| `00-install-oracle21c-xe.sh` | instalează Oracle 21c XE **în Docker** |
|
||||||
|
| `01-setup-oracle21c.sh` … `06-finalize-migration.sh` | tablespace + useri, export, transfer DMP, import, sinonime/granturi, recompilare |
|
||||||
|
| `sys_objects.sql` | obiectele SYS, **versiunea pre-consolidare** |
|
||||||
|
|
||||||
|
De ce nu se folosește la un client Windows, deși are și un `.bat`:
|
||||||
|
|
||||||
|
- ramura nativă creează un **PDB numit `ROA`** în CDB-ul XE, cu parola `OraclePass123` — altă
|
||||||
|
convenție decât `XEPDB1` / `romfastsoft` din `roa-windows-setup`;
|
||||||
|
- generează un set minimal de sinonime, nu cele 81 publice și nici cele 54 de `DIRECTORY`;
|
||||||
|
- nu configurează `SERVER_INFO`, `AUTH_DETALII`, joburile de actualizare, ACL-ul de rețea;
|
||||||
|
- nu scrie `sqlnet.ora` de compatibilitate — aplicațiile vechi ale clientului nu se vor conecta;
|
||||||
|
- `sys_objects.sql` de acolo creează `AUTH_DETALII`, `AUTH_SERII` **și `INFO` în `SYSTEM`** —
|
||||||
|
exact cauza umplerii tablespace-ului dicționarului și a erorilor `ORA-01653` la actualizare
|
||||||
|
(vezi [`docs/diagnostic-spatiu-clienti.md`](../../../docs/diagnostic-spatiu-clienti.md)). În
|
||||||
|
`roa-windows-setup/sql/sys-objects.sql` asta e deja corectat: `INFO` se creează în
|
||||||
|
tablespace-ul `ROA`.
|
||||||
|
|
||||||
|
### `new-roa-oracle-server/` — arhivă
|
||||||
|
|
||||||
|
Conține `createdb.sql`, `createco.sql`, `createfn.sql`, `roa.bat`, `roa_firma.bat` și seria
|
||||||
|
istorică `sys_2007_*` … `sys_2026_01_*`. E **sursa din care a fost consolidat**
|
||||||
|
`roa-windows-setup/sql/sys-objects.sql`, nu un runbook. Nu se rulează pe un server nou.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Ce **nu** e acoperit de scripturi
|
||||||
|
|
||||||
|
Exportul de pe serverul sursă nu e automatizat în `roa-windows-setup/`. Fișierele DMP se
|
||||||
|
așteaptă deja în `C:\DMPDIR\` pe serverul nou.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Export de pe un server client existent (XE 11 / 10g)
|
||||||
|
|
||||||
|
**Oracle XE 11.2 → 21c.** `impdp` din 21c acceptă direct seturile Data Pump produse de 11.2,
|
||||||
|
deci nu e nevoie de `VERSION=`:
|
||||||
|
|
||||||
|
```bat
|
||||||
|
REM pe serverul sursa, 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 de exportat se ia din `CONTAFIN_ORACLE.NOM_FIRME` (`WHERE sters = 0`) — e
|
||||||
|
aceeași listă pe care `07-verify-installation.ps1` o compară apoi cu schemele existente pe
|
||||||
|
serverul nou.
|
||||||
|
|
||||||
|
**Oracle 10g ca sursă.** `expdp` există de la 10.1, dar dacă exportul a fost făcut cu `exp`
|
||||||
|
clasic, importul se face cu `imp`, nu cu `impdp` — cele două formate nu sunt interschimbabile.
|
||||||
|
|
||||||
|
**Export din LXC 108 (mediul intern), pentru clienți care cer compatibilitate 11g:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker exec oracle18-xe expdp system/romfastsoft@localhost:1521/XEPDB1 \
|
||||||
|
SCHEMAS=CONTAFIN_ORACLE DIRECTORY=DMPDIR DUMPFILE=contafin_oracle.dmp \
|
||||||
|
LOGFILE=export_contafin.log VERSION=11.2
|
||||||
|
```
|
||||||
|
|
||||||
|
Containerul 18c (port 1522) există tocmai pentru asta — 21c nu poate produce dump-uri cu
|
||||||
|
`VERSION=11.2` din cauza tipurilor TSTZ versiunea 31.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Scripturile `sys_*` — proveniență și sincronizare
|
||||||
|
|
||||||
|
Scripturile `sys_*` produc obiecte **deținute de SYS**, deci **nu călătoresc în DMP-ul de
|
||||||
|
schemă**. Pe un server nou trebuie aplicate explicit, prin `02-create-sys-objects.ps1` și
|
||||||
|
`04-create-synonyms-grants.ps1`.
|
||||||
|
|
||||||
|
### Capcana tabelei de versiuni
|
||||||
|
|
||||||
|
Tabela de versiuni a lui `PACK_MIGRARE` trăiește în **`CONTAFIN_ORACLE`** — acolo își
|
||||||
|
înregistrează și scripturile `sys_*` aplicarea (`pack_migrare.UpdateVersiune(..., 'SYS')`).
|
||||||
|
Tabela vine cu DMP-ul.
|
||||||
|
|
||||||
|
Consecința, la migrarea unui client existent: baza nouă raportează scripturile `sys_*` drept
|
||||||
|
**deja aplicate**, `ROAACTUALIZARI` le sare, dar în `SYS` nu există nimic. De aceea obiectele
|
||||||
|
și granturile SYS se pun la instalare, din scripturile de setup — nu se așteaptă de la
|
||||||
|
actualizator.
|
||||||
|
|
||||||
|
### Stare curentă a sincronizării
|
||||||
|
|
||||||
|
Sursa scripturilor `sys_*` e `D:\roa\database\SCRIPTURI_CLAR\<an>\<luna>\`.
|
||||||
|
|
||||||
|
| Script sursă | Unde e în `roa-windows-setup/` |
|
||||||
|
|---|---|
|
||||||
|
| `sys_2026_01_14_01_AUTH_PACK` | `sql/sys-objects.sql` — specificația e identică, iar lista de programe din repo e un superset (`GENERARESCRIPT.EXE`, `ROAACTUALIZARI.EXE`, `EXP.EXE`, `IMP.EXE` în plus) |
|
||||||
|
| `sys_2026_08_08_02_SYS_INFO_TABLESPACE_PURJARE` | `sql/sys-objects.sql` (INFO creată în tablespace-ul `ROA`) + `sql/scheduler-jobs.sql` (`SYS.SYSINFO_PURJARE_ZILNIC`) |
|
||||||
|
| `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]` |
|
||||||
|
|
||||||
|
Cele trei scripturi `DIAG_SPATIU_GRANT*` acordă `SELECT` direct pe 18 vederi de dicționar:
|
||||||
|
`DBA_DATA_FILES`, `DBA_FREE_SPACE`, `DBA_TEMP_FILES`, `DBA_SEGMENTS`, `DBA_TAB_STATS_HISTORY`,
|
||||||
|
`DBA_SCHEDULER_JOB_RUN_DETAILS`, `DBA_RECYCLEBIN`, `DBA_TABLESPACES`, `DBA_LOBS`,
|
||||||
|
`DBA_LOB_PARTITIONS`, `DBA_INDEXES`, `V_$INSTANCE`, `V_$DATABASE`, `V_$PARAMETER`,
|
||||||
|
`V_$TRANSACTION`, `V_$TEMP_SPACE_HEADER`, `V_$FLASH_RECOVERY_AREA_USAGE`, `V_$VERSION`.
|
||||||
|
|
||||||
|
Grantul trebuie să fie **direct**, nu prin rolul `DBA`: 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ă. Vederile absente pe o
|
||||||
|
ediție/versiune dată sunt sărite (`ORA-00942`), deci scriptul e sigur și pe baze mai vechi.
|
||||||
|
|
||||||
|
`07-verify-installation.ps1` are o secțiune dedicată care listează care dintre cele 18 lipsesc.
|
||||||
|
|
||||||
|
### Când apar scripturi `sys_*` noi
|
||||||
|
|
||||||
|
Un `sys_*` nou fie se **consolidează** în `sys-objects.sql` / `sys-grants.sql` /
|
||||||
|
`scheduler-jobs.sql` (dacă e parte din instalarea de bază), fie se pune în `sql/sys-updates/`
|
||||||
|
ca patch post-instalare. Vezi
|
||||||
|
[`sql/sys-updates/README.md`](../roa-windows-setup/sql/sys-updates/README.md).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Mediu de test
|
||||||
|
|
||||||
|
Validarea se face pe **VM 302 (`oracle-test-302`, 10.0.20.130)** — vezi
|
||||||
|
[`../../vm302-oracle-test/README.md`](../../vm302-oracle-test/README.md).
|
||||||
|
|
||||||
|
| Ediție | Stare |
|
||||||
|
|---|---|
|
||||||
|
| 21c XE (CDB/PDB) | OK — `RunAll.cmd` rulează complet |
|
||||||
|
| 21c SE (non-CDB) | **NETESTAT** — în producție au apărut erori, vezi [`issues-se-prod.md`](../../vm302-oracle-test/docs/issues-se-prod.md) |
|
||||||
|
|
||||||
|
VM 302 stă oprit; se pornește cu `ssh root@10.0.20.201 "qm start 302"`.
|
||||||
|
Ciclul de re-testare: `99-uninstall-roa.ps1 -Force` → `RunAll.cmd` → `07-verify-installation.ps1`.
|
||||||
|
|
||||||
|
Scripturile din `migration/` **nu** au un mediu de test dedicat — se validează direct pe
|
||||||
|
LXC 108.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. De verificat înainte de a porni o migrare la client
|
||||||
|
|
||||||
|
- **Plafonul XE.** 21c XE limitează datele de utilizator la **12 GB** (11.2 XE avea 11 GB),
|
||||||
|
RAM la 2 GB și 2 thread-uri CPU. Se măsoară pe sursă înainte:
|
||||||
|
```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');
|
||||||
|
```
|
||||||
|
Peste plafon, singura opțiune e Standard Edition — care e **netestată** (vezi §6).
|
||||||
|
- **CDB/PDB.** Pe XE 21c aplicațiile se conectează la **`XEPDB1`**, niciodată la `XE` (CDB root).
|
||||||
|
- **Clienți vechi.** `sqlnet.ora` + resetarea parolelor, altfel Instant Client 10/11 nu se conectează.
|
||||||
|
- **Versiunea sursei.** `expdp` (Data Pump) și `exp` (clasic) produc formate incompatibile.
|
||||||
@@ -1,5 +1,19 @@
|
|||||||
# 🚀 SCRIPTURI AUTOMATIZARE MIGRARE ORACLE 10g → 21c XE
|
# 🚀 SCRIPTURI AUTOMATIZARE MIGRARE ORACLE 10g → 21c XE
|
||||||
|
|
||||||
|
> ## ⚠️ Nu acesta e directorul pentru un client pe Windows
|
||||||
|
>
|
||||||
|
> Scripturile de aici țintesc **Oracle 21c XE în Docker pe LXC 108** (sau alt Linux).
|
||||||
|
> Ramura `.bat` creează un PDB `ROA` cu parola `OraclePass123`, generează un set minimal
|
||||||
|
> de sinonime și **nu** configurează `SERVER_INFO`, directoarele `ROAUPDATE`, joburile de
|
||||||
|
> actualizare, ACL-ul de rețea sau `sqlnet.ora` de compatibilitate pentru Instant Client
|
||||||
|
> 10/11. În plus, `sys_objects.sql` de aici creează `AUTH_DETALII`, `AUTH_SERII` și `INFO`
|
||||||
|
> **în `SYSTEM`** — cauza cunoscută a erorilor `ORA-01653` la actualizare.
|
||||||
|
>
|
||||||
|
> Pentru **instalare/migrare ROA pe un server Windows la client** folosește
|
||||||
|
> [`../roa-windows-setup/`](../roa-windows-setup/README.md).
|
||||||
|
> Comparația completă și arborele de decizie:
|
||||||
|
> [`../docs/instalare-si-migrare-oracle.md`](../docs/instalare-si-migrare-oracle.md).
|
||||||
|
|
||||||
**Director:** `proxmox/lxc108-oracle/migration/`
|
**Director:** `proxmox/lxc108-oracle/migration/`
|
||||||
**Data**: 1 Octombrie 2025
|
**Data**: 1 Octombrie 2025
|
||||||
**Status**: ✅ TESTAT ȘI FUNCȚIONAL
|
**Status**: ✅ TESTAT ȘI FUNCȚIONAL
|
||||||
|
|||||||
@@ -1,5 +1,10 @@
|
|||||||
# ROA Oracle Database Setup for Windows
|
# 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:**
|
> **Status testare ediții Oracle 21c:**
|
||||||
>
|
>
|
||||||
> | Ediție | Status | Mediu validat |
|
> | Ediție | Status | Mediu validat |
|
||||||
@@ -17,7 +22,7 @@ Scripts and documentation for setting up ROA Oracle Database on Windows servers:
|
|||||||
| Scenario | Description |
|
| Scenario | Description |
|
||||||
|----------|-------------|
|
|----------|-------------|
|
||||||
| **New Server** | Oracle 21c SE (non-CDB) or XE (CDB/PDB) + CONTAFIN_ORACLE.dmp |
|
| **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 |
|
| **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
|
│ ├── 01-setup-database.ps1 # Tablespace, profile, CONTAFIN_ORACLE user
|
||||||
│ ├── 02-create-sys-objects.ps1# SYS objects (AUTH_PACK, NEWSCHEMA, etc.)
|
│ ├── 02-create-sys-objects.ps1# SYS objects (AUTH_PACK, NEWSCHEMA, etc.)
|
||||||
│ ├── 03-import-contafin.ps1 # Import CONTAFIN_ORACLE schema
|
│ ├── 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
|
│ ├── 05-import-companies.ps1 # Batch import company schemas
|
||||||
│ ├── 06-add-company.ps1 # Add new company to existing server
|
│ ├── 06-add-company.ps1 # Add new company to existing server
|
||||||
│ ├── 07-verify-installation.ps1# Verify installation completeness
|
│ ├── 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 |
|
| `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 |
|
| `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 |
|
| `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 |
|
| `05-import-companies.ps1` | Batch import company schemas from DMP files | Yes |
|
||||||
| `06-add-company.ps1` | Add new company to existing server | Optional |
|
| `06-add-company.ps1` | Add new company to existing server | Optional |
|
||||||
| `07-verify-installation.ps1` | Verify installation completeness (objects, grants, synonyms) | Yes |
|
| `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"
|
.\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
|
```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
|
exp system/password@ORCL file=C:\backup\COMPANY.dmp owner=COMPANY
|
||||||
|
|
||||||
# 2. Convert with Oracle 21c imp (if needed)
|
# 2. Import
|
||||||
# Or use impdp with VERSION parameter
|
imp system/password@XEPDB1 file=C:\DMPDIR\COMPANY.dmp fromuser=COMPANY touser=COMPANY
|
||||||
|
|
||||||
# 3. Import using scripts
|
|
||||||
.\05-import-companies.ps1 -DmpFile "COMPANY.dmp"
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Î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
|
## Uninstall / Cleanup
|
||||||
|
|||||||
@@ -1,221 +1,286 @@
|
|||||||
#Requires -Version 5.1
|
#Requires -Version 5.1
|
||||||
|
|
||||||
<#
|
<#
|
||||||
.SYNOPSIS
|
.SYNOPSIS
|
||||||
Create public synonyms and grants for ROA Oracle.
|
Create public synonyms and grants for ROA Oracle.
|
||||||
|
|
||||||
.DESCRIPTION
|
.DESCRIPTION
|
||||||
Creates public synonyms for CONTAFIN_ORACLE objects and configures:
|
Creates public synonyms for CONTAFIN_ORACLE objects and configures:
|
||||||
- Public synonyms for tables, views, packages, types (via synonyms-public.sql)
|
- Public synonyms for tables, views, packages, types (via synonyms-public.sql)
|
||||||
- Public grants (SELECT, EXECUTE, REFERENCES) (via grants-public.sql)
|
- Public grants (SELECT, EXECUTE, REFERENCES) (via grants-public.sql)
|
||||||
- SESIUNE context
|
- SYS grants, SYS public synonyms, DMPDIR and data dictionary reads
|
||||||
- Network ACL for CONTAFIN_ORACLE
|
required by PACK_DIAG_SPATIU (via sys-grants.sql)
|
||||||
|
- SESIUNE context
|
||||||
.PARAMETER OracleHome
|
- Network ACL for CONTAFIN_ORACLE
|
||||||
Oracle home directory. If not specified, auto-detects.
|
|
||||||
|
.PARAMETER OracleHome
|
||||||
.PARAMETER ServiceName
|
Oracle home directory. If not specified, auto-detects.
|
||||||
Database service name. Default: XEPDB1
|
|
||||||
|
.PARAMETER ServiceName
|
||||||
.PARAMETER SystemPassword
|
Database service name. Default: XEPDB1
|
||||||
SYSTEM user password. Default: romfastsoft
|
|
||||||
|
.PARAMETER SystemPassword
|
||||||
.PARAMETER SqlScriptsDir
|
SYSTEM user password. Default: romfastsoft
|
||||||
Directory containing SQL scripts. Default: ..\sql
|
|
||||||
|
.PARAMETER SqlScriptsDir
|
||||||
.EXAMPLE
|
Directory containing SQL scripts. Default: ..\sql
|
||||||
.\04-create-synonyms-grants.ps1
|
|
||||||
|
.EXAMPLE
|
||||||
.EXAMPLE
|
.\04-create-synonyms-grants.ps1
|
||||||
.\04-create-synonyms-grants.ps1 -ServiceName "ROA" -SystemPassword "mypassword"
|
|
||||||
|
.EXAMPLE
|
||||||
.NOTES
|
.\04-create-synonyms-grants.ps1 -ServiceName "ROA" -SystemPassword "mypassword"
|
||||||
File Name : 04-create-synonyms-grants.ps1
|
|
||||||
Prerequisite : Run 03-import-contafin.ps1 first
|
.NOTES
|
||||||
Copyright 2024 : ROMFAST
|
File Name : 04-create-synonyms-grants.ps1
|
||||||
#>
|
Prerequisite : Run 03-import-contafin.ps1 first
|
||||||
|
Copyright 2024 : ROMFAST
|
||||||
[CmdletBinding()]
|
#>
|
||||||
param(
|
|
||||||
[Parameter(Mandatory = $false)]
|
[CmdletBinding()]
|
||||||
[string]$OracleHome,
|
param(
|
||||||
|
[Parameter(Mandatory = $false)]
|
||||||
[Parameter(Mandatory = $false)]
|
[string]$OracleHome,
|
||||||
[string]$ServiceName = "XEPDB1",
|
|
||||||
|
[Parameter(Mandatory = $false)]
|
||||||
[Parameter(Mandatory = $false)]
|
[string]$ServiceName = "XEPDB1",
|
||||||
[string]$SystemPassword = "romfastsoft",
|
|
||||||
|
[Parameter(Mandatory = $false)]
|
||||||
[Parameter(Mandatory = $false)]
|
[string]$SystemPassword = "romfastsoft",
|
||||||
[string]$SqlScriptsDir
|
|
||||||
)
|
[Parameter(Mandatory = $false)]
|
||||||
|
[string]$SqlScriptsDir
|
||||||
$ErrorActionPreference = 'Stop'
|
)
|
||||||
|
|
||||||
# Source library functions
|
$ErrorActionPreference = 'Stop'
|
||||||
. "$PSScriptRoot\lib\logging-functions.ps1"
|
|
||||||
. "$PSScriptRoot\lib\oracle-functions.ps1"
|
# Source library functions
|
||||||
|
. "$PSScriptRoot\lib\logging-functions.ps1"
|
||||||
# Initialize logging
|
. "$PSScriptRoot\lib\oracle-functions.ps1"
|
||||||
$logPath = Join-Path $PSScriptRoot "..\logs\04-create-synonyms-grants_$(Get-Date -Format 'yyyyMMdd_HHmmss').log"
|
|
||||||
Initialize-LogFile -LogPath $logPath -ScriptName "04-create-synonyms-grants.ps1"
|
# Initialize logging
|
||||||
|
$logPath = Join-Path $PSScriptRoot "..\logs\04-create-synonyms-grants_$(Get-Date -Format 'yyyyMMdd_HHmmss').log"
|
||||||
try {
|
Initialize-LogFile -LogPath $logPath -ScriptName "04-create-synonyms-grants.ps1"
|
||||||
Write-LogSection "Creating Public Synonyms and Grants"
|
|
||||||
|
try {
|
||||||
# Validate Oracle installation
|
Write-LogSection "Creating Public Synonyms and Grants"
|
||||||
$oraHome = Get-OracleHome -OracleHome $OracleHome
|
|
||||||
Write-LogSuccess "Oracle Home: $oraHome"
|
# Validate Oracle installation
|
||||||
|
$oraHome = Get-OracleHome -OracleHome $OracleHome
|
||||||
# Determine SQL scripts directory
|
Write-LogSuccess "Oracle Home: $oraHome"
|
||||||
if (-not $SqlScriptsDir) {
|
|
||||||
$SqlScriptsDir = Join-Path $PSScriptRoot "..\sql"
|
# Determine SQL scripts directory
|
||||||
}
|
if (-not $SqlScriptsDir) {
|
||||||
|
$SqlScriptsDir = Join-Path $PSScriptRoot "..\sql"
|
||||||
# Verify SQL files exist
|
}
|
||||||
$synonymsScript = Join-Path $SqlScriptsDir "synonyms-public.sql"
|
|
||||||
$grantsScript = Join-Path $SqlScriptsDir "grants-public.sql"
|
# Verify SQL files exist
|
||||||
|
$synonymsScript = Join-Path $SqlScriptsDir "synonyms-public.sql"
|
||||||
if (-not (Test-Path -Path $synonymsScript)) {
|
$grantsScript = Join-Path $SqlScriptsDir "grants-public.sql"
|
||||||
throw "synonyms-public.sql not found at $synonymsScript"
|
$sysGrantsScript = Join-Path $SqlScriptsDir "sys-grants.sql"
|
||||||
}
|
|
||||||
if (-not (Test-Path -Path $grantsScript)) {
|
if (-not (Test-Path -Path $synonymsScript)) {
|
||||||
throw "grants-public.sql not found at $grantsScript"
|
throw "synonyms-public.sql not found at $synonymsScript"
|
||||||
}
|
}
|
||||||
|
if (-not (Test-Path -Path $grantsScript)) {
|
||||||
Write-Log "SQL scripts directory: $SqlScriptsDir"
|
throw "grants-public.sql not found at $grantsScript"
|
||||||
|
}
|
||||||
# Test connection
|
if (-not (Test-Path -Path $sysGrantsScript)) {
|
||||||
Write-Log "Testing database connection..."
|
throw "sys-grants.sql not found at $sysGrantsScript"
|
||||||
if (-not (Test-OracleConnection -OracleHome $oraHome -ServiceName $ServiceName `
|
}
|
||||||
-Password $SystemPassword)) {
|
|
||||||
throw "Cannot connect to database. Please verify ServiceName and SystemPassword."
|
Write-Log "SQL scripts directory: $SqlScriptsDir"
|
||||||
}
|
|
||||||
Write-LogSuccess "Database connection successful"
|
# Test connection
|
||||||
|
Write-Log "Testing database connection..."
|
||||||
# Verify CONTAFIN_ORACLE exists and has objects
|
if (-not (Test-OracleConnection -OracleHome $oraHome -ServiceName $ServiceName `
|
||||||
Write-Log "Verifying CONTAFIN_ORACLE schema..."
|
-Password $SystemPassword)) {
|
||||||
$counts = Get-SchemaObjectCount -OracleHome $oraHome -ServiceName $ServiceName `
|
throw "Cannot connect to database. Please verify ServiceName and SystemPassword."
|
||||||
-Password $SystemPassword -SchemaName "CONTAFIN_ORACLE"
|
}
|
||||||
|
Write-LogSuccess "Database connection successful"
|
||||||
$totalObjects = if ($counts['TOTAL']) { $counts['TOTAL'] } else { 0 }
|
|
||||||
if ($totalObjects -eq 0) {
|
# Verify CONTAFIN_ORACLE exists and has objects
|
||||||
throw "CONTAFIN_ORACLE schema has no objects. Run 03-import-contafin.ps1 first."
|
Write-Log "Verifying CONTAFIN_ORACLE schema..."
|
||||||
}
|
$counts = Get-SchemaObjectCount -OracleHome $oraHome -ServiceName $ServiceName `
|
||||||
Write-LogSuccess "CONTAFIN_ORACLE has $totalObjects objects"
|
-Password $SystemPassword -SchemaName "CONTAFIN_ORACLE"
|
||||||
|
|
||||||
# =========================================================================
|
$totalObjects = if ($counts['TOTAL']) { $counts['TOTAL'] } else { 0 }
|
||||||
# STEP 1: Create Public Synonyms (using synonyms-public.sql)
|
if ($totalObjects -eq 0) {
|
||||||
# =========================================================================
|
throw "CONTAFIN_ORACLE schema has no objects. Run 03-import-contafin.ps1 first."
|
||||||
Write-LogSection "Creating Public Synonyms"
|
}
|
||||||
Write-Log "Running synonyms-public.sql..."
|
Write-LogSuccess "CONTAFIN_ORACLE has $totalObjects objects"
|
||||||
|
|
||||||
$result = Invoke-SqlPlus -OracleHome $oraHome -ServiceName $ServiceName `
|
# =========================================================================
|
||||||
-Username "SYS" -Password $SystemPassword -SqlFile $synonymsScript -AsSysdba
|
# STEP 1: Create Public Synonyms (using synonyms-public.sql)
|
||||||
|
# =========================================================================
|
||||||
if ($result -match "synonym_count|SYNONYM_NAME") {
|
Write-LogSection "Creating Public Synonyms"
|
||||||
Write-LogSuccess "Public synonyms created successfully"
|
Write-Log "Running synonyms-public.sql..."
|
||||||
}
|
|
||||||
else {
|
$result = Invoke-SqlPlus -OracleHome $oraHome -ServiceName $ServiceName `
|
||||||
Write-LogWarning "Could not verify synonym creation"
|
-Username "SYS" -Password $SystemPassword -SqlFile $synonymsScript -AsSysdba
|
||||||
Write-LogDebug $result
|
|
||||||
}
|
if ($result -match "synonym_count|SYNONYM_NAME") {
|
||||||
|
Write-LogSuccess "Public synonyms created successfully"
|
||||||
# =========================================================================
|
}
|
||||||
# STEP 2: Create Grants and ACL (using grants-public.sql)
|
else {
|
||||||
# =========================================================================
|
Write-LogWarning "Could not verify synonym creation"
|
||||||
Write-LogSection "Creating Grants and Network ACL"
|
Write-LogDebug $result
|
||||||
Write-Log "Running grants-public.sql..."
|
}
|
||||||
|
|
||||||
$grantsResult = Invoke-SqlPlus -OracleHome $oraHome -ServiceName $ServiceName `
|
# =========================================================================
|
||||||
-Username "SYS" -Password $SystemPassword -SqlFile $grantsScript -AsSysdba
|
# STEP 2: Create Grants and ACL (using grants-public.sql)
|
||||||
|
# =========================================================================
|
||||||
if ($grantsResult -match "Grant|ACL|Grants Complete") {
|
Write-LogSection "Creating Grants and Network ACL"
|
||||||
Write-LogSuccess "Grants and ACL configured successfully"
|
Write-Log "Running grants-public.sql..."
|
||||||
}
|
|
||||||
else {
|
$grantsResult = Invoke-SqlPlus -OracleHome $oraHome -ServiceName $ServiceName `
|
||||||
Write-LogWarning "Could not verify grants configuration"
|
-Username "SYS" -Password $SystemPassword -SqlFile $grantsScript -AsSysdba
|
||||||
Write-LogDebug $grantsResult
|
|
||||||
}
|
if ($grantsResult -match "Grant|ACL|Grants Complete") {
|
||||||
|
Write-LogSuccess "Grants and ACL configured successfully"
|
||||||
# =========================================================================
|
}
|
||||||
# STEP 3: Verify Results
|
else {
|
||||||
# =========================================================================
|
Write-LogWarning "Could not verify grants configuration"
|
||||||
Write-LogSection "Verifying Configuration"
|
Write-LogDebug $grantsResult
|
||||||
|
}
|
||||||
# Count synonyms
|
|
||||||
$countSql = @"
|
# =========================================================================
|
||||||
SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF
|
# STEP 3: SYS Grants, SYS Synonyms and Dictionary Reads (sys-grants.sql)
|
||||||
SELECT 'SYNONYM_COUNT:' || COUNT(*)
|
# =========================================================================
|
||||||
FROM dba_synonyms
|
# Ruleaza dupa import: tabela de versiuni a lui PACK_MIGRARE traieste in
|
||||||
WHERE owner = 'PUBLIC'
|
# CONTAFIN_ORACLE si vine cu DMP-ul, marcand scripturile sys_* drept aplicate.
|
||||||
AND table_owner = 'CONTAFIN_ORACLE';
|
# ROAACTUALIZARI nu le mai ruleaza pe baza noua, deci granturile catre SYS
|
||||||
EXIT;
|
# trebuie puse aici, la instalare.
|
||||||
"@
|
Write-LogSection "Creating SYS Grants and Dictionary Reads"
|
||||||
|
Write-Log "Running sys-grants.sql..."
|
||||||
$countResult = Invoke-SqlPlus -OracleHome $oraHome -ServiceName $ServiceName `
|
|
||||||
-Username "SYSTEM" -Password $SystemPassword -SqlCommand $countSql -Silent
|
$sysGrantsResult = Invoke-SqlPlus -OracleHome $oraHome -ServiceName $ServiceName `
|
||||||
|
-Username "SYS" -Password $SystemPassword -SqlFile $sysGrantsScript -AsSysdba
|
||||||
$synonymCount = 0
|
|
||||||
if ($countResult -match "SYNONYM_COUNT:(\d+)") {
|
if ($sysGrantsResult -match "SYS Grants and Synonyms Installation Complete") {
|
||||||
$synonymCount = [int]$Matches[1]
|
Write-LogSuccess "SYS grants, synonyms and dictionary reads configured"
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
Write-Log "Public synonyms for CONTAFIN_ORACLE: $synonymCount"
|
Write-LogWarning "Could not verify sys-grants.sql execution"
|
||||||
|
Write-LogDebug $sysGrantsResult
|
||||||
# Verify SESIUNE context exists (created by grants-public.sql or synonyms-public.sql)
|
}
|
||||||
$contextSql = @"
|
|
||||||
SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF
|
# =========================================================================
|
||||||
SELECT 'CONTEXT_EXISTS:' || COUNT(*)
|
# STEP 4: Verify Results
|
||||||
FROM dba_context
|
# =========================================================================
|
||||||
WHERE namespace = 'SESIUNE';
|
Write-LogSection "Verifying Configuration"
|
||||||
EXIT;
|
|
||||||
"@
|
# Count synonyms
|
||||||
|
$countSql = @"
|
||||||
$contextResult = Invoke-SqlPlus -OracleHome $oraHome -ServiceName $ServiceName `
|
SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF
|
||||||
-Username "SYSTEM" -Password $SystemPassword -SqlCommand $contextSql -Silent
|
SELECT 'SYNONYM_COUNT:' || COUNT(*)
|
||||||
|
FROM dba_synonyms
|
||||||
$contextExists = $false
|
WHERE owner = 'PUBLIC'
|
||||||
if ($contextResult -match "CONTEXT_EXISTS:(\d+)") {
|
AND table_owner = 'CONTAFIN_ORACLE';
|
||||||
$contextExists = [int]$Matches[1] -gt 0
|
EXIT;
|
||||||
}
|
"@
|
||||||
|
|
||||||
if ($contextExists) {
|
$countResult = Invoke-SqlPlus -OracleHome $oraHome -ServiceName $ServiceName `
|
||||||
Write-LogSuccess "SESIUNE context exists"
|
-Username "SYSTEM" -Password $SystemPassword -SqlCommand $countSql -Silent
|
||||||
}
|
|
||||||
else {
|
$synonymCount = 0
|
||||||
Write-LogWarning "SESIUNE context not found - creating..."
|
if ($countResult -match "SYNONYM_COUNT:(\d+)") {
|
||||||
$createContextSql = @"
|
$synonymCount = [int]$Matches[1]
|
||||||
CREATE CONTEXT SESIUNE USING CONTAFIN_ORACLE.SET_VARIABILE;
|
}
|
||||||
EXIT;
|
|
||||||
"@
|
Write-Log "Public synonyms for CONTAFIN_ORACLE: $synonymCount"
|
||||||
Invoke-SqlPlus -OracleHome $oraHome -ServiceName $ServiceName `
|
|
||||||
-Username "SYS" -Password $SystemPassword -SqlCommand $createContextSql -AsSysdba
|
# Verify SESIUNE context exists (created by grants-public.sql or synonyms-public.sql)
|
||||||
}
|
$contextSql = @"
|
||||||
|
SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF
|
||||||
# =========================================================================
|
SELECT 'CONTEXT_EXISTS:' || COUNT(*)
|
||||||
# Summary
|
FROM dba_context
|
||||||
# =========================================================================
|
WHERE namespace = 'SESIUNE';
|
||||||
Write-LogSection "Setup Complete"
|
EXIT;
|
||||||
Write-LogSuccess "Public synonyms and grants configured!"
|
"@
|
||||||
Write-Log ""
|
|
||||||
Write-Log "Summary:"
|
$contextResult = Invoke-SqlPlus -OracleHome $oraHome -ServiceName $ServiceName `
|
||||||
Write-Log " SQL scripts used:"
|
-Username "SYSTEM" -Password $SystemPassword -SqlCommand $contextSql -Silent
|
||||||
Write-Log " - synonyms-public.sql (all public synonyms)"
|
|
||||||
Write-Log " - grants-public.sql (all grants and ACL)"
|
$contextExists = $false
|
||||||
Write-Log " Public synonyms created: $synonymCount"
|
if ($contextResult -match "CONTEXT_EXISTS:(\d+)") {
|
||||||
Write-Log " SESIUNE context: $(if ($contextExists) { 'Verified' } else { 'Created' })"
|
$contextExists = [int]$Matches[1] -gt 0
|
||||||
Write-Log " Network ACL: Configured (roaupdate.xml)"
|
}
|
||||||
Write-Log ""
|
|
||||||
Write-Log "Next steps:"
|
if ($contextExists) {
|
||||||
Write-Log " 1. Run 05-import-companies.ps1 to import company schemas"
|
Write-LogSuccess "SESIUNE context exists"
|
||||||
|
}
|
||||||
Close-LogFile -Success $true
|
else {
|
||||||
exit 0
|
Write-LogWarning "SESIUNE context not found - creating..."
|
||||||
}
|
$createContextSql = @"
|
||||||
catch {
|
CREATE CONTEXT SESIUNE USING CONTAFIN_ORACLE.SET_VARIABILE;
|
||||||
Write-LogError "Setup failed: $_"
|
EXIT;
|
||||||
Write-LogError $_.ScriptStackTrace
|
"@
|
||||||
Close-LogFile -Success $false
|
Invoke-SqlPlus -OracleHome $oraHome -ServiceName $ServiceName `
|
||||||
exit 1
|
-Username "SYS" -Password $SystemPassword -SqlCommand $createContextSql -AsSysdba
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Granturile de dictionar cerute de PACK_DIAG_SPATIU (sys-grants.sql [5/5])
|
||||||
|
$dictSql = @"
|
||||||
|
SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF
|
||||||
|
SELECT 'DICT_GRANTS:' || COUNT(*)
|
||||||
|
FROM dba_tab_privs
|
||||||
|
WHERE grantee = 'CONTAFIN_ORACLE'
|
||||||
|
AND grantor = 'SYS'
|
||||||
|
AND privilege = 'SELECT'
|
||||||
|
AND table_name IN (
|
||||||
|
'DBA_DATA_FILES', 'DBA_FREE_SPACE', 'DBA_TEMP_FILES', 'DBA_SEGMENTS',
|
||||||
|
'DBA_TAB_STATS_HISTORY', 'DBA_SCHEDULER_JOB_RUN_DETAILS', 'DBA_RECYCLEBIN',
|
||||||
|
'V_`$INSTANCE', 'V_`$DATABASE', 'V_`$PARAMETER', 'V_`$TRANSACTION',
|
||||||
|
'V_`$TEMP_SPACE_HEADER', 'V_`$FLASH_RECOVERY_AREA_USAGE',
|
||||||
|
'DBA_TABLESPACES', 'V_`$VERSION',
|
||||||
|
'DBA_LOBS', 'DBA_LOB_PARTITIONS', 'DBA_INDEXES'
|
||||||
|
);
|
||||||
|
EXIT;
|
||||||
|
"@
|
||||||
|
|
||||||
|
$dictResult = Invoke-SqlPlus -OracleHome $oraHome -ServiceName $ServiceName `
|
||||||
|
-Username "SYSTEM" -Password $SystemPassword -SqlCommand $dictSql -Silent
|
||||||
|
|
||||||
|
$dictGrants = 0
|
||||||
|
if ($dictResult -match "DICT_GRANTS:(\d+)") {
|
||||||
|
$dictGrants = [int]$Matches[1]
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($dictGrants -ge 15) {
|
||||||
|
Write-LogSuccess "Dictionary grants for PACK_DIAG_SPATIU: $dictGrants / 18"
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-LogWarning "Dictionary grants for PACK_DIAG_SPATIU: $dictGrants / 18 (asteptat minim 15)"
|
||||||
|
Write-LogWarning "Fara ele PACK_DIAG_SPATIU ramane INVALID si DIAGSPATIU_ZILNIC nu ruleaza."
|
||||||
|
Write-LogWarning "Verifica sectiunea [5/5] din sql\sys-grants.sql"
|
||||||
|
}
|
||||||
|
|
||||||
|
# =========================================================================
|
||||||
|
# Summary
|
||||||
|
# =========================================================================
|
||||||
|
Write-LogSection "Setup Complete"
|
||||||
|
Write-LogSuccess "Public synonyms and grants configured!"
|
||||||
|
Write-Log ""
|
||||||
|
Write-Log "Summary:"
|
||||||
|
Write-Log " SQL scripts used:"
|
||||||
|
Write-Log " - synonyms-public.sql (all public synonyms)"
|
||||||
|
Write-Log " - grants-public.sql (all grants and ACL)"
|
||||||
|
Write-Log " - sys-grants.sql (SYS grants, SYS synonyms, DMPDIR, dictionary reads)"
|
||||||
|
Write-Log " Public synonyms created: $synonymCount"
|
||||||
|
Write-Log " SESIUNE context: $(if ($contextExists) { 'Verified' } else { 'Created' })"
|
||||||
|
Write-Log " Network ACL: Configured (roaupdate.xml)"
|
||||||
|
Write-Log " Dictionary grants: $dictGrants / 18 (PACK_DIAG_SPATIU)"
|
||||||
|
Write-Log ""
|
||||||
|
Write-Log "Next steps:"
|
||||||
|
Write-Log " 1. Run 05-import-companies.ps1 to import company schemas"
|
||||||
|
|
||||||
|
Close-LogFile -Success $true
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Write-LogError "Setup failed: $_"
|
||||||
|
Write-LogError $_.ScriptStackTrace
|
||||||
|
Close-LogFile -Success $false
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -24,7 +24,7 @@ PROMPT
|
|||||||
-- SECTION 1: GRANTS TO CONTAFIN_ORACLE
|
-- SECTION 1: GRANTS TO CONTAFIN_ORACLE
|
||||||
-- ============================================================================
|
-- ============================================================================
|
||||||
PROMPT
|
PROMPT
|
||||||
PROMPT [1/4] Granting privileges to CONTAFIN_ORACLE...
|
PROMPT [1/5] Granting privileges to CONTAFIN_ORACLE...
|
||||||
|
|
||||||
-- Execute on SYS packages
|
-- Execute on SYS packages
|
||||||
GRANT EXECUTE ON SYS.AUTH_PACK TO CONTAFIN_ORACLE;
|
GRANT EXECUTE ON SYS.AUTH_PACK TO CONTAFIN_ORACLE;
|
||||||
@@ -51,7 +51,7 @@ PROMPT Grants to CONTAFIN_ORACLE complete.
|
|||||||
-- SECTION 2: PUBLIC GRANTS
|
-- SECTION 2: PUBLIC GRANTS
|
||||||
-- ============================================================================
|
-- ============================================================================
|
||||||
PROMPT
|
PROMPT
|
||||||
PROMPT [2/4] Granting public privileges...
|
PROMPT [2/5] Granting public privileges...
|
||||||
|
|
||||||
-- UTL packages for public use
|
-- UTL packages for public use
|
||||||
GRANT EXECUTE ON SYS.UTL_FILE TO PUBLIC;
|
GRANT EXECUTE ON SYS.UTL_FILE TO PUBLIC;
|
||||||
@@ -62,7 +62,7 @@ PROMPT Public grants complete.
|
|||||||
-- SECTION 3: SYS PUBLIC SYNONYMS
|
-- SECTION 3: SYS PUBLIC SYNONYMS
|
||||||
-- ============================================================================
|
-- ============================================================================
|
||||||
PROMPT
|
PROMPT
|
||||||
PROMPT [3/4] Creating SYS public synonyms...
|
PROMPT [3/5] Creating SYS public synonyms...
|
||||||
|
|
||||||
-- Synonyms for SYS procedures
|
-- Synonyms for SYS procedures
|
||||||
BEGIN EXECUTE IMMEDIATE 'DROP PUBLIC SYNONYM SYN_NEWSCHEMA'; EXCEPTION WHEN OTHERS THEN NULL; END;
|
BEGIN EXECUTE IMMEDIATE 'DROP PUBLIC SYNONYM SYN_NEWSCHEMA'; EXCEPTION WHEN OTHERS THEN NULL; END;
|
||||||
@@ -91,7 +91,7 @@ PROMPT SYS public synonyms complete.
|
|||||||
-- SECTION 4: DIRECTORY DMPDIR
|
-- SECTION 4: DIRECTORY DMPDIR
|
||||||
-- ============================================================================
|
-- ============================================================================
|
||||||
PROMPT
|
PROMPT
|
||||||
PROMPT [4/4] Creating DMPDIR directory...
|
PROMPT [4/5] Creating DMPDIR directory...
|
||||||
|
|
||||||
BEGIN
|
BEGIN
|
||||||
EXECUTE IMMEDIATE 'CREATE OR REPLACE DIRECTORY DMPDIR AS ''C:\DMPDIR''';
|
EXECUTE IMMEDIATE 'CREATE OR REPLACE DIRECTORY DMPDIR AS ''C:\DMPDIR''';
|
||||||
@@ -104,6 +104,72 @@ END;
|
|||||||
|
|
||||||
GRANT READ, WRITE ON DIRECTORY DMPDIR TO PUBLIC;
|
GRANT READ, WRITE ON DIRECTORY DMPDIR TO PUBLIC;
|
||||||
|
|
||||||
|
-- ============================================================================
|
||||||
|
-- SECTION 5: GRANTURI DE DICTIONAR PENTRU PACK_DIAG_SPATIU
|
||||||
|
-- ============================================================================
|
||||||
|
-- Consolideaza scripturile de livrare din repo-ul COMUN:
|
||||||
|
-- sys_2026_08_03_05_DIAG_SPATIU_GRANT - diagnosticul de baza
|
||||||
|
-- sys_2026_08_03_07_DIAG_SPATIU_GRANT2 - sectiunea XE (plafon editie)
|
||||||
|
-- sys_2026_08_06_07_DIAG_SPATIU_GRANT3 - provenienta segmentelor LOB/index
|
||||||
|
--
|
||||||
|
-- CONTAFIN_ORACLE.PACK_DIAG_SPATIU are drepturi de definitor, iar rolul DBA NU se
|
||||||
|
-- aplica in pachetele cu drepturi de definitor. Referintele statice la dba_*/v$*
|
||||||
|
-- au nevoie de grant DIRECT catre user, altfel pachetul ramane INVALID si jobul
|
||||||
|
-- DIAGSPATIU_ZILNIC nu ruleaza.
|
||||||
|
--
|
||||||
|
-- ATENTIE la migrarea unui client existent: tabela de versiuni a lui PACK_MIGRARE
|
||||||
|
-- traieste in CONTAFIN_ORACLE si vine cu DMP-ul. Baza noua va raporta scripturile
|
||||||
|
-- sys_* de mai sus drept "deja aplicate", iar ROAACTUALIZARI le va sari - desi in
|
||||||
|
-- SYS nu exista nimic. De aceea granturile se aplica de aici, la instalare, nu
|
||||||
|
-- prin actualizator.
|
||||||
|
--
|
||||||
|
-- Vederile absente pe versiunea/editia curenta sunt ignorate (ORA-00942).
|
||||||
|
-- ============================================================================
|
||||||
|
PROMPT
|
||||||
|
PROMPT [5/5] Granting data dictionary reads to CONTAFIN_ORACLE (PACK_DIAG_SPATIU)...
|
||||||
|
|
||||||
|
DECLARE
|
||||||
|
TYPE t_lista IS TABLE OF VARCHAR2(30);
|
||||||
|
laObiecte t_lista := t_lista(
|
||||||
|
-- sys_2026_08_03_05_DIAG_SPATIU_GRANT
|
||||||
|
'DBA_DATA_FILES', 'DBA_FREE_SPACE', 'DBA_TEMP_FILES',
|
||||||
|
'DBA_SEGMENTS', 'DBA_TAB_STATS_HISTORY',
|
||||||
|
'DBA_SCHEDULER_JOB_RUN_DETAILS', 'DBA_RECYCLEBIN',
|
||||||
|
'V_$INSTANCE', 'V_$DATABASE', 'V_$PARAMETER', 'V_$TRANSACTION',
|
||||||
|
'V_$TEMP_SPACE_HEADER', 'V_$FLASH_RECOVERY_AREA_USAGE',
|
||||||
|
-- sys_2026_08_03_07_DIAG_SPATIU_GRANT2
|
||||||
|
'DBA_TABLESPACES', 'V_$VERSION',
|
||||||
|
-- sys_2026_08_06_07_DIAG_SPATIU_GRANT3
|
||||||
|
'DBA_LOBS', 'DBA_LOB_PARTITIONS', 'DBA_INDEXES'
|
||||||
|
);
|
||||||
|
lnAcordate PLS_INTEGER := 0;
|
||||||
|
lnSarite PLS_INTEGER := 0;
|
||||||
|
BEGIN
|
||||||
|
FOR i IN 1 .. laObiecte.COUNT LOOP
|
||||||
|
BEGIN
|
||||||
|
EXECUTE IMMEDIATE 'GRANT SELECT ON SYS.' || laObiecte(i) ||
|
||||||
|
' TO CONTAFIN_ORACLE';
|
||||||
|
lnAcordate := lnAcordate + 1;
|
||||||
|
EXCEPTION
|
||||||
|
WHEN OTHERS THEN
|
||||||
|
IF SQLCODE = -942 THEN
|
||||||
|
lnSarite := lnSarite + 1;
|
||||||
|
DBMS_OUTPUT.PUT_LINE(' SKIP (absent pe aceasta versiune): ' ||
|
||||||
|
laObiecte(i));
|
||||||
|
ELSE
|
||||||
|
RAISE;
|
||||||
|
END IF;
|
||||||
|
END;
|
||||||
|
END LOOP;
|
||||||
|
|
||||||
|
DBMS_OUTPUT.PUT_LINE(' Granturi de dictionar acordate: ' || lnAcordate ||
|
||||||
|
' / ' || laObiecte.COUNT ||
|
||||||
|
' (sarite: ' || lnSarite || ')');
|
||||||
|
END;
|
||||||
|
/
|
||||||
|
|
||||||
|
PROMPT Dictionary grants complete.
|
||||||
|
|
||||||
PROMPT
|
PROMPT
|
||||||
PROMPT ============================================================
|
PROMPT ============================================================
|
||||||
PROMPT SYS Grants and Synonyms Installation Complete
|
PROMPT SYS Grants and Synonyms Installation Complete
|
||||||
|
|||||||
@@ -10,10 +10,21 @@ scripts (`sys_2006_*.sql` through `sys_2026_*.sql`) here.
|
|||||||
|
|
||||||
**Initial setup order:**
|
**Initial setup order:**
|
||||||
1. `sys-objects.sql` - Creates all SYS objects (tables, packages, procedures, views)
|
1. `sys-objects.sql` - Creates all SYS objects (tables, packages, procedures, views)
|
||||||
|
— rulat de `scripts/02-create-sys-objects.ps1`
|
||||||
2. Import `CONTAFIN_ORACLE.dmp` - Application schema
|
2. Import `CONTAFIN_ORACLE.dmp` - Application schema
|
||||||
3. `sys-grants.sql` - Grants and public synonyms
|
— rulat de `scripts/03-import-contafin.ps1`
|
||||||
|
3. `sys-grants.sql` - Grants, public synonyms, DMPDIR și granturile de dicționar cerute de
|
||||||
|
`PACK_DIAG_SPATIU` (secțiunea `[5/5]`, consolidând `sys_2026_08_03_05`,
|
||||||
|
`sys_2026_08_03_07` și `sys_2026_08_06_07`)
|
||||||
|
— rulat de `scripts/04-create-synonyms-grants.ps1`, după import
|
||||||
4. `sys-updates/*.sql` - (Optional) Post-install patches
|
4. `sys-updates/*.sql` - (Optional) Post-install patches
|
||||||
|
|
||||||
|
> **Atenție la migrări.** Tabela de versiuni a lui `PACK_MIGRARE` trăiește în
|
||||||
|
> `CONTAFIN_ORACLE` și vine cu DMP-ul, deci pe baza nouă `ROAACTUALIZARI` va considera
|
||||||
|
> scripturile `sys_*` deja aplicate și le va sări — deși în `SYS` nu există nimic. Orice
|
||||||
|
> `sys_*` necesar unei instalări curate trebuie consolidat în pașii 1-3 de mai sus, nu
|
||||||
|
> lăsat pe seama actualizatorului.
|
||||||
|
|
||||||
## When to Use This Folder
|
## When to Use This Folder
|
||||||
|
|
||||||
Place scripts here when you need to:
|
Place scripts here when you need to:
|
||||||
|
|||||||
@@ -5,6 +5,11 @@ Scripturile efective trăiesc în `proxmox/lxc108-oracle/roa-windows-setup/`
|
|||||||
(generale, nu legate de VM 302). Acest director documentează **mediul de test**
|
(generale, nu legate de VM 302). Acest director documentează **mediul de test**
|
||||||
și planul de validare.
|
și planul de validare.
|
||||||
|
|
||||||
|
> VM 302 testează **doar** `roa-windows-setup/`. Scripturile din
|
||||||
|
> `proxmox/lxc108-oracle/migration/` nu au mediu de test dedicat — se validează direct pe
|
||||||
|
> LXC 108. Ce face fiecare director:
|
||||||
|
> [`../lxc108-oracle/docs/instalare-si-migrare-oracle.md`](../lxc108-oracle/docs/instalare-si-migrare-oracle.md).
|
||||||
|
|
||||||
## Status testare
|
## Status testare
|
||||||
|
|
||||||
| Ediție Oracle | Status | Note |
|
| Ediție Oracle | Status | Note |
|
||||||
|
|||||||
@@ -65,18 +65,20 @@ Pași pe VM:
|
|||||||
ssh root@10.0.20.201 "qm snapshot 302 se-validated --description 'SE installation validated'"
|
ssh root@10.0.20.201 "qm snapshot 302 se-validated --description 'SE installation validated'"
|
||||||
```
|
```
|
||||||
|
|
||||||
### Variantă B — clonă VM 303 dedicată SE
|
### Variantă B — clonă dedicată SE (VM 304)
|
||||||
|
|
||||||
|
> **VM 303 este ocupat** de `Win11-Adina`. Prima clonă liberă e **304**.
|
||||||
|
|
||||||
Recomandată dacă vrem să păstrăm ambele medii live pentru regresie.
|
Recomandată dacă vrem să păstrăm ambele medii live pentru regresie.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Clone VM 302 → 303 (template state, înainte de Oracle XE — TODO: identifică snapshot)
|
# Clone VM 302 → 304 (template state, înainte de Oracle XE — TODO: identifică snapshot)
|
||||||
ssh root@10.0.20.201 "qm clone 302 303 --name oracle-test-303-se --full"
|
ssh root@10.0.20.201 "qm clone 302 304 --name oracle-test-304-se --full"
|
||||||
ssh root@10.0.20.201 "qm start 303"
|
ssh root@10.0.20.201 "qm start 304"
|
||||||
# Schimbă IP-ul Windows: 10.0.20.130 → 10.0.20.131 (sau altul liber)
|
# Schimbă IP-ul Windows: 10.0.20.130 → 10.0.20.131 (sau altul liber)
|
||||||
```
|
```
|
||||||
|
|
||||||
Apoi pași 1-5 din varianta A pe VM 303.
|
Apoi pași 1-5 din varianta A pe VM 304.
|
||||||
|
|
||||||
> **Cost spațiu:** clonă full pe local-zfs ≈ 500 GB. Verifică spațiu pvemini
|
> **Cost spațiu:** clonă full pe local-zfs ≈ 500 GB. Verifică spațiu pvemini
|
||||||
> înainte (`zfs list local-zfs`).
|
> înainte (`zfs list local-zfs`).
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ Pe baza diferențelor SE vs XE (vezi `dual-edition-test-plan.md`):
|
|||||||
|
|
||||||
- [ ] La următoarea instalare prod SE, capturează toate logurile din
|
- [ ] La următoarea instalare prod SE, capturează toate logurile din
|
||||||
`C:\roa-setup\logs\` și atașează aici
|
`C:\roa-setup\logs\` și atașează aici
|
||||||
- [ ] Reproducere pe VM 302 sau clonă VM 303 (vezi `dual-edition-test-plan.md`)
|
- [ ] Reproducere pe VM 302 sau clonă VM 304 (vezi `dual-edition-test-plan.md`; VM 303 e ocupat de `Win11-Adina`)
|
||||||
- [ ] Fix scripturi pe baza erorilor reale
|
- [ ] Fix scripturi pe baza erorilor reale
|
||||||
- [ ] Re-test fresh install SE până trece complet
|
- [ ] Re-test fresh install SE până trece complet
|
||||||
- [ ] Update `roa-windows-setup/README.md` — marchează SE ca "tested OK"
|
- [ ] Update `roa-windows-setup/README.md` — marchează SE ca "tested OK"
|
||||||
|
|||||||
Reference in New Issue
Block a user