# Import DMP client pentru teste — LXC 108 Oracle 21c Procedură pentru importul unui DMP din producție (Oracle 19c SE2) în LXC 108 (Oracle 21c XE, PDB ROA) în scopul testelor. Schema se șterge după teste. --- ## Pregătire: ce trebuie știut dinainte | | Valoare | |--|--| | Schema client | ex: `ACN` | | Parola Oracle LXC 108 | `romfastsoft` | | Director DMP pe producție (Windows) | `C:\DMPDIR` | | Director DMP pe LXC 108 | `/opt/oracle/oradata/dmpdir/` | | PDB țintă | `roa` (port 1521) | --- ## Pasul 1 — Export din producție (Windows) Identifici tabelele mari ca să le excluzi din export (DMP mai mic): ```sql -- Rulează pe producție cu sqlplus SELECT * FROM ( SELECT segment_name, ROUND(SUM(bytes)/1024/1024, 2) AS mb FROM dba_segments WHERE segment_type = 'TABLE' AND owner = 'SCHEMA_CLIENT' GROUP BY segment_name ORDER BY mb DESC ) WHERE ROWNUM <= 20; ``` Creezi parfile `C:\DMPDIR\export.par` (ajustezi lista de tabele excluse): ``` SCHEMAS=SCHEMA_CLIENT DIRECTORY=DMPDIR DUMPFILE=client_nodata_%U.dmp FILESIZE=2G LOGFILE=client_export_nodata.log EXCLUDE=TABLE_DATA:"IN ('TABEL_MARE1','TABEL_MARE2','TABEL_MARE3')" ``` Rulezi exportul din CMD: ```cmd expdp system/PAROLA@localhost:1521/SERVICIU PARFILE=C:\DMPDIR\export.par ``` --- ## Pasul 2 — Transfer DMP pe LXC 108 Din Windows CMD/PowerShell, copiezi DMP-urile pe Proxmox: ```cmd scp C:\DMPDIR\client_nodata_*.dmp root@10.0.20.201:/tmp/ ``` De pe Proxmox, muți în containerul Oracle (repetă pentru fiecare fișier): ```bash ssh root@10.0.20.201 pct push 108 /tmp/client_nodata_01.dmp /opt/oracle/oradata/dmpdir/client_nodata_01.dmp pct push 108 /tmp/client_nodata_02.dmp /opt/oracle/oradata/dmpdir/client_nodata_02.dmp ``` --- ## Pasul 3 — Creare user în Oracle LXC 108 Cu sqlplus direct din Windows: ```cmd sqlplus sys/romfastsoft@10.0.20.121:1521/roa as sysdba ``` ```sql CREATE USER SCHEMA_CLIENT IDENTIFIED BY ROMFASTSOFT DEFAULT TABLESPACE ROA QUOTA UNLIMITED ON ROA; GRANT CONNECT, RESOURCE, DBA TO SCHEMA_CLIENT; EXIT; ``` --- ## Pasul 4 — Import DMP Din Windows CMD: ```cmd impdp system/romfastsoft@10.0.20.121:1521/roa SCHEMAS=SCHEMA_CLIENT DIRECTORY=DMPDIR DUMPFILE=client_nodata_%U.dmp REMAP_TABLESPACE=SCHEMA_CLIENT:ROA LOGFILE=client_import.log ``` Log import: `/opt/oracle/oradata/dmpdir/client_import.log` > **Warning ORA-28002** (parola expiră în N zile) — inofensiv, importul merge. > Fix permanent (o singură dată per PDB): > ```sql > -- conectat la roa ca sysdba > ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; > ``` --- ## Pasul 5 — Verificare după import ```cmd sqlplus SCHEMA_CLIENT/ROMFASTSOFT@10.0.20.121:1521/roa ``` ```sql -- Număr obiecte importate SELECT object_type, COUNT(*) FROM user_objects GROUP BY object_type ORDER BY 2 DESC; -- Tabele goale (cele excluse din export) SELECT table_name, num_rows FROM user_tables WHERE num_rows = 0 ORDER BY table_name; EXIT; ``` --- ## Pasul 6 — Timeout ODBC (dacă apare ORA-12609) Dacă aplicația Windows primește eroare de timeout la operații lungi, șterge sau mărește `SQLNET.RECV_TIMEOUT` din `sqlnet.ora` pe clientul Windows. Locație tipică: `C:\oracle\instantclient\network\admin\sqlnet.ora` Șterge sau comentează linia: ``` # SQLNET.RECV_TIMEOUT=60 ``` --- ## Pasul 7 — Cleanup după teste ```cmd sqlplus sys/romfastsoft@10.0.20.121:1521/roa as sysdba ``` ```sql DROP USER SCHEMA_CLIENT CASCADE; EXIT; ``` Șterge și DMP-urile de pe LXC 108 (opțional): ```bash ssh root@10.0.20.201 "pct exec 108 -- rm /opt/oracle/oradata/dmpdir/client_nodata_*.dmp" ``` --- ## Referințe - Parfile ACN (exemplu real): [`expdp_acn_nodata.par`](expdp_acn_nodata.par) - Configurare LXC 108: [`../README.md`](../README.md) - PDB ROA conexiune: `10.0.20.121:1521/roa`