Files
ROMFASTSQL/oracle/oracle-xe-lxc-install-guide.md
2025-09-30 02:06:34 +03:00

10 KiB

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:

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

# 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

# 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

# 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 <<EOF
CREATE USER appuser IDENTIFIED BY AppPass123;
GRANT CONNECT, RESOURCE TO appuser;
GRANT CREATE SESSION TO appuser;
GRANT UNLIMITED TABLESPACE TO appuser;
exit;
EOF

# Auto-start la boot
docker update --restart=unless-stopped oracle-xe

5. Acces din Exterior

Din WSL sau alt sistem:

# Conexiune SQL*Plus
sqlplus appuser/AppPass123@10.0.20.XXX:1521/XE

# Conexiune cu tool-uri GUI
# JDBC URL: jdbc:oracle:thin:@10.0.20.XXX:1521:XE
# Enterprise Manager: http://10.0.20.XXX:5500/em

Opțiunea 2: Instalare Manuală în Oracle Linux LXC

Pași de Instalare

1. Download și Creare Template Oracle Linux

# Pe Proxmox
cd /var/lib/vz/template/cache/

# Download Oracle Linux 8 rootfs
wget https://images.linuxcontainers.org/images/oraclelinux/8/amd64/default/20240101_00:00/rootfs.tar.xz -O oraclelinux-8_amd64.tar.xz

# Creare container
pct create 301 local:vztmpl/oraclelinux-8_amd64.tar.xz \
  --hostname oracle-xe-native \
  --cores 2 \
  --memory 4096 \
  --swap 2048 \
  --rootfs local-zfs:20 \
  --net0 name=eth0,bridge=vmbr0,ip=dhcp \
  --unprivileged 0 \
  --features nesting=1

2. Pregătire Sistem pentru Oracle XE

pct start 301
pct enter 301

# Configurare hostname și hosts
echo "oracle-xe-native" > /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 <<EOF
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 4294967295
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
EOF
sysctl -p

3. Download și Instalare Oracle XE 21c

# Download Oracle XE (necesită cont Oracle)
# Manual: Download de pe https://www.oracle.com/database/technologies/xe-downloads.html
# Transfer fișierul oracle-database-xe-21c-1.0-1.ol8.x86_64.rpm în container

# Sau folosește wget cu link direct (dacă ai)
cd /tmp
# wget [ORACLE_XE_DOWNLOAD_LINK]

# Instalare RPM
yum localinstall -y oracle-database-xe-21c-1.0-1.ol8.x86_64.rpm

# Configurare automată
/etc/init.d/oracle-xe-21c configure <<EOF
OraclePass123
OraclePass123
EOF

# Set environment
echo 'export ORACLE_HOME=/opt/oracle/product/21c/dbhomeXE' >> /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

# 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

# Î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

# Verificare memorie
free -h
# Ajustare din Proxmox
pct set [CTID] --memory 6144

2. Docker în LXC nu pornește

# Verificare privilegii container
# Container trebuie să fie privilegiat (unprivileged=0)
# Features: nesting=1, keyctl=1

3. Oracle XE nu pornește

# 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ă

# Verificare listener
docker exec oracle-xe lsnrctl status
# Verificare firewall
iptables -L

Script Complet Automatizare Docker-in-LXC

#!/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

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