Bootstrap tenta multiplos DSNs para Oracle

This commit is contained in:
Frederico Castro
2025-12-12 20:08:29 -03:00
parent b411e69713
commit 77029695cb

View File

@@ -2,22 +2,37 @@
set -euo pipefail
# Configs
DSN_HOST=${ORACLE_LOCAL_DSN:-"127.0.0.1:1521/XEPDB1"}
DSN_CANDIDATES=()
if [ -n "${ORACLE_LOCAL_DSN:-}" ]; then
DSN_CANDIDATES+=("${ORACLE_LOCAL_DSN}")
fi
DSN_CANDIDATES+=("127.0.0.1:1521/XEPDB1" "oracle18c:1521/XEPDB1" "mqapilc_oracle18c:1521/XEPDB1")
API_URL=${API_URL:-"http://localhost:8000"}
VENV_PY="./venv/bin/python"
echo "[1/5] Aguardando Oracle em ${DSN_HOST}..."
until $VENV_PY - <<PY >/dev/null 2>&1
echo "[1/5] Aguardando Oracle..."
DSN_HOST=""
for candidate in "${DSN_CANDIDATES[@]}"; do
echo " Testando ${candidate}..."
if $VENV_PY - <<PY >/dev/null 2>&1
import cx_Oracle
conn=cx_Oracle.connect("local123","local123","${DSN_HOST}")
conn=cx_Oracle.connect("local123","local123","${candidate}")
cur=conn.cursor();cur.execute("select 1 from dual");cur.fetchone()
cur.close();conn.close()
PY
do
echo " Oracle ainda indisponível... tentando de novo em 5s"
sleep 5
then
DSN_HOST="${candidate}"
break
fi
sleep 2
done
echo "Oracle OK."
if [ -z "$DSN_HOST" ]; then
echo "ERRO: não foi possível conectar ao Oracle em nenhum dos DSN candidatos."
exit 1
fi
echo "Oracle OK em ${DSN_HOST}."
echo "[2/5] Conferindo contagem atual..."
COUNT=$($VENV_PY - <<PY