Compare commits

...

3 Commits

Author SHA1 Message Date
Marius
90d77704d6 Reorganize Proxmox documentation with clear structure and VM/LXC mapping
## Changes

### Documentation Reorganization
- **README.md**: Complete restructure with logical sections
  - Infrastructure General (proxmox-ssh-guide.md)
  - LXC Containers (oracle-database-lxc108.md)
  - Virtual Machines (vm201-*.md)
  - Cluster-Wide Resources (cluster-ha-monitor.sh, ups/)
  - Archived/Decommissioned (archived-vm107-monitor.sh)
  - Added quick navigation "Am nevoie să..." section
  - Added recommended workflows
  - Added complete directory structure map

- **proxmox-ssh-guide.md**: Added documentation references section
  - Clear links to all related documentation
  - When to use each document
  - Quick start snippets for each resource

### File Renames for Clarity
- `certificat-letsencrypt-iis.md` → `vm201-certificat-letsencrypt-iis.md`
- `troubleshooting-vm201-backup-nfs.md` → `vm201-troubleshooting-backup-nfs.md`
- `ha-monitor.sh` → `cluster-ha-monitor.sh`
- `vm107-monitor.sh` → `archived-vm107-monitor.sh`

### New Documentation
- **vm201-windows11.md**: Complete VM 201 documentation
  - Hardware configuration
  - Installed services (IIS, SQL*Plus, WinNUT, RDP)
  - Network configuration
  - Backup and recovery procedures
  - Common troubleshooting

## Benefits
- Clear naming convention: VM/LXC/Cluster prefixes
- Central index in README.md with navigation
- Cross-references between documents
- Complete VM 201 documentation suite
- Clear archival of decommissioned resources

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-19 13:43:44 +02:00
Marius
cd7b2ed9e7 Clarify storage configuration and fix node names
Storage Configuration improvements:
- Add "Noduri" column showing which nodes have access to each storage
- Clarify that 'local' is separate on each node (non-shared)
- Clarify that 'local-zfs' is shared across pvemini, pve1, pveelite
- Clarify that 'backup' is only on pvemini (10.0.20.201)
- Add detailed explanations for each storage type
- Add storage paths section with important locations

Node name corrections:
- Fix node name: pve2 → pveelite (correct cluster name)
- Update all references across proxmox-ssh-guide.md and README.md
- Add node descriptions in tables for clarity

Benefits:
- Users now know exactly which storage is available on which nodes
- Clear distinction between shared and non-shared storage
- Correct node naming throughout documentation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-19 13:01:08 +02:00
Marius
f1b982794b Reorganize Oracle and Proxmox documentation structure
- Move oracle/CONEXIUNI-ORACLE.md → proxmox/oracle-database-lxc108.md
- Create proxmox/README.md as documentation index
- Update proxmox-ssh-guide.md:
  * Remove VM 107 references (decommissioned)
  * Update LXC and VM tables with IP addresses
  * Add IP address map for all services
  * Simplify Oracle section (detailed info in oracle-database-lxc108.md)
  * Update backup job configuration

Benefits:
- All infrastructure docs in proxmox/ directory
- Clear separation: general Proxmox (proxmox-ssh-guide.md) vs Oracle-specific (oracle-database-lxc108.md)
- No duplicate information between files
- Easy navigation with README.md index

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-19 12:58:22 +02:00
9 changed files with 1516 additions and 291 deletions

View File

@@ -1,250 +0,0 @@
# Conexiuni Oracle - ROMFASTSQL
## 🐳 Oracle XE 21c - Docker în LXC 108 (Proxmox)
### Informații Server
- **Host**: 10.0.20.105 (LXC 108 pe Proxmox 10.0.20.201)
- **Port**: 1521
- **Container Docker**: oracle-xe
- **Versiune**: Oracle Database 21c Express Edition
- **CDB**: XE
- **User SYS**: sys / romfastsoft (CONTAINER=ALL)
- **User SYSTEM**: system / romfastsoft (CONTAINER=ALL)
### PDB-uri Disponibile
#### 1. PDB: ROA (Producție)
```bash
# Connection String
Host: 10.0.20.105
Port: 1521
Service Name: roa
```
**Useri:**
- **SYS**: sys / romfastsoft (as SYSDBA)
- **SYSTEM**: system / romfastsoft
- **CONTAFIN_ORACLE**: CONTAFIN_ORACLE / OraclePass123
- **MARIUSM_AUTO**: MARIUSM_AUTO / OraclePass123
**SQL*Plus:**
```bash
sqlplus sys/romfastsoft@10.0.20.105:1521/roa as sysdba
sqlplus system/romfastsoft@10.0.20.105:1521/roa
sqlplus CONTAFIN_ORACLE/OraclePass123@10.0.20.105:1521/roa
sqlplus MARIUSM_AUTO/OraclePass123@10.0.20.105:1521/roa
```
**JDBC:**
```
jdbc:oracle:thin:@10.0.20.105:1521/roa
```
**TNS:**
```
ROA =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.20.105)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = roa)
)
)
```
---
#### 2. PDB: ROA2 (Template pentru export DMP)
```bash
# Connection String
Host: 10.0.20.105
Port: 1521
Service Name: roa2
```
**Useri:**
- **SYS**: sys / romfastsoft (as SYSDBA)
- **SYSTEM**: system / romfastsoft
- **CONTAFIN_ORACLE**: CONTAFIN_ORACLE / ROMFASTSOFT
- **FIRMANOUA**: FIRMANOUA / ROMFASTSOFT
**SQL*Plus:**
```bash
sqlplus sys/romfastsoft@10.0.20.105:1521/roa2 as sysdba
sqlplus system/romfastsoft@10.0.20.105:1521/roa2
sqlplus CONTAFIN_ORACLE/ROMFASTSOFT@10.0.20.105:1521/roa2
sqlplus FIRMANOUA/ROMFASTSOFT@10.0.20.105:1521/roa2
```
**JDBC:**
```
jdbc:oracle:thin:@10.0.20.105:1521/roa2
```
**TNS:**
```
ROA2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.20.105)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = roa2)
)
)
```
**Caracteristici ROA2:**
- Template pentru scheme noi (export DMP)
- Tablespace ROA: 2GB (pentru teste/template)
- Profil DEFAULT: parole nelimitate (PASSWORD_LIFE_TIME UNLIMITED)
- Obiecte SYS custom: AUTH_PACK, UPDATESQLPLUS, EXECUTESCRIPTOS, UTL_MAIL
- 232 sinonime publice CONTAFIN_ORACLE
- 149 grant-uri către PUBLIC
---
### Acces SSH/Docker
**SSH Proxmox:**
```bash
ssh root@10.0.20.201
```
**Acces LXC 108:**
```bash
# Din Proxmox
pct exec 108 -- bash
# Acces direct Oracle container
pct exec 108 -- docker exec -it oracle-xe bash
# SQL*Plus direct în container
pct exec 108 -- docker exec oracle-xe sqlplus sys/OraclePass123@localhost:1521/roa as sysdba
```
**Comenzi utile:**
```bash
# Status PDB-uri
echo "SELECT name, open_mode FROM v\$pdbs;" | sqlplus -s sys/romfastsoft@localhost:1521/XE as sysdba
# Verificare tablespace-uri ROA2
echo "SELECT tablespace_name, bytes/1024/1024 as MB FROM dba_data_files WHERE tablespace_name='ROA';" | sqlplus -s sys/romfastsoft@localhost:1521/roa2 as sysdba
# Status obiecte
echo "SELECT owner, COUNT(*), SUM(CASE WHEN status='VALID' THEN 1 ELSE 0 END) as valid FROM dba_objects WHERE owner IN ('CONTAFIN_ORACLE', 'FIRMANOUA') GROUP BY owner;" | sqlplus -s sys/romfastsoft@localhost:1521/roa2 as sysdba
```
---
## 🖥️ Oracle 10g - VM 107 (Windows 7)
### Informații Server
- **Host**: 10.0.20.122 (VM Windows 7)
- **Port**: 1521
- **Versiune**: Oracle Database 10g Release 10.2.0.1.0
- **SID**: ORCL
- **User SYS**: sys / oracle (as SYSDBA)
### Conexiuni
**SQL*Plus:**
```bash
sqlplus sys/oracle@10.0.20.122:1521/ORCL as sysdba
sqlplus CONTAFIN_ORACLE/OraclePass123@10.0.20.122:1521/ORCL
```
**JDBC:**
```
jdbc:oracle:thin:@10.0.20.122:1521:ORCL
```
**TNS:**
```
ORCL_VM107 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.20.122)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = ORCL)
)
)
```
**Note:**
- Sursă pentru export DMP Oracle 10g → Oracle 21c
- Archive DMP exportate: `firmanoua.zip` (contafin_oracle.dmp + firmanoua.dmp)
- Folosit pentru migrare către Oracle XE 21c
---
## 📝 Notițe Importante
### Diferențe Oracle 10g vs 21c
- Oracle 10g folosește **SID** (ORCL)
- Oracle 21c folosește **SERVICE_NAME** (roa, roa2)
- Migrare: Export DMP Oracle 10g → Import Data Pump Oracle 21c (`impdp`)
### Profile Parole
- **ROA**: Parolele pot expira (setări default Oracle)
- **ROA2**: Parolele NU expiră (PASSWORD_LIFE_TIME UNLIMITED)
### Backup și Export
```bash
# Export schema FIRMANOUA din ROA2
expdp system/romfastsoft@10.0.20.105:1521/roa2 \
SCHEMAS=FIRMANOUA \
DIRECTORY=DATA_PUMP_DIR \
DUMPFILE=firmanoua_template_%U.dmp \
LOGFILE=firmanoua_template.log \
PARALLEL=2
# Export schema CONTAFIN_ORACLE din ROA2
expdp system/romfastsoft@10.0.20.105:1521/roa2 \
SCHEMAS=CONTAFIN_ORACLE \
DIRECTORY=DATA_PUMP_DIR \
DUMPFILE=contafin_template_%U.dmp \
LOGFILE=contafin_template.log \
PARALLEL=2
```
---
## 🔧 Troubleshooting
### Verificare conexiune
```bash
# Test ping
ping 10.0.20.105
# Test port Oracle
nc -zv 10.0.20.105 1521
# Test SQL*Plus
sqlplus sys/romfastsoft@10.0.20.105:1521/roa as sysdba
```
### Restart Oracle Container
```bash
ssh root@10.0.20.201
pct exec 108 -- docker restart oracle-xe
# Verificare status
pct exec 108 -- docker ps
pct exec 108 -- docker logs oracle-xe --tail 50
```
### Verificare PDB status
```bash
# Open PDB dacă este MOUNTED
pct exec 108 -- docker exec oracle-xe sqlplus -s sys/romfastsoft@localhost:1521/XE as sysdba <<EOF
ALTER PLUGGABLE DATABASE roa2 OPEN;
ALTER PLUGGABLE DATABASE roa2 SAVE STATE;
EXIT;
EOF
```
---
**Data ultimei actualizări**: 2025-10-01
**Autor**: Marius Mutu
**Proiect**: ROMFASTSQL - Migrare Oracle 10g → Oracle XE 21c

349
proxmox/README.md Normal file
View File

@@ -0,0 +1,349 @@
# Documentație Proxmox Infrastructure - ROMFASTSQL
## 📚 Structură Documentație
### 🏢 Infrastructură Generală
#### **proxmox-ssh-guide.md** - Ghid Complet Proxmox Cluster
**Când să folosești:** Pentru orice operațiuni legate de infrastructura Proxmox
**Conține:**
- Cluster Proxmox (3 noduri: pve1, pvemini, pveelite)
- Configurare SSH și acces noduri
- **Lista completă LXC containers cu IP-uri**
- **Lista completă Virtual Machines**
- Comenzi Proxmox generale (`pct`, `qm`, `pvesm`)
- Storage configuration (local-zfs, backup, backup-nfs)
- Backup jobs și politici retention
- **Hartă completă IP-uri** toate serviciile
- Troubleshooting Proxmox
---
### 📦 LXC Containers
#### **oracle-database-lxc108.md** - Oracle Database XE 21c
**LXC:** 108 (central-oracle) - IP: 10.0.20.121
**Host Proxmox:** pvemini (10.0.20.201)
**Când să folosești:** Pentru orice operațiuni legate de Oracle Database
**Conține:**
- Detalii container LXC 108 (Oracle XE 21c în Docker)
- **PDB-uri (roa, roa2) - toate detaliile**
- **Useri și parole Oracle** pentru fiecare PDB
- **Connection strings** (SQL*Plus, JDBC, TNS)
- Export/Import Data Pump (expdp, impdp)
- Comenzi SQL pentru verificări (tablespace, obiecte, useri)
- Troubleshooting Oracle specific
- Diferențe Oracle 10g vs 21c (istoric migrare)
---
### 💻 Virtual Machines
#### **vm201-windows11.md** - VM 201 (roacentral)
**VM:** 201 (roacentral) - Windows 11
**Host Proxmox:** pvemini (10.0.20.201)
**Când să folosești:** Pentru informații generale despre VM 201
**Conține:**
- Configurație hardware VM
- Rol și utilizare (client aplicații Windows, SQL*Plus, reverse proxy IIS)
- Servicii instalate
- Configurare rețea
- Backup și recovery
#### **vm201-certificat-letsencrypt-iis.md** - Certificat SSL IIS
**VM:** 201 (roacentral)
**Când să folosești:** Pentru configurare și reînnoire certificate Let's Encrypt pe IIS
**Conține:**
- Instalare Win-ACME pentru certificate Let's Encrypt
- Configurare IIS cu SNI (Server Name Indication)
- Binding-uri pentru multiple domenii
- Reînnoire automată certificate
- Troubleshooting SSL/TLS
- Scripturi PowerShell pentru configurare automată
#### **vm201-troubleshooting-backup-nfs.md** - Incident VM 201
**VM:** 201 (roacentral)
**Data:** 2025-10-08
**Când să folosești:** Pentru referință troubleshooting probleme similare
**Conține:**
- Incident VM locked și backup NFS blocat
- Diagnostic și rezolvare pas cu pas
- Comenzi HA management (ha-manager)
- Force reboot și recovery
- Lecții învățate și preventie
- Comenzi utile pentru diagnostic viitor
---
### 🌐 Cluster-Wide Resources
#### **cluster-ha-monitor.sh** - Monitorizare High Availability
**Scope:** Întreg cluster Proxmox (toate nodurile)
**Locație:** `/opt/scripts/cluster-ha-monitor.sh` pe noduri
**Când să folosești:** Pentru monitorizare automată HA cluster
**Conține:**
- Script bash monitorizare HA services
- Verificare quorum cluster
- Verificare noduri online
- Notificări prin PVE::Notify (email)
- Template-uri Handlebars pentru emailuri
- Logging automat
- Cron setup pentru rulare automată
**Instalare:**
```bash
scp proxmox/cluster-ha-monitor.sh root@10.0.20.201:/opt/scripts/
ssh root@10.0.20.201 "chmod +x /opt/scripts/cluster-ha-monitor.sh"
ssh root@10.0.20.201 "/opt/scripts/cluster-ha-monitor.sh --create-templates"
```
**Rulare:**
```bash
# Verificare normală (silent, trimite notificare)
/opt/scripts/cluster-ha-monitor.sh
# Verificare verbose (afișare pe console)
/opt/scripts/cluster-ha-monitor.sh -v
```
#### **ups/** - Sistem UPS pentru Cluster
**Scope:** Întreg cluster Proxmox (toate nodurile)
**Hardware:** INNO TECH USB UPS conectat la pvemini
**Când să folosești:** Pentru configurare, monitorizare și mentenanță UPS
**Conține:**
- `ups/README.md` - Ghid complet UPS
- `ups/docs/` - Documentație detaliată
- `INSTALARE-NUT.md` - Instalare NUT server pe Proxmox
- `INSTALARE-WINNUT.md` - Instalare client WinNUT pe Windows
- `UPS-SHUTDOWN-README.md` - Sistem shutdown orchestrat automat
- `UPS-MONTHLY-TEST.md` - Test lunar automat baterie
- `UPS-BATTERY-REPLACEMENT.md` - Procedură înlocuire baterie
- `ups/scripts/` - Scripturi automate
- `ups-shutdown-cluster.sh` - Shutdown orchestrat cluster
- `ups-shutdown-test.sh` - Test dry-run shutdown
- `ups-monthly-test.sh` - Test lunar baterie automat
- `ups-maintenance-shutdown.sh` - Shutdown pentru mentenanță
- `ups/config/` - Fișiere configurare NUT
**Quick Start:**
```bash
# Status UPS
ssh root@10.0.20.201 "upsc nutdev1"
# Test dry-run shutdown
ssh root@10.0.20.201 "/usr/local/bin/ups-shutdown-test.sh"
# Vezi ultimul test lunar baterie
ssh root@10.0.20.201 "tail -50 /var/log/ups-monthly-test.log"
```
---
### 📂 Archived / Decommissioned
#### **archived-vm107-monitor.sh** - VM 107 Monitor (DECOMMISSIONED)
**VM:** 107 (Oracle 10g Windows 7) - **NU MAI EXISTĂ**
**Status:** Script arhivat pentru referință istorică
**Notă:** VM 107 a fost decommissioned și înlocuit cu LXC 108 (Oracle XE 21c).
Vezi `oracle-database-lxc108.md` pentru sistemul actual.
---
## 🚀 Quick Start
### Acces în Proxmox
```bash
ssh root@10.0.20.201
```
### Acces în LXC 108 (Oracle)
```bash
ssh root@10.0.20.201
pct enter 108
```
### Restart Oracle Database
```bash
# Rapid (recomandat)
ssh root@10.0.20.201 "pct exec 108 -- docker restart oracle-xe"
# Restart complet LXC
ssh root@10.0.20.201 "pct restart 108"
```
### Conexiune Oracle
```bash
# SQL*Plus la PDB roa
sqlplus sys/romfastsoft@10.0.20.121:1521/roa as sysdba
# JDBC connection string
jdbc:oracle:thin:@10.0.20.121:1521/roa
```
---
## 📋 Hartă Rapidă Resurse
### Noduri Proxmox
| Nod | IP | Web GUI |
|-----|--------|---------|
| pve1 | 10.0.20.200 | https://10.0.20.200:8006 |
| **pvemini** | 10.0.20.201 | https://10.0.20.201:8006 |
| pveelite | 10.0.20.202 | https://10.0.20.202:8006 |
### LXC Containers (Servicii Active)
| VMID | Nume | IP | Serviciu | Documentație |
|------|------|-----|----------|--------------|
| 100 | portainer | 10.0.20.170 | Docker Management | proxmox-ssh-guide.md |
| 103 | dokploy | 10.0.20.167 | Deployment Platform | proxmox-ssh-guide.md |
| 104 | flowise | 10.0.20.161 | Flowise AI + Ollama | proxmox-ssh-guide.md |
| 106 | gitea | 10.0.20.165 | Git Server | proxmox-ssh-guide.md |
| **108** | **central-oracle** | **10.0.20.121** | **Oracle XE 21c** | **oracle-database-lxc108.md** |
### Virtual Machines
| VMID | Nume | OS | IP/Rol | Documentație |
|------|------|-----|--------|--------------|
| **201** | **roacentral** | **Windows 11** | **Client aplicații** | **vm201-windows11.md** |
| 300 | Win11-Template | Windows 11 | Template clonare | proxmox-ssh-guide.md |
---
## 🔗 Link-uri Utile
### Proxmox Cluster
- **pve1:** https://10.0.20.200:8006
- **pvemini:** https://10.0.20.201:8006
- **pveelite:** https://10.0.20.202:8006
### Oracle Database (LXC 108)
- Oracle Listener: `10.0.20.121:1521`
- Oracle EM Express: http://10.0.20.121:5500/em
- Portainer: http://10.0.20.121:9443
### Alte Servicii
- Portainer Principal: http://10.0.20.170:9443
- Gitea: http://10.0.20.165:3000
- Dokploy: http://10.0.20.167:3000
- Flowise AI: http://10.0.20.161:3000
---
## 📖 Navigare Rapidă - Am nevoie să...
### Infrastructură Proxmox
- **Văd toate VM-urile și LXC-urile** → `proxmox-ssh-guide.md`
- **Configurez SSH pe Proxmox** → `proxmox-ssh-guide.md` → "Configurare Inițială SSH"
- **Văd toate IP-urile** → `proxmox-ssh-guide.md` → "Hartă Rapidă IP-uri"
- **Creez backup VM/LXC** → `proxmox-ssh-guide.md` → "Gestiune Backup-uri"
### Oracle Database (LXC 108)
- **Restart Oracle Database** → `proxmox-ssh-guide.md` → "LXC 108 - Acces Rapid"
- **Conectez la Oracle Database** → `oracle-database-lxc108.md` → "Conexiuni Oracle"
- **Export/Import DMP Oracle** → `oracle-database-lxc108.md` → "Export și Import Data Pump"
- **Verific PDB-uri Oracle** → `oracle-database-lxc108.md` → "Verificări și Comenzi SQL"
### VM 201 (Windows 11)
- **Informații generale VM 201** → `vm201-windows11.md`
- **Configurez certificate SSL IIS** → `vm201-certificat-letsencrypt-iis.md`
- **Reînnoiesc certificate Let's Encrypt** → `vm201-certificat-letsencrypt-iis.md` → "Reînnoire"
- **Rezolv probleme VM locked** → `vm201-troubleshooting-backup-nfs.md` → "VM 201 Locked"
- **Rezolv probleme backup NFS** → `vm201-troubleshooting-backup-nfs.md` → "Storage backup-nfs"
### Cluster-Wide Resources
- **Monitorizez HA cluster** → `cluster-ha-monitor.sh` (script)
- **Configurez sistem UPS** → `ups/README.md`
- **Test shutdown cluster UPS** → `ups/docs/UPS-SHUTDOWN-README.md`
- **Test lunar baterie UPS** → `ups/docs/UPS-MONTHLY-TEST.md`
- **Înlocuiesc baterie UPS** → `ups/docs/UPS-BATTERY-REPLACEMENT.md`
---
## 📁 Structură Completă Directoare
```
proxmox/
├── README.md # Acest fișier (index)
├── proxmox-ssh-guide.md # Ghid general Proxmox
├── oracle-database-lxc108.md # LXC 108 - Oracle XE 21c
├── vm201-windows11.md # VM 201 - Info generală
├── vm201-certificat-letsencrypt-iis.md # VM 201 - SSL certificates
├── vm201-troubleshooting-backup-nfs.md # VM 201 - Incident 2025-10-08
├── cluster-ha-monitor.sh # Script monitorizare HA cluster
├── ups/ # Sistem UPS cluster
│ ├── README.md # Ghid complet UPS
│ ├── docs/ # Documentație detaliată
│ │ ├── INSTALARE-NUT.md
│ │ ├── INSTALARE-WINNUT.md
│ │ ├── UPS-SHUTDOWN-README.md
│ │ ├── UPS-MONTHLY-TEST.md
│ │ └── UPS-BATTERY-REPLACEMENT.md
│ ├── scripts/ # Scripturi automate UPS
│ │ ├── ups-shutdown-cluster.sh
│ │ ├── ups-shutdown-test.sh
│ │ ├── ups-monthly-test.sh
│ │ └── ups-maintenance-shutdown.sh
│ └── config/ # Configurare NUT
│ ├── ups.conf
│ ├── upsd.conf
│ ├── upsd.users
│ ├── upsmon.conf
│ └── upssched.conf
├── scripts/ # Scripturi utilitare
│ ├── configure-iis-sni.ps1 # Configurare SNI IIS (VM 201)
│ └── verify-letsencrypt.ps1 # Verificare certificate (VM 201)
└── archived-vm107-monitor.sh # DECOMMISSIONED - VM 107
```
---
## 🎯 Flux de Lucru Recomandat
### Pentru o problemă nouă Oracle
1. **Citește:** `oracle-database-lxc108.md` → "Troubleshooting Oracle"
2. **Verifică:** Status PDB, conexiune, logs
3. **Documentează:** Notează problema și rezolvarea pentru viitor
### Pentru configurare nouă VM 201
1. **Citește:** `vm201-windows11.md` pentru context
2. **Pentru SSL:** Vezi `vm201-certificat-letsencrypt-iis.md`
3. **Testează:** Verifică configurația
4. **Documentează:** Actualizează documentele relevante
### Pentru incident Proxmox
1. **Diagnostică:** Folosește `proxmox-ssh-guide.md` → "Troubleshooting"
2. **Referință:** Vezi `vm201-troubleshooting-backup-nfs.md` pentru exemple
3. **Rezolvă:** Aplică comenzile din ghiduri
4. **Documentează:** Creează un fișier nou troubleshooting pentru incident
### Pentru mentenanță UPS
1. **Citește:** `ups/README.md` pentru overview
2. **Verifică:** Status UPS și baterie
3. **Test:** Rulează `ups-shutdown-test.sh` pentru dry-run
4. **Mentenanță:** Vezi `ups/docs/UPS-BATTERY-REPLACEMENT.md` dacă e nevoie
---
**Ultima actualizare:** 2025-11-19
**Autor:** Marius Mutu
**Proiect:** ROMFASTSQL - Infrastructure Documentation

View File

@@ -0,0 +1,435 @@
# Oracle Database XE 21c - LXC 108 (Proxmox)
## 📌 Informații Container LXC
- **VMID:** 108
- **Nume:** central-oracle
- **IP:** 10.0.20.121
- **Host Proxmox:** 10.0.20.201 (pvemini)
- **CPU:** 2 cores
- **RAM:** 4 GB
- **Storage:** 50 GB (local-zfs)
- **Status:** Running
- **OS:** Ubuntu/Debian (LXC)
- **Docker Container:** oracle-xe (Oracle XE 21c)
---
## 🐳 Oracle XE 21c în Docker
### Informații Container Docker
- **Container Name:** oracle-xe
- **Image:** container-registry.oracle.com/database/express:21.3.0-xe
- **Versiune:** Oracle Database 21c Express Edition
- **Status:** Running (Up 3+ weeks, healthy)
- **Portainer:** http://10.0.20.121:9443
### Porturi Expuse
| Port | Serviciu | Descriere |
|------|----------|-----------|
| 1521 | Oracle Listener | Conexiuni SQL*Plus, JDBC |
| 5500 | Oracle EM Express | Enterprise Manager Web Interface |
---
## 🔗 Conexiuni Oracle Database
### Container Database (CDB)
- **CDB Name:** XE
- **User SYS:** sys / romfastsoft (CONTAINER=ALL)
- **User SYSTEM:** system / romfastsoft (CONTAINER=ALL)
### Conexiune la CDB
```bash
# SQL*Plus
sqlplus sys/romfastsoft@10.0.20.121:1521/XE as sysdba
sqlplus system/romfastsoft@10.0.20.121:1521/XE
# JDBC
jdbc:oracle:thin:@10.0.20.121:1521/XE
```
---
## 📊 Pluggable Databases (PDB-uri)
### 1. PDB: ROA (Producție)
**Informații Generale:**
- **Service Name:** roa
- **Scop:** Bază de date producție pentru aplicații ROMFAST
**Useri și Parole:**
| User | Password | Rol |
|------|----------|-----|
| sys | romfastsoft | SYSDBA |
| system | romfastsoft | SYSTEM |
| CONTAFIN_ORACLE | OraclePass123 | Application schema |
| MARIUSM_AUTO | OraclePass123 | Application schema |
**SQL*Plus:**
```bash
sqlplus sys/romfastsoft@10.0.20.121:1521/roa as sysdba
sqlplus system/romfastsoft@10.0.20.121:1521/roa
sqlplus CONTAFIN_ORACLE/OraclePass123@10.0.20.121:1521/roa
sqlplus MARIUSM_AUTO/OraclePass123@10.0.20.121:1521/roa
```
**JDBC:**
```
jdbc:oracle:thin:@10.0.20.121:1521/roa
```
**TNS Entry:**
```
ROA =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.20.121)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = roa)
)
)
```
---
### 2. PDB: ROA2 (Template pentru Export DMP)
**Informații Generale:**
- **Service Name:** roa2
- **Scop:** Template pentru scheme noi, export DMP pentru clienți noi
**Useri și Parole:**
| User | Password | Rol |
|------|----------|-----|
| sys | romfastsoft | SYSDBA |
| system | romfastsoft | SYSTEM |
| CONTAFIN_ORACLE | ROMFASTSOFT | Template schema |
| FIRMANOUA | ROMFASTSOFT | Template schema (client nou) |
**SQL*Plus:**
```bash
sqlplus sys/romfastsoft@10.0.20.121:1521/roa2 as sysdba
sqlplus system/romfastsoft@10.0.20.121:1521/roa2
sqlplus CONTAFIN_ORACLE/ROMFASTSOFT@10.0.20.121:1521/roa2
sqlplus FIRMANOUA/ROMFASTSOFT@10.0.20.121:1521/roa2
```
**JDBC:**
```
jdbc:oracle:thin:@10.0.20.121:1521/roa2
```
**TNS Entry:**
```
ROA2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.20.121)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = roa2)
)
)
```
**Caracteristici ROA2:**
- Tablespace ROA: 2GB (pentru teste/template)
- Profil DEFAULT: parole nelimitate (PASSWORD_LIFE_TIME UNLIMITED)
- Obiecte SYS custom: AUTH_PACK, UPDATESQLPLUS, EXECUTESCRIPTOS, UTL_MAIL
- 232 sinonime publice CONTAFIN_ORACLE
- 149 grant-uri către PUBLIC
---
## 🔧 Acces la Oracle prin LXC
> **IMPORTANT:** Nu ai nevoie de user/parolă pentru LXC 108!
> Accesul se face prin Proxmox folosind comenzile `pct`.
### Metoda 1: Intrare în LXC 108
```bash
# SSH în Proxmox
ssh root@10.0.20.201
# Intrare în LXC 108
pct enter 108
# Acum poți folosi comenzi Docker direct
docker ps
docker logs oracle-xe --tail 50
```
### Metoda 2: Execuție Directă din Proxmox
```bash
# Verificare PDB-uri
ssh root@10.0.20.201 'pct exec 108 -- docker exec oracle-xe bash -c "echo \"SELECT name, open_mode FROM v\\\$pdbs;\" | sqlplus -s sys/romfastsoft@localhost:1521/XE as sysdba"'
# Restart Oracle container
ssh root@10.0.20.201 "pct exec 108 -- docker restart oracle-xe"
```
### Metoda 3: SQL*Plus Direct în Container
```bash
# Intrare în container Oracle
pct exec 108 -- docker exec -it oracle-xe bash
# SQL*Plus din container
docker exec oracle-xe sqlplus sys/romfastsoft@localhost:1521/roa as sysdba
```
---
## 📦 Export și Import Data Pump
### Export Schema FIRMANOUA din ROA2
```bash
# Export complet schema
ssh root@10.0.20.201 'pct exec 108 -- docker exec oracle-xe expdp system/romfastsoft@localhost:1521/roa2 \
SCHEMAS=FIRMANOUA \
DIRECTORY=DATA_PUMP_DIR \
DUMPFILE=firmanoua_template_%U.dmp \
LOGFILE=firmanoua_template.log \
PARALLEL=2'
```
### Export Schema CONTAFIN_ORACLE din ROA2
```bash
ssh root@10.0.20.201 'pct exec 108 -- docker exec oracle-xe expdp system/romfastsoft@localhost:1521/roa2 \
SCHEMAS=CONTAFIN_ORACLE \
DIRECTORY=DATA_PUMP_DIR \
DUMPFILE=contafin_template_%U.dmp \
LOGFILE=contafin_template.log \
PARALLEL=2'
```
### Import în PDB Nou
```bash
# Import schema în PDB existent
ssh root@10.0.20.201 'pct exec 108 -- docker exec oracle-xe impdp system/romfastsoft@localhost:1521/roa \
SCHEMAS=FIRMANOUA \
DIRECTORY=DATA_PUMP_DIR \
DUMPFILE=firmanoua_template_%U.dmp \
LOGFILE=firmanoua_import.log \
PARALLEL=2'
```
### Copiere Fișiere DMP din/în Container
```bash
# Copiere DMP din Oracle container în LXC 108
ssh root@10.0.20.201 "pct exec 108 -- docker cp oracle-xe:/opt/oracle/admin/XE/dpdump/firmanoua_template_01.dmp /tmp/"
# Copiere DMP din LXC 108 în WSL
scp root@10.0.20.201:/var/lib/lxc/108/rootfs/tmp/firmanoua_template_01.dmp /mnt/e/backups/
# Copiere DMP în Oracle container (pentru import)
ssh root@10.0.20.201 "pct exec 108 -- docker cp /tmp/firmanoua_template_01.dmp oracle-xe:/opt/oracle/admin/XE/dpdump/"
```
---
## 🔍 Verificări și Comenzi SQL Utile
### Status PDB-uri
```sql
-- Verificare status PDB-uri
SELECT name, open_mode, restricted FROM v$pdbs;
-- Deschidere PDB (dacă e MOUNTED)
ALTER PLUGGABLE DATABASE roa OPEN;
ALTER PLUGGABLE DATABASE roa2 OPEN;
ALTER PLUGGABLE DATABASE ALL SAVE STATE;
```
### Verificare Tablespace-uri
```sql
-- Tablespace-uri și utilizare în ROA2
SELECT
tablespace_name,
ROUND(bytes/1024/1024, 2) as MB,
ROUND(maxbytes/1024/1024, 2) as MAX_MB,
autoextensible
FROM dba_data_files
WHERE tablespace_name='ROA';
-- Spațiu liber
SELECT
tablespace_name,
ROUND(SUM(bytes)/1024/1024, 2) as FREE_MB
FROM dba_free_space
GROUP BY tablespace_name;
```
### Status Obiecte și Scheme
```sql
-- Număr obiecte per schema în ROA2
SELECT
owner,
COUNT(*) total_objects,
SUM(CASE WHEN status='VALID' THEN 1 ELSE 0 END) valid_objects,
SUM(CASE WHEN status='INVALID' THEN 1 ELSE 0 END) invalid_objects
FROM dba_objects
WHERE owner IN ('CONTAFIN_ORACLE', 'FIRMANOUA')
GROUP BY owner;
-- Tipuri obiecte
SELECT owner, object_type, COUNT(*)
FROM dba_objects
WHERE owner IN ('CONTAFIN_ORACLE', 'FIRMANOUA')
GROUP BY owner, object_type
ORDER BY owner, COUNT(*) DESC;
```
### Useri și Profiluri
```sql
-- Verificare useri și profile în PDB
SELECT username, account_status, profile, created
FROM dba_users
WHERE username IN ('CONTAFIN_ORACLE', 'FIRMANOUA', 'MARIUSM_AUTO')
ORDER BY created DESC;
-- Verificare limită parole (PASSWORD_LIFE_TIME)
SELECT profile, resource_name, limit
FROM dba_profiles
WHERE resource_name = 'PASSWORD_LIFE_TIME'
ORDER BY profile;
```
### Sinonime Publice
```sql
-- Verificare sinonime publice CONTAFIN_ORACLE
SELECT COUNT(*) as total_synonyms
FROM dba_synonyms
WHERE owner = 'PUBLIC'
AND table_owner = 'CONTAFIN_ORACLE';
-- Detalii sinonime
SELECT synonym_name, table_owner, table_name
FROM dba_synonyms
WHERE owner = 'PUBLIC'
AND table_owner = 'CONTAFIN_ORACLE'
ORDER BY synonym_name;
```
### Grant-uri către PUBLIC
```sql
-- Număr grant-uri către PUBLIC
SELECT COUNT(*) as total_grants
FROM dba_tab_privs
WHERE grantee = 'PUBLIC'
AND owner IN ('CONTAFIN_ORACLE', 'SYS');
-- Detalii grant-uri
SELECT owner, table_name, privilege, grantee
FROM dba_tab_privs
WHERE grantee = 'PUBLIC'
AND owner IN ('CONTAFIN_ORACLE', 'SYS')
ORDER BY owner, table_name;
```
---
## 🚨 Troubleshooting Oracle
### Verificare Conexiune Oracle
```bash
# Test ping LXC 108
ping -c 3 10.0.20.121
# Test port Oracle listener
nc -zv 10.0.20.121 1521
# Test SQL*Plus conexiune
sqlplus sys/romfastsoft@10.0.20.121:1521/roa as sysdba
```
### Restart Oracle Database
```bash
# Opțiunea 1: Restart container Docker (RAPID)
ssh root@10.0.20.201 "pct exec 108 -- docker restart oracle-xe"
# Opțiunea 2: Restart LXC complet
ssh root@10.0.20.201 "pct restart 108"
# Verificare după restart
ssh root@10.0.20.201 "pct exec 108 -- docker ps"
```
### Verificare Status Container
```bash
# Status Docker container
ssh root@10.0.20.201 "pct exec 108 -- docker ps"
# Healthcheck Oracle
ssh root@10.0.20.201 "pct exec 108 -- docker inspect oracle-xe | grep -A 10 Health"
# Loguri Oracle
ssh root@10.0.20.201 "pct exec 108 -- docker logs oracle-xe --tail 100"
```
### PDB nu se deschide (MOUNTED)
```bash
# Deschidere manuală PDB
ssh root@10.0.20.201 'pct exec 108 -- docker exec oracle-xe bash -c "echo \"ALTER PLUGGABLE DATABASE ALL OPEN; ALTER PLUGGABLE DATABASE ALL SAVE STATE;\" | sqlplus -s sys/romfastsoft@localhost:1521/XE as sysdba"'
```
### Probleme Maximum Open Cursors
```sql
-- Verificare valoare curentă
SELECT name, value FROM v$parameter WHERE name = 'open_cursors';
-- Creștere limită cursoare (dacă apar erori ORA-01000)
ALTER SYSTEM SET OPEN_CURSORS=1000 SCOPE=BOTH SID='*';
```
### Verificare Alert Log Oracle
```bash
# Alert log location în container
ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe tail -100 /opt/oracle/diag/rdbms/xe/XE/trace/alert_XE.log"
```
---
## 📝 Notițe Importante
### Diferențe Oracle 10g vs 21c
- **Oracle 10g** folosește SID (ORCL) - sistem vechi, decommissioned
- **Oracle 21c** folosește SERVICE_NAME (roa, roa2) - sistem actual
- Migrare: Export DMP Oracle 10g → Import Data Pump Oracle 21c (impdp)
### Profile Parole
- **ROA:** Parolele pot expira (setări default Oracle)
- **ROA2:** Parolele NU expiră (PASSWORD_LIFE_TIME UNLIMITED)
### VM 201 - Windows 11 (Client Aplicații)
- **VMID:** 201
- **Nume:** roacentral
- **Host:** 10.0.20.201 (Proxmox pvemini)
- **OS:** Windows 11 (24H2)
- **Rol:** Client pentru aplicații Windows, SQL*Plus client
- **NU** rulează Oracle Database (migrat în LXC 108 Docker)
### Istoric Migrare
- **VM 107 (Windows 7 Oracle 10g)** - DECOMMISSIONED
- Fostă sursă Oracle 10g pentru migrare DMP
- Archive DMP: firmanoua.zip (backup arhivat)
- Status: Stopped/Removed (înlocuit de LXC 108)
---
## 🔗 Legături Utile
**Pentru detalii Proxmox generale (cluster, toate LXC-uri/VM-uri):**
Vezi fișierul: `proxmox/proxmox-ssh-guide.md`
**Oracle Enterprise Manager Express:**
http://10.0.20.121:5500/em
**Portainer Docker Management:**
http://10.0.20.121:9443
---
**Data ultimei actualizări:** 2025-11-19
**Autor:** Marius Mutu
**Proiect:** ROMFASTSQL - Oracle XE 21c în Proxmox LXC

View File

@@ -8,11 +8,11 @@
- **Secure Auth:** on
### Noduri Cluster
| Nod | IP | Status | Node ID |
|-----|-----|--------|---------|
| **pvemini (local)** | 10.0.20.201 | Online | 0x00000002 |
| pve1 | 10.0.20.200 | Online | 0x00000001 |
| pve2 | 10.0.20.202 | Online | 0x00000003 |
| Nod | IP | Status | Node ID | Descriere |
|-----|-----|--------|---------|-----------|
| pve1 | 10.0.20.200 | Online | 1 | Nod cluster 1 |
| **pvemini (local)** | 10.0.20.201 | Online | 2 | **Nod principal (aici rulează LXC-urile)** |
| pveelite | 10.0.20.202 | Online | 3 | Nod cluster 3 |
### Versiune Proxmox
- **Versiune:** pve-manager/8.4.14/b502d23c55afcba1 (kernel: 6.8.12-15-pve)
@@ -46,19 +46,66 @@ ssh root@10.0.20.201
## Storage Configuration
### Storage-uri Disponibile
| Storage | Tip | Status | Capacitate | Utilizat | Disponibil | Utilizare |
|---------|-----|--------|------------|----------|------------|-----------|
| `backup` | dir | active | 1.79 TiB | 258.52 GiB | 1.44 TiB | 14.45% |
| `backup-nfs` | nfs | active | 1.79 TiB | 258.52 GiB | 1.44 TiB | 14.45% |
| `backup-ssd` | dir | disabled | - | - | - | - |
| `local` | dir | active | 1.51 TiB | 128 KB | 1.51 TiB | 0.00% |
| `local-zfs` | zfspool | active | 1.75 TiB | 245.75 GiB | 1.51 TiB | 14.03% |
### Storage-uri Disponibile (Cluster)
### Căi Storage
- **Backup local:** `/var/lib/vz/dump/`
- **Backup NFS:** `/mnt/pve/backup-nfs/dump/`
- **ISO-uri:** `/mnt/pve/backup-nfs/template/iso/`
| Storage | Tip | Noduri | Status | Capacitate | Utilizat | Locație | Content |
|---------|-----|--------|--------|------------|----------|---------|---------|
| `local` | dir | **Toate** (separat pe fiecare) | active | 1.51 TiB | 128 KB | `/var/lib/vz` | ISO, templates, backup |
| `local-zfs` | zfspool | **pvemini, pve1, pveelite** | active | 1.75 TiB | 324 GiB (18%) | `rpool/data` | **VM disks, LXC rootfs** |
| `backup` | dir | **Doar pvemini** | active | 1.79 TiB | 333 GiB (18%) | `/mnt/backup` | Backup-uri principale |
| `backup-ssd` | dir | **Doar pve1** | disabled | - | - | `/mnt/pve/backup-ssd` | Backup-uri SSD |
| `backup-nfs` | nfs | - | disabled | - | - | NFS server 10.0.20.201 | - |
| `backup-pvemini-nfs` | nfs | pve1, pveelite | disabled | - | - | NFS server 10.0.20.201 | - |
### Explicații Storage
**`local` (Director local)**
- **Scop:** ISO-uri, template-uri CT, backup-uri temporare
- **Locație:** Fiecare nod are propriul `/var/lib/vz` SEPARAT
- **Non-partajat:** Fișierele nu sunt vizibile între noduri
- **Conținut:** ISO, vztmpl (templates), backup
**`local-zfs` (ZFS Pool partajat)**
- **Scop:** Storage PRINCIPAL pentru VM-uri și LXC-uri
- **Pool:** `rpool/data` (ZFS)
- **Partajat:** Disponibil pe pvemini, pve1, pveelite
- **Conținut:** images (VM disks), rootdir (LXC root filesystems)
- **Performanță:** Cea mai bună (ZFS + local storage)
- **Sparse:** Enabled (economie spațiu)
**`backup` (Director backup pe pvemini)**
- **Scop:** Backup-uri principale job automat
- **Locație:** DOAR pe pvemini (10.0.20.201) - `/mnt/backup`
- **Non-partajat:** Accesibil doar pe pvemini
- **Conținut:** Toate tipurile (VM, LXC, templates)
- **Retention:** keep-all=1 (păstrează toate backup-urile)
**`backup-ssd` (Director backup pe pve1)**
- **Status:** Disabled
- **Locație:** DOAR pe pve1 - `/mnt/pve/backup-ssd`
**`backup-nfs` și `backup-pvemini-nfs`**
- **Status:** Disabled
- **Server NFS:** 10.0.20.201 (pvemini)
- **Export:** `/mnt/backup` de pe pvemini
- **Note:** Dezactivate - se folosește `backup` (director local)
### Căi Storage Important
**Pe pvemini (10.0.20.201):**
```bash
/var/lib/vz/ # local storage
/var/lib/vz/dump/ # backup-uri local
/mnt/backup/ # backup storage principal
/mnt/backup/dump/ # backup-uri job automat
rpool/data # ZFS pool pentru VM/LXC
```
**ISO-uri și Templates:**
```bash
/var/lib/vz/template/iso/ # ISO-uri pe fiecare nod (local)
/var/lib/vz/template/cache/ # LXC templates
```
## Comenzi Utile Proxmox
@@ -177,24 +224,84 @@ pct set <CTID> --rootfs local-zfs:20
### VM-uri și Containere Active
#### LXC Containers
| VMID | Nume | CPU | RAM | Storage | Status | Tags |
|------|------|-----|-----|---------|--------|------|
| 100 | portainer | 2 cores | 1 GB | 21 GB | running | docker;portainer |
| 101 | minecraft | 4 cores | 8 GB | 100 GB | running | community-script;minecraft;os |
| 102 | coolify | 4 cores | 6 GB | 50 GB | running | debian |
| 103 | proxmox-backup-server | 2 cores | 2 GB | 10 GB | running | backup;community-script |
| 104 | flowise | 4 cores | 2 GB | 100 GB | running | flowise;ollama |
| 105 | test | 2 cores | 2 GB | 40 GB | running | debian |
| 106 | gitea | 2 cores | 4 GB | 250 GB | running | alpine;community-script;docker;gitea |
| 108 | central-oracle | 2 cores | 4 GB | 50 GB | running | docker;oracle |
#### LXC Containers (Proxmox pvemini - 10.0.20.201)
| VMID | Nume | IP | CPU | RAM | Storage | Status | Tags |
|------|------|-----|-----|-----|---------|--------|------|
| 100 | portainer | 10.0.20.170 | 2 cores | 1 GB | 21 GB | running | docker;portainer |
| 102 | coolify | - | 4 cores | 6 GB | 50 GB | stopped | debian |
| 103 | dokploy | 10.0.20.167 | 2 cores | 2 GB | 10 GB | running | docker;deployment |
| 104 | flowise | 10.0.20.161 | 4 cores | 2 GB | 100 GB | running | flowise;ollama |
| 106 | gitea | 10.0.20.165 | 2 cores | 4 GB | 250 GB | running | alpine;community-script;docker;gitea |
| 108 | central-oracle | 10.0.20.121 | 2 cores | 4 GB | 50 GB | running | docker;oracle |
#### Virtual Machines (QEMU)
| VMID | Nume | CPU | RAM | Storage | Status | Descriere |
|------|------|-----|-----|---------|--------|-----------|
| 107 | roacentral | 2 cores | 4 GB | 932 GB | stopped | Windows 7 (oprit) |
| 201 | roacentral | 2 cores | 4 GB | 500 GB | running | Windows 11 (activ) |
| 300 | Win11-Template | 2 cores | 4 GB | 500 GB | stopped | Windows 11 Template |
| VMID | Nume | IP | CPU | RAM | Storage | Status | Descriere |
|------|------|-----|-----|-----|---------|--------|-----------|
| 201 | roacentral | DHCP | 2 cores | 4 GB | 500 GB | running | Windows 11 - Client pentru aplicații |
| 300 | Win11-Template | - | 2 cores | 4 GB | 500 GB | stopped | Windows 11 Template pentru clonare |
---
## 🔧 LXC 108 - Oracle Database (Acces Rapid)
### Informații Container
- **VMID:** 108 | **Nume:** central-oracle | **IP:** 10.0.20.121
- **CPU:** 2 cores | **RAM:** 4 GB | **Storage:** 50 GB (local-zfs)
- **Docker:** oracle-xe (Oracle XE 21c) | **Status:** Running
- **Portainer:** http://10.0.20.121:9443
### Acces în LXC (fără user/parolă)
> Nu ai nevoie de credențiale pentru LXC 108!
> Accesul se face prin Proxmox folosind `pct enter` sau `pct exec`.
```bash
# Metoda 1: Intrare directă în LXC
ssh root@10.0.20.201
pct enter 108
# Metoda 2: Execuție comandă din Proxmox
ssh root@10.0.20.201 "pct exec 108 -- docker ps"
```
### Restart Oracle Database
```bash
# Opțiunea 1: Restart Oracle container (RAPID)
ssh root@10.0.20.201 "pct exec 108 -- docker restart oracle-xe"
# Opțiunea 2: Restart LXC complet
ssh root@10.0.20.201 "pct restart 108"
# Verificare după restart
ssh root@10.0.20.201 "pct exec 108 -- docker ps"
```
### Verificări Rapide
```bash
# Status containere Docker
ssh root@10.0.20.201 "pct exec 108 -- docker ps"
# Loguri Oracle
ssh root@10.0.20.201 "pct exec 108 -- docker logs oracle-xe --tail 50"
# Test conexiune Oracle
nc -zv 10.0.20.121 1521
```
### 📖 Documentație Completă Oracle
Pentru detalii despre:
- Conexiuni Oracle (PDB-uri: roa, roa2)
- Useri și parole Oracle
- SQL*Plus, JDBC, TNS configurations
- Export/import DMP
- Comenzi SQL și troubleshooting
**Vezi:** `proxmox/oracle-database-lxc108.md`
---
## Backup Job Configuration
@@ -203,11 +310,19 @@ pct set <CTID> --rootfs local-zfs:20
- **Compression:** zstd
- **Mode:** snapshot
- **Storage:** backup
- **VM-uri incluse:** 100, 101, 102, 104, 106, 108, 201
- **VM-uri incluse:** 100, 103, 104, 106, 108, 201
- **Retention:** 1 daily, 1 weekly
- **Fleecing:** Disabled
- **Notes Template:** {{guestname}}
**Containere în backup:**
- 100 (Portainer) - 10.0.20.170
- 103 (Dokploy) - 10.0.20.167
- 104 (Flowise) - 10.0.20.161
- 106 (Gitea) - 10.0.20.165
- 108 (Oracle) - 10.0.20.121
- 201 (Windows 11 VM) - DHCP
### Comenzi Cluster
```bash
@@ -224,6 +339,57 @@ pvesh get /cluster/resources
cat /etc/pve/corosync.conf
```
## 📡 Hartă Rapidă IP-uri
### Noduri Proxmox Cluster
| Nod | IP | Rol | Web GUI |
|-----|-----|-----|---------|
| pve1 | 10.0.20.200 | Nod cluster 1 | https://10.0.20.200:8006 |
| **pvemini** | 10.0.20.201 | **Nod principal (LXC-uri active)** | https://10.0.20.201:8006 |
| pveelite | 10.0.20.202 | Nod cluster 3 | https://10.0.20.202:8006 |
### LXC Containers (Servicii)
| VMID | Nume | IP | Port(uri) | Serviciu |
|------|------|-----|-----------|----------|
| 100 | portainer | 10.0.20.170 | 9443, 8000 | Portainer (Docker management) |
| 103 | dokploy | 10.0.20.167 | 3000 | Dokploy (Deployment platform) |
| 104 | flowise | 10.0.20.161 | 3000 | Flowise AI + Ollama |
| 106 | gitea | 10.0.20.165 | 3000, 22 | Gitea (Git server) |
| 108 | central-oracle | 10.0.20.121 | 1521, 5500, 9443 | Oracle XE 21c + Portainer |
### Virtual Machines
| VMID | Nume | IP | OS | Rol |
|------|------|-----|-----|-----|
| 201 | roacentral | DHCP | Windows 11 | Client aplicații |
| 300 | Win11-Template | - | Windows 11 | Template pentru clonare |
### Accesuri Rapide
```bash
# Oracle Database (LXC 108) - Vezi proxmox/oracle-database-lxc108.md pentru detalii
nc -zv 10.0.20.121 1521 # Test port Oracle
sqlplus sys/romfastsoft@10.0.20.121:1521/roa as sysdba
# Portainer Oracle
http://10.0.20.121:9443
# Portainer Principal
http://10.0.20.170:9443
# Gitea
http://10.0.20.165:3000
# Dokploy
http://10.0.20.167:3000
# Flowise AI
http://10.0.20.161:3000
```
**Pentru conexiuni Oracle detaliate (PDB-uri, useri, TNS, export DMP):**
Vezi fișierul `proxmox/oracle-database-lxc108.md`
---
## Troubleshooting
### Probleme Comune SSH
@@ -281,9 +447,9 @@ systemctl restart pveproxy
## Web Interface
### Accesare Web GUI
- **Nod pvemini:** https://10.0.20.201:8006
- **Nod pvemini (principal):** https://10.0.20.201:8006
- **Nod pve1:** https://10.0.20.200:8006
- **Nod pve2:** https://10.0.20.202:8006
- **Nod pveelite:** https://10.0.20.202:8006
- **Utilizator:** root
- **Port:** 8006 (HTTPS)
@@ -298,15 +464,133 @@ systemctl restart pveproxy
4. **Folosește storage local-zfs** pentru performanță optimă VM-uri/containere
5. **Pentru Windows 11** folosește placa de rețea e1000 în loc de VirtIO pentru compatibilitate
6. **CPU type 'host'** oferă performanțe maxime cu KVM=1
7. **VM 201 (Windows 11 activ)** rulează pe local-zfs pentru performanță
8. **VM 107 (Windows 7)** este oprit - considerat legacy
7. **VM 201 (Windows 11)** rulează pe local-zfs pentru performanță optimă
8. **LXC 108 (Oracle XE 21c)** - IP: 10.0.20.121 - Acces fără user/parolă prin `pct enter 108`
### Backup și Siguranță
9. **Backup zilnic la 02:00** pentru toate containerele active și VM-ul 201
9. **Backup zilnic la 02:00** pentru toate containerele active și VM 201
10. **Retention policy:** 1 daily + 1 weekly
11. **Compression zstd** pentru backup-uri eficiente
12. **Testează conexiunea SSH** pe toate nodurile înainte de automatizări
### Containere Active
13. **8 containere LXC** cu diverse servicii (Portainer, Minecraft, Coolify, PBS, Flowise, Gitea, Oracle)
14. **Container 103 (PBS)** - Proxmox Backup Server pentru backup-uri dedicate
13. **6 containere LXC active** - Portainer (170), Dokploy (167), Flowise (161), Gitea (165), Oracle (121)
14. **Container 103 (Dokploy)** - Platform deployment și management Docker
15. **Container 108 (Oracle XE 21c)** - Database principal
- Restart rapid: `ssh root@10.0.20.201 "pct exec 108 -- docker restart oracle-xe"`
- Restart complet LXC: `ssh root@10.0.20.201 "pct restart 108"`
- Portainer: http://10.0.20.121:9443
---
## 📖 Documentație Asociată
### Documentație Index Principal
- **README.md** - Index complet documentație Proxmox cu navigare rapidă
### LXC Containers - Documentație Detaliată
#### LXC 108 - Oracle Database XE 21c
- **Fișier:** `oracle-database-lxc108.md`
- **Când să folosești:** Pentru orice operațiuni legate de Oracle Database
- **Conține:**
- PDB-uri (roa, roa2) - useri, parole, connection strings
- Export/Import Data Pump (expdp, impdp)
- Comenzi SQL pentru verificări (tablespace, obiecte, useri)
- Troubleshooting Oracle specific
- Diferențe Oracle 10g vs 21c (istoric migrare)
### Virtual Machines - Documentație Detaliată
#### VM 201 - Windows 11 (roacentral)
**Documentație Generală:**
- **Fișier:** `vm201-windows11.md`
- **Când să folosești:** Pentru informații generale despre VM 201
- **Conține:**
- Configurație hardware și software
- Rol și utilizare (client aplicații, SQL*Plus, reverse proxy IIS)
- Servicii instalate (IIS, Win-ACME, WinNUT, RDP)
- Configurare rețea și firewall
- Backup și recovery
- Troubleshooting comun
**Documentație SSL/TLS:**
- **Fișier:** `vm201-certificat-letsencrypt-iis.md`
- **Când să folosești:** Pentru configurare și reînnoire certificate Let's Encrypt
- **Conține:**
- Instalare Win-ACME pentru certificate automate
- Configurare IIS cu SNI (Server Name Indication)
- Binding-uri pentru multiple domenii (roa.romfast.ro, dokploy.romfast.ro, gitea.romfast.ro)
- Reînnoire automată certificate
- Troubleshooting SSL/TLS
- Scripturi PowerShell pentru configurare automată
**Documentație Troubleshooting:**
- **Fișier:** `vm201-troubleshooting-backup-nfs.md`
- **Când să folosești:** Pentru referință troubleshooting probleme similare
- **Conține:**
- Incident VM locked și backup NFS blocat (2025-10-08)
- Diagnostic și rezolvare pas cu pas
- Comenzi HA management (ha-manager)
- Force reboot și recovery
- Lecții învățate și preventie
### Cluster-Wide Resources - Scripts și Sisteme
#### Monitorizare High Availability
- **Fișier:** `cluster-ha-monitor.sh`
- **Când să folosești:** Pentru monitorizare automată HA cluster
- **Conține:**
- Script bash monitorizare HA services (pve-ha-lrm, pve-ha-crm)
- Verificare quorum cluster
- Verificare noduri online
- Notificări prin PVE::Notify (email)
- Template-uri Handlebars pentru emailuri
- Logging automat
**Instalare și rulare:**
```bash
# Instalare
scp proxmox/cluster-ha-monitor.sh root@10.0.20.201:/opt/scripts/
ssh root@10.0.20.201 "chmod +x /opt/scripts/cluster-ha-monitor.sh"
ssh root@10.0.20.201 "/opt/scripts/cluster-ha-monitor.sh --create-templates"
# Rulare verbose
ssh root@10.0.20.201 "/opt/scripts/cluster-ha-monitor.sh -v"
```
#### Sistem UPS pentru Cluster
- **Director:** `ups/`
- **Când să folosești:** Pentru configurare, monitorizare și mentenanță UPS
- **Conține:**
- `ups/README.md` - Ghid complet sistem UPS
- `ups/docs/` - Documentație detaliată (instalare NUT, WinNUT, shutdown orchestrat, test lunar baterie, înlocuire baterie)
- `ups/scripts/` - Scripturi automate (shutdown cluster, test dry-run, test lunar, mentenanță)
- `ups/config/` - Fișiere configurare NUT
**Quick start UPS:**
```bash
# Status UPS
ssh root@10.0.20.201 "upsc nutdev1"
# Test dry-run shutdown
ssh root@10.0.20.201 "/usr/local/bin/ups-shutdown-test.sh"
# Vezi ultimul test lunar baterie
ssh root@10.0.20.201 "tail -50 /var/log/ups-monthly-test.log"
```
### Archived / Decommissioned
#### VM 107 Monitor Script (DECOMMISSIONED)
- **Fișier:** `archived-vm107-monitor.sh`
- **Status:** Script arhivat pentru referință istorică
- **Notă:** VM 107 (Oracle 10g Windows 7) a fost decommissioned și înlocuit cu LXC 108 (Oracle XE 21c)
- **Vezi:** `oracle-database-lxc108.md` pentru sistemul actual
---
**Ultima actualizare:** 2025-11-19
**Autor:** Marius Mutu
**Proiect:** ROMFASTSQL - Proxmox Infrastructure Documentation

407
proxmox/vm201-windows11.md Normal file
View File

@@ -0,0 +1,407 @@
# VM 201 - Windows 11 (roacentral)
## 📌 Informații Generale
- **VMID:** 201
- **Nume:** roacentral
- **OS:** Windows 11 Pro (24H2)
- **Host Proxmox:** pvemini (10.0.20.201)
- **Storage:** local-zfs (ZFS pool)
- **Status:** Running (onboot: enabled)
- **Rol:** Client aplicații Windows, SQL*Plus client, Reverse proxy IIS, Monitorizare UPS
---
## 💻 Configurație Hardware
### Resurse Alocate
- **CPU:** 2 cores (Intel CPU host)
- **RAM:** 4 GB
- **Storage:** 500 GB (local-zfs)
- **Network:** virtio (DHCP)
- **Display:** VirtIO-GPU (spice)
### Storage Details
```bash
# Verificare disk usage
ssh root@10.0.20.201 "qm config 201 | grep scsi"
# Output:
# scsi0: local-zfs:vm-201-disk-0,size=500G
```
### Network Configuration
- **Interface:** net0 - virtio bridge=vmbr0
- **IP Assignment:** DHCP (managed by network DHCP server)
- **MAC Address:** Auto-generated by Proxmox
- **Hostname:** roacentral
---
## 🎯 Rol și Utilizare
### Funcții Principale
#### 1. Client Aplicații Windows
- **Aplicații ROMFAST** - Client desktop pentru aplicații contabilitate
- **SQL*Plus Client** - Conexiuni la Oracle Database (LXC 108)
- **Management Tools** - Administrare Windows pentru infrastructură
#### 2. Reverse Proxy IIS
- **IIS (Internet Information Services)** - Reverse proxy către servicii interne
- **SSL/TLS Termination** - Certificate Let's Encrypt pentru domenii externe
- **SNI (Server Name Indication)** - Multiple certificate pe același IP
- **Domenii gestionate:**
- roa.romfast.ro
- dokploy.romfast.ro
- gitea.romfast.ro
**Documentație:** Vezi `vm201-certificat-letsencrypt-iis.md`
#### 3. Monitorizare UPS
- **WinNUT Client** - Monitorizare vizuală status UPS în timp real
- **Server NUT:** 10.0.20.201:3493 (pvemini)
- **UPS:** nutdev1 (INNO TECH USB UPS)
- **Polling:** 15 secunde
**Documentație:** Vezi `ups/docs/INSTALARE-WINNUT.md`
---
## 🔧 Servicii Instalate
### Software Principal
#### 1. Oracle SQL*Plus Client
- **Versiune:** Oracle Instant Client (compatible cu Oracle XE 21c)
- **Conexiuni:**
```cmd
sqlplus sys/romfastsoft@10.0.20.121:1521/roa as sysdba
sqlplus CONTAFIN_ORACLE/OraclePass123@10.0.20.121:1521/roa
```
- **JDBC Driver:** oracle.jdbc.driver.OracleDriver
- **Connection String:** `jdbc:oracle:thin:@10.0.20.121:1521/roa`
#### 2. IIS (Internet Information Services)
- **Versiune:** IIS 10.0 (Windows 11)
- **Features Enabled:**
- Web Server (IIS)
- ASP.NET 4.8
- WebSockets Protocol
- HTTP Redirect
- URL Rewrite Module
- **Sites:**
- Default Web Site (roa.romfast.ro)
- Dokploy (dokploy.romfast.ro)
- Gitea (gitea.romfast.ro)
**Configurare SSL:** Vezi `vm201-certificat-letsencrypt-iis.md`
#### 3. Win-ACME
- **Versiune:** v2.2.9.1701
- **Locație:** `C:\Tools\win-acme\`
- **Scop:** Certificate Let's Encrypt automate
- **Task Scheduler:** Reînnoire automată zilnică (verificare)
- **Certificate Storage:** LocalMachine\My (Certificate Store)
#### 4. WinNUT Client
- **Versiune:** WinNUT-Client-2.x
- **Configurare:**
- Server: 10.0.20.201
- Port: 3493
- UPS: nutdev1
- User: admin
- Password: parola99
- Polling: 15s
- **Scop:** Monitorizare vizuală UPS (NU controlează shutdown)
#### 5. Remote Desktop
- **RDP Enabled:** Da
- **Port:** 3389 (default)
- **Network Level Authentication:** Enabled
- **Acces:** `mstsc /v:roacentral` (din rețea locală)
---
## 🌐 Configurare Rețea
### Network Settings
- **Adapter Type:** virtio (paravirtualized)
- **Bridge:** vmbr0 (Proxmox bridge)
- **IP Assignment:** DHCP
- **DNS:** Managed by DHCP
- **Hostname:** roacentral
### Firewall Rules (Windows Firewall)
```powershell
# Permite RDP
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"
# Permite IIS HTTP/HTTPS
New-NetFirewallRule -DisplayName "IIS HTTP" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
New-NetFirewallRule -DisplayName "IIS HTTPS" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow
# Permite ping (ICMP)
Enable-NetFirewallRule -DisplayName "File and Printer Sharing (Echo Request - ICMPv4-In)"
```
### Network Troubleshooting
```powershell
# Verificare IP și gateway
ipconfig /all
# Test conectivitate Oracle
Test-NetConnection -ComputerName 10.0.20.121 -Port 1521
# Test conectivitate NUT server
Test-NetConnection -ComputerName 10.0.20.201 -Port 3493
# Flush DNS cache
ipconfig /flushdns
```
---
## 💾 Backup și Recovery
### Backup Job Proxmox
- **Frecvență:** Zilnic la 02:00 (part of backup job-10dfdb0d-fb47)
- **Storage:** backup (`/mnt/backup` pe pvemini)
- **Tip:** Snapshot (Proxmox VZDump)
- **Retention:** keep-all=1 (păstrează toate backup-urile)
- **Format:** `.vma.zst` (compressed)
### Backup Manual
```bash
# Backup complet VM 201
ssh root@10.0.20.201 "vzdump 201 --storage backup --mode snapshot --compress zstd"
# Verificare backup-uri existente
ssh root@10.0.20.201 "ls -lh /mnt/backup/dump/vzdump-qemu-201-*.vma.zst"
```
### Recovery VM 201
```bash
# Listare backup-uri disponibile
ssh root@10.0.20.201 "pvesm list backup | grep 201"
# Restore din backup (creează VM nou cu VMID 202)
ssh root@10.0.20.201 "qmrestore /mnt/backup/dump/vzdump-qemu-201-YYYY_MM_DD-HH_MM_SS.vma.zst 202"
# Sau restore peste VM existent (ATENȚIE: șterge VM curent)
ssh root@10.0.20.201 "qm stop 201 && qmrestore /mnt/backup/dump/vzdump-qemu-201-*.vma.zst 201 --force"
```
---
## 🚨 Troubleshooting Comun
### VM Nu Pornește
**Diagnostic:**
```bash
# Status VM
ssh root@10.0.20.201 "qm status 201"
# Verificare lock-uri
ssh root@10.0.20.201 "qm config 201 | grep lock"
# Verificare proces KVM
ssh root@10.0.20.201 "ps aux | grep 'qm\|kvm' | grep 201"
```
**Rezolvare:**
```bash
# Unlock VM (dacă are lock de backup)
ssh root@10.0.20.201 "qm unlock 201"
# Start VM
ssh root@10.0.20.201 "qm start 201"
```
**Referință:** Vezi `vm201-troubleshooting-backup-nfs.md` pentru incident similar
### VM Locked după Backup Eșuat
**Verificare:**
```bash
ssh root@10.0.20.201 "qm config 201 | grep lock"
```
**Rezolvare:**
```bash
ssh root@10.0.20.201 "qm unlock 201"
```
**Documentație completă:** `vm201-troubleshooting-backup-nfs.md`
### RDP Nu Funcționează
**Verificare din Proxmox:**
```bash
# Status VM
ssh root@10.0.20.201 "qm status 201"
# Verificare port 3389 (din alt sistem)
nc -zv <VM_IP> 3389
```
**Rezolvare în Windows:**
```powershell
# Enable RDP
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -Name "fDenyTSConnections" -Value 0
# Restart serviciu
Restart-Service TermService -Force
# Verificare firewall
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"
```
### Certificate SSL Expirate
**Verificare:**
```powershell
# Listare certificate Let's Encrypt
Get-ChildItem Cert:\LocalMachine\My | Where-Object {
$_.Issuer -like "*Let's Encrypt*" -and $_.NotAfter -gt (Get-Date)
} | Select-Object Subject, NotAfter, Thumbprint
```
**Reînnoire:**
```powershell
cd C:\Tools\win-acme
.\wacs.exe --renew --force
iisreset
```
**Documentație completă:** `vm201-certificat-letsencrypt-iis.md`
---
## 🔗 Comenzi Rapide Proxmox
### Gestiune VM 201
```bash
# Start VM
ssh root@10.0.20.201 "qm start 201"
# Stop VM (graceful)
ssh root@10.0.20.201 "qm stop 201"
# Force stop VM (SIGKILL)
ssh root@10.0.20.201 "qm stop 201 --skiplock"
# Restart VM
ssh root@10.0.20.201 "qm restart 201"
# Status VM
ssh root@10.0.20.201 "qm status 201"
# Configurație VM
ssh root@10.0.20.201 "qm config 201"
# Modificare RAM/CPU
ssh root@10.0.20.201 "qm set 201 --memory 8192 --cores 4"
# Console VM (VNC prin Proxmox GUI)
# Acces: https://10.0.20.201:8006 -> VM 201 -> Console
```
### Backup și Snapshot
```bash
# Backup manual
ssh root@10.0.20.201 "vzdump 201 --storage backup --mode snapshot --compress zstd"
# Creare snapshot
ssh root@10.0.20.201 "qm snapshot 201 pre-update-snapshot"
# Listare snapshot-uri
ssh root@10.0.20.201 "qm listsnapshot 201"
# Rollback la snapshot
ssh root@10.0.20.201 "qm rollback 201 pre-update-snapshot"
# Ștergere snapshot
ssh root@10.0.20.201 "qm delsnapshot 201 pre-update-snapshot"
```
---
## 📖 Documentație Asociată
### Documentație VM 201 Specifică
- **SSL Certificates IIS:** `vm201-certificat-letsencrypt-iis.md`
- **Troubleshooting Incident 2025-10-08:** `vm201-troubleshooting-backup-nfs.md`
### Documentație Infrastructură Generală
- **Proxmox Cluster General:** `proxmox-ssh-guide.md`
- **Oracle Database (LXC 108):** `oracle-database-lxc108.md`
### Documentație UPS
- **Instalare WinNUT Client:** `ups/docs/INSTALARE-WINNUT.md`
- **Sistem UPS Cluster:** `ups/README.md`
---
## 📝 Notițe Importante
### Considerații Performanță
- VM 201 rulează pe **local-zfs** pentru performanță optimă (ZFS pool)
- **Snapshot-urile** sunt rapide (ZFS COW - copy-on-write)
- **Backup-urile** nu afectează performanța VM (Proxmox snapshot)
### Securitate
- **RDP:** Expus doar în rețea locală (10.0.20.0/24)
- **Certificate SSL:** Reînnoire automată Let's Encrypt (90 zile)
- **Firewall:** Windows Firewall active cu reguli restrictive
- **Updates:** Windows Update enabled (automatic patches)
### Dependențe
- **Oracle Database:** LXC 108 (10.0.20.121:1521) - SQL*Plus client
- **UPS Monitoring:** NUT server pe pvemini (10.0.20.201:3493)
- **Reverse Proxy Targets:**
- Dokploy: 10.0.20.167:3000
- Gitea: 10.0.20.165:3000
- Portainer: 10.0.20.170:9443
### High Availability
- **HA Status:** Enabled (managed by pve-ha-crm)
- **Priority:** Normal
- **Autostart:** Enabled (onboot: 1)
- **Recovery:** Automatic VM migration în caz de node failure
**Troubleshooting HA:** Vezi `vm201-troubleshooting-backup-nfs.md` → "VM 201 - HA Error"
---
## 🎯 Flux de Lucru Recomandat
### Pentru Configurare Nouă
1. **Citește acest document** pentru context general
2. **Pentru SSL/IIS:** Vezi `vm201-certificat-letsencrypt-iis.md`
3. **Testează configurația**
4. **Creează snapshot** înainte de modificări majore
5. **Documentează** schimbările în fișiere relevante
### Pentru Probleme
1. **Verifică status VM:** `qm status 201`
2. **Verifică lock-uri:** `qm config 201 | grep lock`
3. **Consultă troubleshooting:** `vm201-troubleshooting-backup-nfs.md`
4. **Verifică logs:** Windows Event Viewer sau Proxmox logs
5. **Documentează problema** și rezolvarea pentru viitor
### Pentru Mentenanță
1. **Creează snapshot** înainte de update-uri: `qm snapshot 201 pre-maintenance`
2. **Verifică backup recent:** Ultimul backup în `/mnt/backup/dump/`
3. **Aplică update-uri** Windows Update sau IIS
4. **Testează funcționalitate** (RDP, IIS, SQL*Plus)
5. **Șterge snapshot** dacă totul funcționează: `qm delsnapshot 201 pre-maintenance`
---
**Ultima actualizare:** 2025-11-19
**Autor:** Marius Mutu
**Proiect:** ROMFASTSQL - VM 201 Documentation