Files
ROMFASTSQL/CLAUDE.md
Marius a5ea8c7ffa fix(oracle): instanta citeste TNS_ADMIN-ul de masina, nu Oracle Home
Continuarea corectiei 3 din ec66377. Aceea rezolva doar jumatatea vizibila a
problemei; jumatatea ascunsa ar fi lovit la primul reboot al serverului, dupa
plecarea de la client. Gasit la VADECO, verificat pe loc.

1. ORA-12514 la toti clientii, cu baza perfect sanatoasa.

   TNS_ADMIN de masina nu decide doar de unde se citeste sqlnet.ora: instanta
   rezolva de acolo si aliasurile din tnsnames.ora. La Oracle XE LOCAL_LISTENER
   e implicit aliasul LISTENER_XE, definit doar in tnsnames.ora din Oracle Home.
   Cand serviciul reporneste dupa ce ROAClient a pus TNS_ADMIN pe folderul
   instantclient-ului, aliasul nu se mai rezolva, instanta nu se mai
   inregistreaza la listener, si atunci: v$instance OPEN, v$pdbs READ WRITE,
   listener pornit pe 0.0.0.0:1521, lsnrctl arata doar CLRExtProc, si absolut
   orice client primeste ORA-12514.

   Capcana e de timp, nu de continut: o instanta pornita inainte ca TNS_ADMIN
   sa existe nu il vede, deci instalarea pare impecabila si cade la primul
   reboot. Reprodus la VADECO cu un simplu Restart-Service OracleServiceXE.

   Pasul 01 scrie acum si tnsnames.ora in TNS_ADMIN (aliasul ROA pentru
   ROAClient - sablonul livrat cu el arata spre HOST=SERVER_ROA, inexistent -
   plus LISTENER_XE pentru instanta) si, mai important, fixeaza LOCAL_LISTENER
   pe adresa literala. Doar asta din urma rezista si daca ROAClient se
   instaleaza dupa kit, sau daca folderul instantclient se muta.

2. ORA-01017 desi parola e corecta.

   Cu SQLNET.ALLOWED_LOGON_VERSION_SERVER=8 serverul autentifica orice client
   pre-12c pe baza verificatorului 10G. Un cont fara 10G in PASSWORD_VERSIONS
   nu se mai poate conecta din Instant Client 10/11, si eroarea nu e ORA-28040,
   ci ORA-01017 - fix cea care trimite pe pista parolei. Dupa o instalare 21c,
   SYSTEM are doar 11G 12C; CONTAFIN_ORACLE scapa doar pentru ca pasul 01 ii
   rescrie parola dupa ce a scris sqlnet.ora. Pasul 01 rescrie acum si parola
   lui SYSTEM, din CDB$ROOT, cu aceeasi valoare.

   Subtilitate: interogat din PDB, PASSWORD_VERSIONS al unui utilizator comun
   ramane cel vechi si dupa reparatie, desi autentificarea foloseste definitia
   din root si functioneaza. Coloana nu e o dovada pentru SYSTEM; conectarea e.

3. Pasul 07 verifica acum ce nu se vede pe hartie.

   Toate cele trei erori trec de verificarile de pana acum: fisierul exista,
   parametrul e setat, contul e OPEN, obiectele sunt valide. Sectiunea noua
   "Conectivitate client vechi (Instant Client)" verifica unde se citeste
   efectiv sqlnet.ora, daca tnsnames.ora din TNS_ADMIN mai e sablonul, daca
   LOCAL_LISTENER e alias sau adresa, ce verificatoare de parola au conturile,
   si - singurul lucru care le prinde pe toate - face o conectare adevarata cu
   Instant Client-ul gasit pe masina. La esec, raportul spune si unde sa te
   uiti. Parametri noi: -ContafinPassword, -InstantClientDir.

4. Get-ServerLanIPv4, in biblioteca.

   Pe serverele la care intram prin Tailscale, un tnsnames.ora cu 100.x nu duce
   nicaieri de pe o statie. Functia alege IP-ul din LAN sarind peste Tailscale
   (100.64.0.0/10) si APIPA, dupa ruta implicita cand sunt mai multe placi.
   Get-ListenerHost o foloseste si el la fallback-ul pe 0.0.0.0, unde inainte
   lua prima adresa nefiltrata.

La VADECO a mai fost nevoie de o corectie manuala, in afara kitului: listener.ora
avea HOST = <nume>.ts.net, deci pornirea listenerului depindea de Tailscale.
Regula generala e in documentatie.

Detaliile, cu dovezi si comenzi de diagnostic: docs/lectii-conectare-client-oracle.md

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SzF1hf4aFS1tmJWpPMiwGp
2026-08-25 22:14:45 +03:00

5.8 KiB

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Project Overview

ROMFASTSQL is an infrastructure and database management project for ROMFAST, featuring:

  • Proxmox virtualization cluster (3 nodes: pve1, pvemini, pveelite)
  • Oracle Database XE 21c with migration support from Oracle 10g
  • AI chatbot system (Flowise + Claude)
  • Disaster recovery infrastructure

Repository Structure

proxmox/                    # Main infrastructure documentation
├── README.md               # Master index - START HERE
├── cluster/                # Proxmox cluster, UPS, storage management
├── lxc102-docker/          # Docker + Portainer + Docker Sandboxes (sbx)
├── lxc104-flowise/         # AI Chatbot (Flowise on port 3000)
├── lxc108-oracle/          # Oracle XE 21c/18c Database (port 1521/1522)
├── lxc110-moltbot/         # MoltBot AI Telegram Bot
├── lxc171-claude-agent/    # Claude Code development environment
├── vm109-windows-dr/       # Windows Disaster Recovery VM
├── vm201-windows/          # Windows 11 (IIS reverse proxy)
└── vm302-oracle-test/      # Windows 11 + Oracle 21c test VM (ROA setup validation)

system_instructions/        # SQL migration guidelines and knowledge base
├── system_prompt.md        # SQL migration rules - READ BEFORE WRITING SQL
└── knowledge_base/         # Example scripts and PACK_MIGRARE.pck

scripts/                    # Python utilities
├── generare_proces_verbal.py   # Generate assembly minutes (DOCX)
└── verificare_voturi_AG.py     # Verify assembly votes

input/                      # Oracle DMP files for import

Key Documentation Entry Points

  • Infrastructure overview: proxmox/README.md
  • SQL migration guidelines: system_instructions/system_prompt.md (always read before generating migration SQL)
  • Oracle database setup: proxmox/lxc108-oracle/README.md
  • Migration orchestration: proxmox/lxc108-oracle/migration/00-MASTER-MIGRATION.sh
  • Chatbot architecture: proxmox/lxc104-flowise/docs/prd.md
  • Docker Sandboxes (sbx) — agenți AI izolați: proxmox/lxc102-docker/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
  • Conectarea clienților vechi (Instant Client 10/11) la 21c — ORA-28040 / ORA-01017 / ORA-12514: docs/lectii-conectare-client-oracle.md
  • Kit de instalare pentru client (DMP-uri șablon + scripturi, gata de dus la client): proxmox/lxc108-oracle/scripts/build-client-kit.ps1
  • 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
  • Acces SSH la clienți cu chei publice (angajați noi): docs/acces-ssh-chei-angajati.md
  • Acces administrativ la server client prin Tailscale + SSH (fără forward pe router): docs/acces-client-tailscale-ssh.md
  • Cazuri clienți (depanare DB): proxmox/lxc108-oracle/clienti/README.md
    • ROMPETROL ENERGY — recreare PDB Oracle XE 21c după ORA-12954: proxmox/lxc108-oracle/clienti/oracle-xe-21c/README.md

Infrastructure Commands

Proxmox Cluster

ssh root@10.0.20.201 "pvecm status"     # Cluster status
ssh root@10.0.20.201 "pct list"         # List LXC containers
ssh root@10.0.20.201 "qm list"          # List VMs

Oracle Database (LXC 108)

pct exec 108 -- docker exec -it oracle-xe sqlplus / as sysdba
pct exec 108 -- docker restart oracle-xe

Flowise Chatbot (LXC 104)

pct exec 104 -- systemctl status flowise
pct exec 104 -- systemctl restart flowise
pct exec 104 -- journalctl -u flowise -f

Validation Scripts

# UPS monthly test
proxmox/cluster/ups/scripts/ups-monthly-test.sh

# SSL certificate monitoring
proxmox/vm201-windows/scripts/monitor-ssl-certificates.sh

# Oracle backup monitoring
proxmox/vm109-windows-dr/scripts/oracle-backup-monitor-proxmox.sh

Network Layout

Service IP Address Port Purpose
pvemini (main host) 10.0.20.201 8006 Proxmox GUI
Oracle XE 21c 10.0.20.121 1521 Production database
Oracle XE 18c 10.0.20.121 1522 Export compatibility (TSTZ 31)
Flowise 10.0.20.161 3000 Chatbot UI
Gitea 10.0.20.165 3000 Git server
Docker + Portainer + sbx 10.0.20.113 9000/9443 Docker host, sandbox-uri agenți AI
Claude Agent 10.0.20.171 22 Development (also via Tailscale: 100.95.55.51)
MoltBot 10.0.20.173 22 AI Telegram Bot (also via Tailscale: 100.120.119.70)
Primary Oracle 10.0.20.36 1521 Windows production
DR Oracle 10.0.20.37 1521 Disaster recovery

SQL Migration Conventions

When writing Oracle migration scripts, follow the naming convention:

ff_YYYY_MM_DD_##_TYPE.sql

Where TYPE is: DDL, DML, VIEW, PACK, TRIG, etc.

Always reference system_instructions/system_prompt.md for:

  • Oracle 10g compatibility requirements
  • PACK_MIGRARE package usage
  • Migration script patterns and examples

Custom Claude Code Commands

  • /ultimate_validate_command - Generate comprehensive validation commands
  • /plan-handover - Save implementation plan for session handover
  • /branch-plan-handover - Create branch and save plan
  • /context-handover - Save context for next session

Git Workflow

  • Remote: http://gitea:3000/romfast/ROMFASTSQL.git
  • Main branch: master
  • Feature branches merged directly to master