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