Files
ROMFASTSQL/proxmox/lxc108-oracle/scripts/export-roa2.sh
Marius d2b24c1c47 Update Oracle 18c/21c export scripts and documentation
- Increase LXC 108 memory from 4GB to 8GB + 2GB swap
- Add manual startup/shutdown instructions for Oracle containers
- Document CDB/PDB architecture and correct connection strings
- Fix export-roa2.sh: use XEPDB1 PDB for Oracle 18c, separate DMPDIR
- Fix export-roa2.ps1: dual DMPDIR paths, auto-start containers
- Add container/database status checks before export
- Add TNS entries with SERVICE_NAME=XEPDB1 (not SID=XE)
- Document DBMS_CUBE_EXP warnings as harmless

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 23:42:34 +02:00

80 lines
2.7 KiB
Bash

#!/bin/bash
# Export CONTAFIN_ORACLE și FIRMANOUA, arhive separate tar.gz
# Rulează din LXC 108: ./export-roa2.sh [18|21]
# 18 = Oracle 18c (compatibil 11g/18c/19c) | 21 = Oracle 21c (default)
#
# Exemple:
# ./export-roa2.sh 18 # Export din Oracle 18c pe port 1522
# ./export-roa2.sh 21 # Export din Oracle 21c PDB roa2 pe port 1521
# ./export-roa2.sh # Default: Oracle 21c
DATE=$(date +%Y%m%d_%H%M%S)
SCHEMAS="CONTAFIN_ORACLE FIRMANOUA"
ORACLE_VER=${1:-21}
if [ "$ORACLE_VER" == "18" ]; then
CONTAINER="oracle18-xe"
PORT="1521" # Port intern container (extern e 1522)
SERVICE="XEPDB1" # Oracle 18c PDB (nu CDB!)
DMPDIR="/opt/oracle18/oradata/dmpdir" # Volum separat pentru 18c
SUFFIX="_v11.2"
VERSION="11.2"
echo "=== Export Oracle 18c PDB XEPDB1 (compatibil 11g/18c/19c) - $DATE ==="
else
CONTAINER="oracle-xe"
PORT="1521"
SERVICE="roa2" # Oracle 21c PDB roa2
DMPDIR="/opt/oracle/oradata/dmpdir" # Volum pentru 21c
SUFFIX="_v19"
VERSION="19"
echo "=== Export Oracle 21c PDB roa2 - $DATE ==="
fi
# Verifică că containerul Docker rulează
if ! docker ps --format '{{.Names}}' | grep -q "^${CONTAINER}$"; then
echo "EROARE: Containerul $CONTAINER nu rulează!"
echo ""
echo "Pornește-l cu: docker start $CONTAINER"
echo "Apoi așteaptă ~60s pentru startup Oracle."
exit 1
fi
# Verifică că baza de date Oracle e OPEN
DB_STATUS=$(docker exec $CONTAINER bash -c "echo 'SELECT status FROM v\$instance;' | sqlplus -s / as sysdba" 2>/dev/null | grep -E "OPEN|MOUNTED")
if [ -z "$DB_STATUS" ]; then
echo "EROARE: Baza de date Oracle nu e disponibilă!"
echo "Containerul rulează dar Oracle nu e OPEN."
echo "Verifică: docker logs $CONTAINER --tail 20"
exit 1
fi
echo "Oracle status: $DB_STATUS"
# Verifică că DMPDIR există
if [ ! -d "$DMPDIR" ]; then
echo "EROARE: Director $DMPDIR nu există!"
echo "Creează-l cu: mkdir -p $DMPDIR && chmod 777 $DMPDIR"
exit 1
fi
cd $DMPDIR
for SCHEMA in $SCHEMAS; do
echo "Exporting $SCHEMA from $CONTAINER..."
docker exec $CONTAINER expdp system/romfastsoft@localhost:$PORT/$SERVICE \
SCHEMAS=$SCHEMA \
DIRECTORY=DMPDIR \
DUMPFILE=${SCHEMA}_${DATE}.dmp \
LOGFILE=${SCHEMA}_${DATE}.log \
VERSION=$VERSION \
EXCLUDE=STATISTICS
# Arhivare individuală
ARCHIVE="${SCHEMA}${SUFFIX}_${DATE}.tar.gz"
echo "Creating archive: $ARCHIVE"
tar -czvf "$ARCHIVE" ${SCHEMA}_${DATE}.dmp ${SCHEMA}_${DATE}.log
rm -f ${SCHEMA}_${DATE}.dmp ${SCHEMA}_${DATE}.log
done
echo "=== Done! ==="
ls -lh $DMPDIR/*_${DATE}.tar.gz