Files
ROMFASTSQL/proxmox/vm302-oracle-test
Marius 7fce925349 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
2026-08-25 18:05:56 +03:00
..

VM 302 - oracle-test-302 (ROA Windows Setup Test VM)

VM-ul de test pentru scripturile de instalare ROA pe Windows + Oracle 21c. Scripturile efective trăiesc în proxmox/lxc108-oracle/roa-windows-setup/ (generale, nu legate de VM 302). Acest director documentează mediul de test ș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.

Status testare

Ediție Oracle Status Note
21c XE (CDB/PDB) OK Validat pe VM 302, RunAll.cmd rulează complet
21c Standard Edition (non-CDB) TODO NETESTAT pe VM 302. În producție au apărut erori — vezi docs/issues-se-prod.md

Scripturile roa-windows-setup au fost testate doar pe XE. La rularea în producție pe Oracle 21c SE au apărut erori. Înainte de următorul deployment SE trebuie reprodus scenariul SE pe VM 302 (sau clonă VM 303). Vezi docs/dual-edition-test-plan.md.


VM Information

Property Value
VM ID 302
Name oracle-test-302
Hostname ROACENTRAL
IP Address 10.0.20.130
RAM 4 GB
Disk 500 GB
OS Windows 11
Oracle 21c XE (CDB/PDB) — instalat curent
Proxmox Host pvemini (10.0.20.201)
Scripturi setup ../lxc108-oracle/roa-windows-setup/

Quick Start

1. Start VM (if stopped)

# From any machine with SSH access to Proxmox
ssh root@10.0.20.201 "qm start 302"

# Wait for boot (~2-3 minutes)
ssh root@10.0.20.201 "qm status 302"

2. Connect to VM

# SSH (if OpenSSH installed)
ssh romfast@10.0.20.130

# Or use RDP
mstsc /v:10.0.20.130
# User: romfast

3. Run Tests

# PowerShell as Administrator
cd C:\roa-setup
.\RunAll.cmd

4. Stop VM (when done)

ssh root@10.0.20.201 "qm shutdown 302"
# Or force stop:
ssh root@10.0.20.201 "qm stop 302"

Proxmox VM Management

Check Status

ssh root@10.0.20.201 "qm status 302"

Start VM

ssh root@10.0.20.201 "qm start 302"

Graceful Shutdown

ssh root@10.0.20.201 "qm shutdown 302"

Force Stop

ssh root@10.0.20.201 "qm stop 302"

Access Console (via Proxmox GUI)

https://10.0.20.201:8006 → VM 302 → Console

Current Configuration

Oracle Connection

Property Value
Host 10.0.20.130
Port 1521
Service XEPDB1
SYS Password romfastsoft
SYSTEM Password romfastsoft
# SQL*Plus connection
sqlplus sys/romfastsoft@10.0.20.130:1521/XEPDB1 as sysdba
sqlplus system/romfastsoft@10.0.20.130:1521/XEPDB1
sqlplus CONTAFIN_ORACLE/ROMFASTSOFT@10.0.20.130:1521/XEPDB1

ROA Users (after installation)

User Password Purpose
CONTAFIN_ORACLE ROMFASTSOFT Common schema
CAPIDAVATOUR ROMFASTSOFT Test company

DMP Files Available

C:\DMPDIR\
├── contafin_oracle_72001.dmp  (276 MB)
└── capidavatour_72001.dmp     (76 MB)

Setup Directory

C:\roa-setup\
├── config.ps1          # Current configuration
├── scripts\            # PowerShell setup scripts
├── sql\                # SQL scripts
├── par\                # Import parameters
└── logs\               # Execution logs

Capcane de mediu (verificate 2026-08-25)

1. VM-ul își poate pierde IP-ul static la boot. La pornirea din 2026-08-25 adaptorul s-a re-enumerat ca Ethernet 2 și a venit pe DHCP (10.0.20.118). listener.ora are HOST=10.0.20.130 scris în clar, deci serviciul listener pornește („Running") dar nu leagă portul, iar orice conectare dă ORA-12541: TNS:no listener. Verifică IP-ul înainte de a începe testul:

ssh root@10.0.20.201 "qm agent 302 network-get-interfaces" | grep ip-address

Dacă nu e 10.0.20.130, restaurează-l (comanda rupe sesiunea SSH curentă, de aceea rulează printr-un task programat):

Set-NetIPInterface -InterfaceAlias 'Ethernet 2' -Dhcp Disabled
Get-NetIPAddress -InterfaceAlias 'Ethernet 2' -AddressFamily IPv4 | Remove-NetIPAddress -Confirm:$false
New-NetIPAddress -InterfaceAlias 'Ethernet 2' -IPAddress 10.0.20.130 -PrefixLength 24 -DefaultGateway 10.0.20.1
Set-DnsClientServerAddress -InterfaceAlias 'Ethernet 2' -ServerAddresses 10.0.20.1

Apoi Restart-Service OracleOraDB21Home1TNSListener. Listener-ul mai are nevoie de ~60 s ca instanța să se înregistreze (PMON), altfel primești ORA-12514.

2. C:\roa-setup\ este o copie, nu un clone al repo-ului. La 2026-08-25 era în urmă cu două commit-uri (sys-objects.sql, scheduler-jobs.sql, uninstall-roa.sql erau dinainte de 015cd79). Sincronizează tot directorul, nu doar fișierele pe care crezi că le-ai atins, și confirmă cu hash-uri:

cd proxmox/lxc108-oracle/roa-windows-setup
scp sql/*.sql        romfast@10.0.20.130:C:/roa-setup/sql/
scp scripts/*.ps1    romfast@10.0.20.130:C:/roa-setup/scripts/
scp scripts/lib/*.ps1 romfast@10.0.20.130:C:/roa-setup/scripts/lib/
scp Run.cmd RunAll.cmd romfast@10.0.20.130:C:/roa-setup/

3. RunAll.cmd nu poate fi condus neinteractiv. Folosește set /p pentru confirmări; pe stdin redirecționat (< NUL sau prin ssh) fie se anulează cu „Installation cancelled" și iese cu codul 0, fie crapă cu „The syntax of the command is incorrect". Nu te lua după codul de ieșire — verifică logul. Pentru rulare automată, apelează scripturile în ordine direct:

01-setup-database.ps1 → 02-create-sys-objects.ps1 → 03-import-contafin.ps1
→ 04-create-synonyms-grants.ps1 → 05-import-companies.ps1
→ 08-post-install-config.ps1 → 07-verify-installation.ps1

4. 03-import-contafin.ps1 iese normal cu codul 5. E codul Data Pump pentru „completat cu erori"; erorile sunt ORA-31684 already exists (userul e creat de scriptul

  1. și ORA-39082 (warning-uri de compilare). Nu e un eșec.

Testing Workflow

Full Installation Test

# 1. Uninstall existing ROA (if any)
cd C:\roa-setup
.\scripts\99-uninstall-roa.ps1 -SystemPassword "romfastsoft" -Force

# 2. Run full installation
.\RunAll.cmd

# 3. Verify
.\scripts\07-verify-installation.ps1

Individual Script Test

cd C:\roa-setup

# Use Run.cmd wrapper (handles ExecutionPolicy)
.\Run.cmd 01-setup-database.ps1
.\Run.cmd 02-create-sys-objects.ps1
.\Run.cmd 03-import-contafin.ps1
.\Run.cmd 04-create-synonyms-grants.ps1
.\Run.cmd 05-import-companies.ps1
.\Run.cmd 08-post-install-config.ps1
.\Run.cmd 07-verify-installation.ps1

Reset for Fresh Test

# Complete uninstall (drops all ROA objects)
.\scripts\99-uninstall-roa.ps1 -SystemPassword "romfastsoft" -Force

# This removes:
# - CONTAFIN_ORACLE user
# - CAPIDAVATOUR user (and any other company users)
# - ROA tablespace
# - Public synonyms
# - SYS objects (AUTH_PACK, NEWSCHEMA, etc.)

Script Execution Order

# Script Duration Purpose
1 01-setup-database.ps1 ~30s Tablespace, profile, CONTAFIN_ORACLE user
2 02-create-sys-objects.ps1 ~15s AUTH_PACK, NEWSCHEMA, UTL_MAIL config
3 03-import-contafin.ps1 ~2 min Import CONTAFIN_ORACLE schema (344 objects)
4 04-create-synonyms-grants.ps1 ~30s 81 public synonyms + grants
5 05-import-companies.ps1 ~3 min Import CAPIDAVATOUR (3418 objects)
6 08-post-install-config.ps1 ~1 min 54 directories, SERVER_INFO
7 07-verify-installation.ps1 ~15s Verification report

Total: ~8 minutes for full installation


Expected Results

After Successful Installation

07-verify-installation.ps1 output:

=== ROA Installation Verification ===
Tablespace ROA: OK
User CONTAFIN_ORACLE: OK (344 objects)
User CAPIDAVATOUR: OK (3418 objects)
Public Synonyms: OK (81 synonyms)
SYS Objects: OK (AUTH_PACK, NEWSCHEMA, etc.)
ROAUPDATE Directories: OK (54 directories)
SERVER_INFO: OK (configured)

Object Counts

Schema Objects Tables Procedures Packages
CONTAFIN_ORACLE 344 ~80 ~50 ~20
CAPIDAVATOUR 3418 ~150 ~100 ~30

Troubleshooting

Oracle Service Not Running

# Check service
Get-Service OracleServiceXE

# Start service
Start-Service OracleServiceXE

# Check listener
lsnrctl status

DMPDIR Points to Wrong Path

Oracle XE has a pre-existing DMPDIR that points to D:\Oracle\admin\ORCL\dpdump. The setup scripts should now handle this automatically, but to verify/fix manually:

-- Check existing directories
SELECT directory_name, directory_path FROM dba_directories WHERE directory_name = 'DMPDIR';

-- If pointing to wrong path, recreate
DROP DIRECTORY DMPDIR;
CREATE OR REPLACE DIRECTORY DMPDIR AS 'C:\DMPDIR';
GRANT READ, WRITE ON DIRECTORY DMPDIR TO PUBLIC;

Note: The New-OracleDirectory function in oracle-functions.ps1 now automatically detects and corrects this issue (drops and recreates if path differs).

DATAFILE_DIR Wrong Path

If tablespace creation fails with ORA-01119, check the datafile path in config.ps1:

# Check actual datafile location
sqlplus -S sys/romfastsoft@10.0.20.130:1521/XEPDB1 "as sysdba" <<< "SELECT file_name FROM dba_data_files WHERE ROWNUM = 1;"

# Common paths:
# Oracle XE typical: C:\app\<user>\product\21c\oradata\XE\XEPDB1
# Not:              C:\app\<user>\oradata\XE\XEPDB1  (missing 'product\21c')

Fix in config.ps1:

$DATAFILE_DIR = "C:\app\romfast\product\21c\oradata\XE\XEPDB1"

Permission Error on C:\DMPDIR

# Grant Oracle service permissions
icacls C:\DMPDIR /grant "NT SERVICE\OracleServiceXE:(OI)(CI)F" /T

PDB Not Open

-- Connect as SYSDBA to CDB
sqlplus sys/romfastsoft@localhost:1521/XE as sysdba

-- Open PDB
ALTER PLUGGABLE DATABASE XEPDB1 OPEN;
ALTER PLUGGABLE DATABASE XEPDB1 SAVE STATE;

Script Execution Policy Error

# Use Run.cmd wrapper instead of direct execution
.\Run.cmd 01-setup-database.ps1

# Or set policy manually (Admin PowerShell)
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Check Logs

# View latest log
Get-ChildItem C:\roa-setup\logs\ | Sort-Object LastWriteTime -Descending | Select-Object -First 5

# Read specific log
Get-Content C:\roa-setup\logs\01-setup-database_*.log

Deploying Updated Scripts

From WSL/Linux

# Copy all scripts to VM
scp -r /mnt/e/proiecte/ROMFASTSQL/proxmox/lxc108-oracle/roa-windows-setup/* romfast@10.0.20.130:C:/roa-setup/

From Windows

# Copy from network share or local path
Copy-Item -Recurse E:\proiecte\ROMFASTSQL\proxmox\lxc108-oracle\roa-windows-setup\* C:\roa-setup\ -Force

Quick Script Update (single file)

# Update specific script
scp /mnt/e/proiecte/ROMFASTSQL/proxmox/lxc108-oracle/roa-windows-setup/scripts/03-import-contafin.ps1 romfast@10.0.20.130:C:/roa-setup/scripts/

VM Snapshots

Create Snapshot (for quick restore)

# Before testing
ssh root@10.0.20.201 "qm snapshot 302 pre-test --description 'Before ROA test'"

# List snapshots
ssh root@10.0.20.201 "qm listsnapshot 302"

Restore Snapshot

# Restore to clean state
ssh root@10.0.20.201 "qm rollback 302 pre-test"

Delete Snapshot

ssh root@10.0.20.201 "qm delsnapshot 302 pre-test"

Clone VM for Parallel Testing

# Clone VM 302 to VM 304  (ATENTIE: 303 e ocupat de Win11-Adina)
ssh root@10.0.20.201 "qm clone 302 304 --name oracle-test-304 --full"

# Start new VM
ssh root@10.0.20.201 "qm start 304"

# Note: Change IP in Windows after boot (Network Settings)

Notes

  • VM 302 a fost clonata initial din template-ul VM 300 (clean Windows + Oracle XE)
  • ✅ Foloseste template-ul VM 310 Win11-Template-Sysprep. VM 300 a fost sters 2026-08-11: nu era sysprep-uit, purta numele si SID-ul de masina al VM 201, iar clonele lui nu se puteau autentifica prin SMB/NTLM cu VM 201 sau intre ele.
  • Oracle XE has 2GB RAM limit - sufficient for testing
  • DMP files are already in C:\DMPDIR (persisted between tests)
  • Uninstall script preserves DMP files

Last Updated: 2026-04-25 Author: Marius Mutu Project: ROMFASTSQL - VM 302 (oracle-test-302) test environment

Documente conexe

  • docs/dual-edition-test-plan.md — plan testare XE + SE 21c
  • docs/issues-se-prod.md — TODO: log erori întâlnite în producție pe Oracle SE 21c
  • ../lxc108-oracle/roa-windows-setup/README.md — scripturile de setup
  • ../lxc108-oracle/roa-windows-setup/test/clone-vm300.sh — clonare VM template 300 (utilizat pentru a crea VM 302)