# Ghid Instalare Oracle XE 21 în LXC pe Proxmox ## Rezumat Opțiuni Din cercetare rezultă că **nu există template-uri LXC cu Oracle XE pre-instalat**. Cele mai viabile opțiuni sunt: 1. **Docker-in-LXC** (Recomandat) - Cea mai simplă și automatizată 2. **Instalare manuală în Oracle Linux LXC** - Mai directă dar complexă 3. **Script-uri de automatizare** - Soluții comunitate ## Opțiunea 1: Docker-in-LXC (RECOMANDAT) ✅ ### Avantaje - Folosește imaginea oficială Oracle cu automatizare completă - Configurare minimă manuală - Suport oficial Oracle pentru containerizare - Ușor de actualizat și întreținut ### Dezavantaje - Overhead suplimentar Docker - Container în container (LXC → Docker) ### Pași de Instalare #### 1. Creare Container LXC Privilegiat SSH pe Proxmox: ```bash ssh root@10.0.20.201 # Download template Ubuntu 22.04 dacă nu există pveam update pveam download local ubuntu-22.04-standard_22.04-1_amd64.tar.gz # Creare container privilegiat pct create 300 local:vztmpl/ubuntu-22.04-standard_22.04-1_amd64.tar.gz \ --hostname oracle-xe \ --cores 2 \ --memory 4096 \ --swap 2048 \ --rootfs local-zfs:20 \ --net0 name=eth0,bridge=vmbr0,ip=dhcp \ --unprivileged 0 \ --features nesting=1,keyctl=1 \ --ostype ubuntu ``` #### 2. Configurare Container pentru Docker ```bash # Start container pct start 300 # Intrare în container pct enter 300 # Update sistem apt update && apt upgrade -y # Instalare Docker apt install -y ca-certificates curl gnupg lsb-release mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null apt update apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin # Verificare Docker docker --version systemctl enable docker systemctl start docker ``` #### 3. Deploy Oracle XE 21 cu Docker ```bash # Crearea directoarelor pentru persistență mkdir -p /opt/oracle/oradata mkdir -p /opt/oracle/scripts/setup mkdir -p /opt/oracle/scripts/startup # Pull imagine oficială Oracle XE docker pull container-registry.oracle.com/database/express:21.3.0-xe # Rulare container Oracle XE docker run -d \ --name oracle-xe \ -p 1521:1521 \ -p 5500:5500 \ -e ORACLE_PWD=OraclePass123 \ -e ORACLE_CHARACTERSET=AL32UTF8 \ -v /opt/oracle/oradata:/opt/oracle/oradata \ -v /opt/oracle/scripts/setup:/opt/oracle/scripts/setup \ -v /opt/oracle/scripts/startup:/opt/oracle/scripts/startup \ container-registry.oracle.com/database/express:21.3.0-xe # Verificare status docker ps docker logs -f oracle-xe # Așteptare până DB este ready (durează ~5-10 minute prima dată) # Căutați în logs: "DATABASE IS READY TO USE!" ``` #### 4. Configurare Acces și Testare ```bash # Obținere IP container LXC ip addr show eth0 # Test conexiune din container docker exec -it oracle-xe sqlplus sys/OraclePass123@localhost:1521/XE as sysdba # În SQL*Plus SQL> SELECT banner FROM v$version; SQL> exit # Creare user pentru aplicații docker exec -it oracle-xe sqlplus sys/OraclePass123@localhost:1521/XE as sysdba < /etc/hostname echo "127.0.0.1 oracle-xe-native" >> /etc/hosts # Disable IPv6 (Oracle XE compatibility) echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.conf sysctl -p # Install pachete necesare yum install -y oracle-database-preinstall-21c yum install -y wget unzip # Configurare kernel parameters pentru Oracle cat >> /etc/sysctl.conf <> /etc/profile echo 'export PATH=$ORACLE_HOME/bin:$PATH' >> /etc/profile echo 'export ORACLE_SID=XE' >> /etc/profile source /etc/profile # Enable auto-start systemctl enable oracle-xe-21c systemctl start oracle-xe-21c ``` ## Opțiunea 3: Script-uri de Automatizare ### Folosire Repository-uri GitHub ```bash # Exemplu cu gvenzl/oci-oracle-xe git clone https://github.com/gvenzl/oci-oracle-xe cd oci-oracle-xe # Build container image ./buildContainerImage.sh -v 21.3.0 -x # Sau folosire directă cu Docker docker run -d \ -p 1521:1521 \ -e ORACLE_PASSWORD=OraclePass123 \ gvenzl/oracle-xe:21-slim ``` ## Cerințe Hardware și Configurare ### Resurse Minime Container - **CPU:** 2 cores - **RAM:** 4GB (minim 2GB) - **Disk:** 20GB (9GB minim pentru Oracle) - **Swap:** 2GB ### Porturi Necesare - **1521:** Oracle Listener - **5500:** Enterprise Manager Express - **8080:** APEX (opțional) ### Configurări LXC Specifice ```bash # În /etc/pve/lxc/[CTID].conf pe Proxmox lxc.apparmor.profile: unconfined lxc.cgroup2.devices.allow: a lxc.cap.drop: lxc.mount.auto: proc:rw sys:rw ``` ## Troubleshooting ### Probleme Comune #### 1. Insufficient Memory ```bash # Verificare memorie free -h # Ajustare din Proxmox pct set [CTID] --memory 6144 ``` #### 2. Docker în LXC nu pornește ```bash # Verificare privilegii container # Container trebuie să fie privilegiat (unprivileged=0) # Features: nesting=1, keyctl=1 ``` #### 3. Oracle XE nu pornește ```bash # Check logs docker logs oracle-xe # Sau pentru instalare nativă tail -f /opt/oracle/diag/rdbms/xe/XE/trace/alert_XE.log ``` #### 4. Conexiune refuzată ```bash # Verificare listener docker exec oracle-xe lsnrctl status # Verificare firewall iptables -L ``` ## Script Complet Automatizare Docker-in-LXC ```bash #!/bin/bash # oracle-xe-lxc-deploy.sh CTID=300 HOSTNAME="oracle-xe" MEMORY=4096 DISK=20 ORACLE_PWD="OraclePass123" echo "Creating Oracle XE LXC Container..." # Create container pct create $CTID local:vztmpl/ubuntu-22.04-standard_22.04-1_amd64.tar.gz \ --hostname $HOSTNAME \ --cores 2 \ --memory $MEMORY \ --swap 2048 \ --rootfs local-zfs:$DISK \ --net0 name=eth0,bridge=vmbr0,ip=dhcp \ --unprivileged 0 \ --features nesting=1,keyctl=1 \ --ostype ubuntu # Start and configure pct start $CTID sleep 5 # Install Docker and Oracle XE pct exec $CTID -- bash -c " apt update && apt upgrade -y apt install -y ca-certificates curl gnupg lsb-release mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo 'deb [arch=\$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \$(lsb_release -cs) stable' | tee /etc/apt/sources.list.d/docker.list > /dev/null apt update apt install -y docker-ce docker-ce-cli containerd.io systemctl enable docker systemctl start docker mkdir -p /opt/oracle/oradata docker run -d \ --name oracle-xe \ -p 1521:1521 \ -p 5500:5500 \ -e ORACLE_PWD=$ORACLE_PWD \ -e ORACLE_CHARACTERSET=AL32UTF8 \ -v /opt/oracle/oradata:/opt/oracle/oradata \ --restart unless-stopped \ container-registry.oracle.com/database/express:21.3.0-xe " echo "Oracle XE deployment initiated. Check logs with:" echo "pct exec $CTID -- docker logs -f oracle-xe" echo "Database will be ready in ~5-10 minutes" ``` ## Conexiune și Utilizare ### String-uri de Conexiune ``` # SQL*Plus sqlplus sys/OraclePass123@localhost:1521/XE as sysdba # JDBC jdbc:oracle:thin:@10.0.20.XXX:1521:XE # TNS XE = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.20.XXX)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE) ) ) ``` ### Tool-uri Recomandate - **SQL Developer** - Oracle oficial - **DBeaver** - Universal database tool - **Enterprise Manager Express** - http://10.0.20.XXX:5500/em ## Note Finale 1. **Varianta Docker-in-LXC este cea mai simplă** și recomandată pentru majoritatea cazurilor 2. **Backup-uri regulate** folosind Proxmox vzdump 3. **Monitorizare resurse** - Oracle XE poate consuma multă memorie 4. **Licențiere** - Oracle XE este gratuită dar cu limitări (12GB data, 2GB RAM, 2 CPU threads) 5. **Securitate** - Schimbați parolele default, configurați firewall