Starea instalarii pe serverul nou, ruta de transfer a DMP-urilor prin DBMS_DATAPUMP + IIS (serverul vechi e 11.2.0.2 si nu are shell), capcana cu discul C: inaccesibil procesului Oracle, si pasii ramasi: firmele, tnsnames.ora al ROAClient si sqlnet.ora in TNS_ADMIN. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SzF1hf4aFS1tmJWpPMiwGp
9.7 KiB
Handoff — migrare VADECO pe server nou (Oracle 21c XE)
Stare la 2026-08-25, seara. Predare din cauza pragului de context. Nimic nu e într-o stare periculoasă. Modificările de cod sunt comise și pushuite.
Serverele
| Vechi | Nou | |
|---|---|---|
| Nume | CONTAFIN (workgroup VADECO) |
WIN-16COB435C1E (nume default, neschimbat) |
| IP LAN | 192.168.101.110 |
192.168.101.111 |
| Acces | fără SSH; doar 1521 / 445 / 3389 / 80 (IIS 7.5) | SSH pe cheie prin Tailscale: ssh Administrator@100.93.100.75 |
| OS | Windows Server 2008 R2 (dedus din IIS 7.5) | Windows Server 2019 Standard, 15.7 GB RAM, 4 vCPU |
| Oracle | XE 11.2.0.2.0, service XE, AL32UTF8 |
XE 21.3, CDB XE + PDB XEPDB1, AL32UTF8 |
| Discuri | — | C: 74 GB liber, D: 725 GB liber |
Credențiale baza veche: sys/romfastsoft, system/romfastsoft,
contafin_oracle/ROMFASTSOFT. Baza nouă: sys și system = romfastsoft.
Id client = 134 (citit din SYS.AUTH_DETALII de pe serverul vechi).
Firme în NOM_FIRME (toate cu parola ROMFASTSOFT): DANUBE, DANUBE_20200914,
LACERTA, SPACE. DANUBE_20200914 se exclude din migrare — decizie Marius.
Deci pasul 05 și verificarea 07 vor raporta o firmă lipsă; e corect, nu e defect.
Volume: contafin 593 MB segmente (514 MB date reale), firmele migrate ~185 MB. Total sub 12 GB, deci limita XE nu e o problemă.
Ruta de transfer a DMP-urilor — de ce e neobișnuită
expdp nu se poate rula de pe serverul nou: client Data Pump 21c contra
server 11.2.0.2 nu e suportat. Iar pe serverul vechi nu avem shell, iar C$ e
refuzat cu credențialele curente.
Soluția folosită, validată end-to-end cu un fișier de test înainte de a produce sute de MB pe discul clientului:
DBMS_DATAPUMPrulat în interiorul bazei vechi prinsqlplus(fără problema de versiune de client), scriind în directorul Oracle existentUPD_ROAUPDATE=D:\ROAUPDATE;- fișierul descărcat de pe serverul nou prin IIS:
http://192.168.101.110/roaupdate/<nume>.zip(extensia.zipe obligatorie — IIS întoarce 404 pentru.dmp/.explog, neavând tipul MIME); - verificare de integritate prin comparare de dimensiuni;
- ștergere de pe serverul vechi cu
UTL_FILE.FREMOVE.
Serverul vechi a rămas curat: fișierele de transfer ale contafin-ului au fost șterse. Dump-urile firmelor sunt încă acolo — vezi „Ce a mai rămas".
Ce e făcut
-
Commit
5a74699— kitul din sesiunea anterioară (FAZA1/FAZA2, scripturile 09/10/11,drop-contafin,backupora.exe, verificările din 07). -
Commit
ec66377— corecțiile găsite chiar în această instalare, detaliate în mesajul de commit. Pe scurt:- calea DMP e acum parametrul
-DmpDir, expus ca/dmpdest:în FAZA1/FAZA2 și transmisă pașilor 01, 02, 03, 05, 06 (înainte era hardcodată în cinci locuri, iar pasul 02 repoziționa tăcutDIRECTORY DMPDIRînapoi peC:\DMPDIR); New-OracleDirectorytestează acum cuUTL_FILEcă baza chiar poate scrie acolo, nu doar că șirul dindba_directoriese cel așteptat;- pasul 01 scrie
sqlnet.orași înTNS_ADMINcând acesta diferă; - pasul 05 nu mai poate lega o schemă de DMP-ul altei firme.
- calea DMP e acum parametrul
-
Kitul e pe serverul nou în
D:\ROA-SETUP\roa-windows-setup\, cu scripturile actualizate.DMPDIR\al kitului conținecontafin_oracle.dmp(213 MB, exportat azi de la client) șiFIRMANOUA.dmp(23 MB, adus de pe LXC 108). -
D:\DMPDIRpregătit, cu ACL pentruNT SERVICE\OracleServiceXE, conține ambele DMP-uri. -
FAZA1 rulată cu:
FAZA1.cmd 134 /dmpdest:D:\DMPDIR /vechi:192.168.101.110 /parolavechi:romfastsoft /serviciuvechi:XEPașii 1–7 trecuți: tablespace + profil + user, obiecte SYS, import contafin (366 obiecte, cod 5 = normal), sinonime + granturi, licențe de pe serverul vechi,
08-post-install-config(Id 134, 54 directoare de modul, joburi create dezactivate), IIS instalat și/roaupdatepublicat, export zilnic configurat. Verificarea finală: 366 obiecte, 0 invalide, 12107 sinonime publice.FAZA1.cmda ieșit cu codul 1 și mesajul „FAZA 1 TERMINATA, CU OBSERVATII". Singura observație e4 company schemas are missing(DANUBE,DANUBE_20200914,LACERTA,SPACE) — normal pentru faza 1, firmele vin în faza 2. Nimic altceva nu a eșuat.De îmbunătățit în kit: la faza 1, codul de ieșire 1 pentru firme lipsă e nedistinsabil de un eșec real. Pasul 07 ar trebui să primească un mod „faza 1" în care firmele lipsă nu schimbă codul de ieșire.
-
Curățat după diagnostic: obiectele
DIRECTORYde test (T_WINTEMP,T_CROOT,T_DMPDIR2,TESTDIR_D) șterse,C:\DMPDIR2șiD:\DMPDIR-TESTșterse, ACE-ul temporar de pe rădăcinaC:\retras.
Capcana cu discul C: — nu o mai investiga
Pe serverul ăsta procesul Oracle nu ajunge la nicio cale de pe C:: nici
C:\DMPDIR, nici C:\DMPDIR2, nici C:\Windows\Temp (scriibil de oricine), nici
C:\ însuși. Toate dau ORA-29283: invalid file operation ... [29434], la
UTL_FILE direct, nu doar prin Data Pump. D: funcționează cu exact același
grant de ACL.
Verificat și exclus: ACL pe folder (era corect), ACL/traversare pe rădăcina C:
(adăugat explicit, fără efect), PATH_PREFIX de PDB (inexistent), PDB_LOCKDOWN
(gol), contul serviciului (NT SERVICE\OracleServiceXE, confirmat ca proprietar al
oracle.exe). Cauza reală n-a fost găsită și nu merită căutată: D: e oricum
locul corect — acolo sunt Oracle Home, D:\ROA, D:\ROAUPDATE și 725 GB liberi.
Ce a mai rămas de făcut
-
FAZA1 e gata — nu mai e nimic de reluat acolo. Logurile pe server:
D:\ROA-SETUP\roa-windows-setup\logs\. -
Adu dump-urile firmelor și rulează FAZA2. Exporturile sunt deja făcute pe serverul vechi, în
D:\ROAUPDATE\, cadanube.zip,lacerta.zip,space.zip(plus.explogfiecare). Toate trei au raportatSTATUS=COMPLETED. De pe serverul nou:$wc = New-Object System.Net.WebClient foreach ($s in 'danube','lacerta','space') { $wc.DownloadFile("http://192.168.101.110/roaupdate/$s.zip", "D:\ROA-SETUP\roa-windows-setup\DMPDIR\$($s.ToUpper()).dmp") }Numele fișierului trebuie să fie exact
<SCHEMA>.dmp— pasul 05 leagă schema de DMP după nume.Apoi:
FAZA2.cmd 134 /dmpdest:D:\DMPDIR/reimportcontafinnu e necesar: contafin-ul a fost exportat azi și nu s-a adăugat nicio firmă între timp. -
Șterge fișierele de transfer de pe serverul vechi după descărcare — altfel rămân ~185 MB în
D:\ROAUPDATEla client:-- sqlplus system/romfastsoft@//192.168.101.110:1521/XE begin for f in (select column_value nume from table(sys.odcivarchar2list( 'danube.zip','danube.explog','lacerta.zip','lacerta.explog', 'space.zip','space.explog'))) loop begin utl_file.fremove('UPD_ROAUPDATE', f.nume); exception when others then null; end; end loop; end; / -
tnsnames.oraal ROAClient e încă cel șablon —D:\ROA\instantclient_11_2_0_2\tnsnames.oraconțineHOST = SERVER_ROA/SID = ROA, care nu există. Trebuie înlocuit cu:ROA = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.101.111)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = XEPDB1)) )IP-ul serverului, nu
localhost, ca să meargă același fișier și pe stații. Fă backup înainte. Nu am apucat să-l scriu — FAZA1 rula și n-am vrut să umblu la configurația de rețea în timpul ei. -
Verifică
sqlnet.oraînTNS_ADMIN.TNS_ADMINde mașină ed:\roa\instantclient_11_2_0_2și nu conținea niciunsqlnet.ora. Pasul 01 din commit-ulec66377îl scrie și acolo, dar rularea de azi a folosit versiunea veche a scriptului pentru pasul 01 — deci pe server fișierul probabil lipsește încă. Copiază-l manual dinD:\app\Administrator\product\21c\homes\OraDB21Home1\network\admin\sqlnet.ora, altfel clienții vechi iauORA-28040. Testul care contează:'exit' | Set-Content -Encoding ascii C:\Windows\Temp\e.sql & 'D:\ROA\instantclient_11_2_0_2\sqlplus.exe' -S -L "system/romfastsoft@//192.168.101.111:1521/XEPDB1" '@C:\Windows\Temp\e.sql'Ieșire goală = merge. La ultima încercare a dat
ORA-12514, dar listenerul tocmai era repornit de FAZA1 — de retestat. -
Joburile de update sunt create dezactivate. Se activează manual când e cazul:
EXEC DBMS_SCHEDULER.ENABLE('CONTAFIN_ORACLE.UPDATEROA_ZILNIC'); EXEC DBMS_SCHEDULER.ENABLE('CONTAFIN_ORACLE.UPDATERTVAI_ZILNIC'); -
Netestat încă: pasul 11 (export zilnic cu
backupora.exe). Marius a instalat ROAClient înD:\ROA, deci runtime-ul VFP9 ar trebui să existe — asta rezolvă incertitudinea din handoff-ul precedent. Rămâne de confirmat convențiabackuppath(ExportPathvsC:\BACKUP_ORACLE) și căbackupora.exeacceptă un service name EZConnect (XEPDB1), nu doar un SID.
Ce e interzis
- Nu rula scripturile pe
10.0.20.121(LXC 108) — e sursa șabloanelor, nu o țintă. - Nu comite
config.ps1și nici fișiere.dmp. - Nu porni joburile de actualizare pe serverul nou cât timp utilizatorii lucrează pe cel vechi.
- Nu reveni la
C:\DMPDIRpe serverul ăsta.
Legături
- Kit și flux complet:
proxmox/lxc108-oracle/roa-windows-setup/README.md - Handoff-ul precedent (starea kitului înainte de prima rulare reală):
docs/handoff_instalare-doua-faze.md - Accesul prin Tailscale la clienți:
docs/acces-client-tailscale-ssh.md