- leaga_skills.ps1: expune skill-urile in ~/.claude/skills prin symlink (citit si de Claude Code, si de opencode), fara copiere - rutare zona->skill in reguli_lucru pct. 7, README, AGENTS.md; skill-ul devine proprietarul procedurii, docurile raman referinta conditionata - rec_skills.md: decizia, inventarul si cum se adauga un skill nou
6.6 KiB
6.6 KiB
name: roa-oracle-production-access
description: Ridica lantul complet statie -> tunel SSH Bitvise -> alias TNS -> DSN ODBC 32-bit si interogheaza read-only un Oracle de PRODUCTIE al unui client ROA. Foloseste-l OBLIGATORIU cand utilizatorul spune "conecteaza-te la productia clientului X", "intra pe Oracle la client", "ridica tunelul SSH", "deschide tunelul Bitvise", "nu merge DSN-ul ODBC", "ORA-12541 TNS:no listener", "verifica TNS", "unde e tnsnames.ora", "seteaza TNS_ADMIN", "ruleaza un SELECT pe productie", "de ce nu se conecteaza sqlplus" sau cere orice acces la o baza Oracle care nu e expusa direct. Stapaneste exact capcanele care costa sesiuni intregi: portul local 1521 unic pentru mai multe destinatii,
BvSsh.exe care tine portul legat, odbcad32.exe pe 32 de biti, $ distrus in here-string PowerShell. Nu improviza, nu sari peste dovada si nu ghici parole.
Acces la productia Oracle: tunel SSH (Bitvise) + TNS + DSN ODBC
Scopul e sa NU se mai piarda o sesiune redescoperind lantul: executa pasii de mai jos, nu trimite utilizatorul in alta parte.
Cand se foloseste
- "conecteaza-te la productia clientului X", "intra pe Oracle la client", "deschide baza de productie";
- "ridica tunelul SSH", "porneste tunelul Bitvise", "profilul vending.tlp / conpress.tlp";
- "nu merge DSN-ul ODBC", "eroare
ORA-12541: TNS:no listener", "sqlplus nu se conecteaza"; - "verifica TNS", "unde e tnsnames.ora", "seteaza
TNS_ADMIN", "SELECT pe productie" (read-only).
Nu acopera: re-exportul sursei unui pachet PL/SQL si editarea de text VFP.
Pasi
- Fixeaza lantul. TREI nume trebuie sa se potriveasca, si e usor de ratat:
- profilul Bitvise (
.tlp) - ce port local deschide (de obicei127.0.0.1:1521); - aliasul TNS din
tnsnames.ora- ce host:port foloseste (127.0.0.1:1521); - DSN-ul ODBC - ce alias TNS foloseste.
tcHostdinoConn.Connect(tcHost, ...)(oproceduri_comune.prg) e NUMELE DSN-ului, nu un host si nu un alias TNS.
- profilul Bitvise (
- Profilele Bitvise sunt pe statia curenta in
D:\roa\BITVISE\(vending.tlp,conpress.tlp,clever.tlp,automotive.tlp,avis.tlp,eduard.tlp,ems.tlp,romfast.tlp,sigma.tlp,vadeco.tlp). - Ridica tunelul fara interfata grafica:
& 'C:\Program Files (x86)\Bitvise SSH Client\stnlc.exe' -profile=D:\roa\BITVISE\vending.tlp(sauStart-Process ... -WindowStyle Hiddencu redirect in$env:TEMP\stnlc_out.txt).stnlcfoloseste singur parola din profil: NU o pune pe linia de comanda si ruleaza sub acelasi cont Windows sub care a fost salvat profilul, altfel DPAPI nu poate decripta. - Verifica tunelul inainte de orice altceva (nu te baza ca procesul traieste):
(Test-NetConnection 127.0.0.1 -Port 1521 -WarningAction SilentlyContinue).TcpTestSucceeded. - Seteaza TNS:
$env:TNS_ADMIN = 'D:\ROA\instantclient_11_2_0_2'pentru driverul ODBC pe 32 de biti, sauinstantclient_19_18pentrusqlplus. Aliasul care merge prin tunel areHOST = 127.0.0.1,PORT = 1521. - DSN: sunt pe 32 de biti, in
HKLM\SOFTWARE\WOW6432Node\ODBC\ODBC.INI. Listeaza cuGet-ChildItem 'HKLM:\SOFTWARE\WOW6432Node\ODBC\ODBC.INI' | Select-Object -ExpandProperty PSChildName. Administrare vizuala:C:\Windows\SysWOW64\odbcad32.exe(NU cel dinSystem32). - Interogheaza:
& 'D:\ROA\instantclient_19_18\sqlplus.exe' -S -L '<schema>/<parola>@VENDING' '@script.sql'.-L= o singura incercare de login. Foloseste-l intotdeauna pe productie. - Prima interogare, mereu, ca sa stii unde ai nimerit:
select user || ' @ ' || sys_context('USERENV','DB_NAME') from dual; - La final inchide tunelul (opreste procesul
stnlc); nu-l lasa deschis peste noapte.
Capcane
- Port local 1521 unic pentru mai multe destinatii: daca ai deja un tunel catre alt client, al doilea nu mai poate lega portul si interoghezi alta baza fara sa-ti dai seama. Proba e pasul 8.
BvSsh.exe(GUI) poate tine portul 1521 legat pe0.0.0.0cu o sesiune moarta ->sqlplusdaORA-12541: TNS:no listener, desi "tunelul pare sus".stnlcisi poate lega totusi regula pe127.0.0.1:1521peste ea. Nu te lua dupanetstat: proba reala e interogarea.- DSN-urile sunt pe 32 de biti (VFP e pe 32 de biti) si stau in
WOW6432Node\ODBC\ODBC.INI;odbcad32.exedinSystem32e pe 64 de biti si nu le vede. $in here-string cu ghilimele duble (@"..."@): PowerShell expandeaza$, iar un regex Oracle care se termina cu ancora$ajunge stricat in.sql-> interogarea intoarce 0 randuri fara nicio eroare. Foloseste here-string cu apostrof (@'...'@).termout offascunde si mesajele de eroare: un spool gol nu inseamna date lipsa; ruleaza din nou faratermout offinainte sa banuiesti datele.- Fara credentiale in git si fara ghicit parole:
FAILED_LOGIN_ATTEMPTSpoate bloca schema in PRODUCTIE dupa cateva incercari gresite. Cere parola. - Doar
SELECT: faraINSERT/UPDATE/DELETE/DDL, faraALTER SESSIONpersistent; margineaza cufetch first N rows only. Codurile fiscale publice pot sta in repo, denumirile de parteneri, adresele si soldurile NU.
Criterii de acceptare si dovada
Fara dovezile da/nu de mai jos, conexiunea NU se raporteaza ca functionala. "S-a conectat" nu e dovada.
(Test-NetConnection 127.0.0.1 -Port 1521 -WarningAction SilentlyContinue).TcpTestSucceeded->True.- In
%TEMP%\stnlc_out.txtapareAdded client-to-server forwarding rule on 127.0.0.1:1521 to localhost:1521. sqlplus -S -Lchiar intoarce randuri dinselect user || ' @ ' || sys_context('USERENV','DB_NAME') from dual;-> schema si baza asteptate.- DSN-ul rezolva la host:port corect: numele e prezent in
WOW6432Node\ODBC\ODBC.INI, iar aliasul TNS folosit de el arata spre127.0.0.1:1521. - Tunelul e inchis la final (procesul
stnlcoprit).
Scripturi
C:\Program Files (x86)\Bitvise SSH Client\stnlc.exe- tunel din linie de comanda.C:\Program Files (x86)\Bitvise SSH Client\BvSsh.exe- GUI (sursa capcanei de port).D:\ROA\instantclient_19_18\sqlplus.exe- interogare read-only.D:\ROA\instantclient_11_2_0_2\- clientul pentru driverul ODBC pe 32 de biti (TNS_ADMIN).C:\Windows\SysWOW64\odbcad32.exe- administrarea DSN-urilor pe 32 de biti.Test-NetConnection(PowerShell) - proba ca tunelul e sus.
Referinta (doar la nevoie)
- Doar daca ai nevoie de tabelul schemelor cunoscute (profil -> alias/DSN -> schema) sau de exemplul de extragere a codurilor fiscale, citeste
COMUN\docs\conexiuni-tunel-ssh-odbc.md; re-exportul sursei unui pachet PL/SQL nu e acoperit aici, veziCOMUN\docs\oracle_export.md.