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
133 lines
5.8 KiB
Markdown
133 lines
5.8 KiB
Markdown
# 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
|
|
```bash
|
|
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)
|
|
```bash
|
|
pct exec 108 -- docker exec -it oracle-xe sqlplus / as sysdba
|
|
pct exec 108 -- docker restart oracle-xe
|
|
```
|
|
|
|
### Flowise Chatbot (LXC 104)
|
|
```bash
|
|
pct exec 104 -- systemctl status flowise
|
|
pct exec 104 -- systemctl restart flowise
|
|
pct exec 104 -- journalctl -u flowise -f
|
|
```
|
|
|
|
### Validation Scripts
|
|
```bash
|
|
# 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
|