style: normalizare CRLF -> LF pentru scripturile shell

Doar line endings, zero modificari de continut (verificat cu
git diff --ignore-cr-at-eol: fara diferente ramase pe aceste fisiere).

Fisierele aveau CRLF comis efectiv in repo, nu doar in working tree.
Sunt scripturi care ruleaza pe Linux (migrarea Oracle, LXC 171 claude-agent),
iar deployate direct din working tree bash le refuza cu
"$'\r': command not found" - exact capcana pe care .gitattributes (comis in
9475842) o previne de acum inainte pentru fisierele noi.

Nu sunt incluse fisierele .md/.sql din roa-windows-setup: acelea au
modificari reale de continut, in curs, si apartin altui commit.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BhQBTegE4PiMPPaapLHjkc
This commit is contained in:
Marius
2026-08-08 17:39:15 +03:00
parent 015cd797a1
commit 3b6a7b9d31
15 changed files with 2608 additions and 2608 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1,315 +1,315 @@
#!/bin/bash #!/bin/bash
#============================================================================== #==============================================================================
# Script: 00-install-oracle21c-xe.sh # Script: 00-install-oracle21c-xe.sh
# Descriere: Instalare completă Oracle 21c XE în Docker pe LXC Proxmox # Descriere: Instalare completă Oracle 21c XE în Docker pe LXC Proxmox
# - Instalează Docker (dacă nu există) # - Instalează Docker (dacă nu există)
# - Instalează Oracle 21c XE # - Instalează Oracle 21c XE
# - Șterge XEPDB1 automat # - Șterge XEPDB1 automat
# - Creează PDB ROA (și opțional PDB ROA2) # - Creează PDB ROA (și opțional PDB ROA2)
# Data: 30 Septembrie 2025 # Data: 30 Septembrie 2025
# Rulare: bash 00-install-oracle21c-xe.sh # Rulare: bash 00-install-oracle21c-xe.sh
# Unde: Pe host Proxmox (sau în LXC prin pct exec) # Unde: Pe host Proxmox (sau în LXC prin pct exec)
#============================================================================== #==============================================================================
set -e set -e
echo "==========================================" echo "=========================================="
echo "INSTALARE ORACLE 21c XE PE LXC + DOCKER" echo "INSTALARE ORACLE 21c XE PE LXC + DOCKER"
echo "==========================================" echo "=========================================="
echo "" echo ""
# Configurare # Configurare
ORACLE_PWD="OraclePass123" ORACLE_PWD="OraclePass123"
LXC_ID="108" LXC_ID="108"
PROXMOX_HOST="10.0.20.201" PROXMOX_HOST="10.0.20.201"
CONTAINER_NAME="oracle-xe" CONTAINER_NAME="oracle-xe"
ORACLE_IMAGE="container-registry.oracle.com/database/express:21.3.0-xe" ORACLE_IMAGE="container-registry.oracle.com/database/express:21.3.0-xe"
# Verificare dacă rulează pe Proxmox sau trebuie SSH # Verificare dacă rulează pe Proxmox sau trebuie SSH
if [ -f "/etc/pve/.version" ]; then if [ -f "/etc/pve/.version" ]; then
echo "✓ Rulează direct pe Proxmox host" echo "✓ Rulează direct pe Proxmox host"
PVE_CMD="" PVE_CMD=""
else else
echo "Conectare la Proxmox ${PROXMOX_HOST}..." echo "Conectare la Proxmox ${PROXMOX_HOST}..."
PVE_CMD="ssh root@${PROXMOX_HOST}" PVE_CMD="ssh root@${PROXMOX_HOST}"
fi fi
echo "" echo ""
echo "==========================================" echo "=========================================="
echo "PASUL 1/7: VERIFICARE LXC ${LXC_ID}" echo "PASUL 1/7: VERIFICARE LXC ${LXC_ID}"
echo "==========================================" echo "=========================================="
echo "" echo ""
# Verificare LXC există # Verificare LXC există
if ! ${PVE_CMD} pct status ${LXC_ID} &>/dev/null; then if ! ${PVE_CMD} pct status ${LXC_ID} &>/dev/null; then
echo "ERROR: LXC ${LXC_ID} nu există!" echo "ERROR: LXC ${LXC_ID} nu există!"
echo "" echo ""
echo "Creează LXC manual:" echo "Creează LXC manual:"
echo " pct create ${LXC_ID} local:vztmpl/debian-12-standard_12.2-1_amd64.tar.zst \\" echo " pct create ${LXC_ID} local:vztmpl/debian-12-standard_12.2-1_amd64.tar.zst \\"
echo " --hostname oracle-db \\" echo " --hostname oracle-db \\"
echo " --memory 8192 \\" echo " --memory 8192 \\"
echo " --cores 4 \\" echo " --cores 4 \\"
echo " --rootfs local-lvm:32 \\" echo " --rootfs local-lvm:32 \\"
echo " --net0 name=eth0,bridge=vmbr0,ip=dhcp \\" echo " --net0 name=eth0,bridge=vmbr0,ip=dhcp \\"
echo " --features nesting=1,keyctl=1" echo " --features nesting=1,keyctl=1"
echo " pct start ${LXC_ID}" echo " pct start ${LXC_ID}"
exit 1 exit 1
fi fi
# Start LXC dacă e oprit # Start LXC dacă e oprit
if ! ${PVE_CMD} pct status ${LXC_ID} | grep -q "running"; then if ! ${PVE_CMD} pct status ${LXC_ID} | grep -q "running"; then
echo "Pornire LXC ${LXC_ID}..." echo "Pornire LXC ${LXC_ID}..."
${PVE_CMD} pct start ${LXC_ID} ${PVE_CMD} pct start ${LXC_ID}
sleep 5 sleep 5
fi fi
echo "✓ LXC ${LXC_ID} activ" echo "✓ LXC ${LXC_ID} activ"
echo "" echo ""
echo "==========================================" echo "=========================================="
echo "PASUL 2/7: INSTALARE DOCKER" echo "PASUL 2/7: INSTALARE DOCKER"
echo "==========================================" echo "=========================================="
echo "" echo ""
# Verificare Docker instalat # Verificare Docker instalat
if ${PVE_CMD} pct exec ${LXC_ID} -- which docker &>/dev/null; then if ${PVE_CMD} pct exec ${LXC_ID} -- which docker &>/dev/null; then
echo "✓ Docker deja instalat" echo "✓ Docker deja instalat"
${PVE_CMD} pct exec ${LXC_ID} -- docker --version ${PVE_CMD} pct exec ${LXC_ID} -- docker --version
else else
echo "Instalare Docker..." echo "Instalare Docker..."
${PVE_CMD} pct exec ${LXC_ID} -- bash -c ' ${PVE_CMD} pct exec ${LXC_ID} -- bash -c '
# Update package list # Update package list
apt-get update apt-get update
# Install prerequisites # Install prerequisites
apt-get install -y \ apt-get install -y \
ca-certificates \ ca-certificates \
curl \ curl \
gnupg \ gnupg \
lsb-release lsb-release
# Add Docker GPG key # Add Docker GPG key
mkdir -p /etc/apt/keyrings mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# Add Docker repository # Add Docker repository
echo \ echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
# Install Docker # Install Docker
apt-get update apt-get update
apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# Enable and start Docker # Enable and start Docker
systemctl enable docker systemctl enable docker
systemctl start docker systemctl start docker
echo "Docker version:" echo "Docker version:"
docker --version docker --version
' '
echo "✓ Docker instalat" echo "✓ Docker instalat"
fi fi
echo "" echo ""
echo "==========================================" echo "=========================================="
echo "PASUL 3/7: DOWNLOAD ORACLE 21c XE IMAGE" echo "PASUL 3/7: DOWNLOAD ORACLE 21c XE IMAGE"
echo "==========================================" echo "=========================================="
echo "" echo ""
# Verificare dacă image-ul există # Verificare dacă image-ul există
if ${PVE_CMD} pct exec ${LXC_ID} -- docker images | grep -q "express.*21.3.0-xe"; then if ${PVE_CMD} pct exec ${LXC_ID} -- docker images | grep -q "express.*21.3.0-xe"; then
echo "✓ Oracle XE image deja descărcat" echo "✓ Oracle XE image deja descărcat"
else else
echo "Download Oracle 21c XE image (~ 2-3 GB)..." echo "Download Oracle 21c XE image (~ 2-3 GB)..."
echo "Durată estimată: 5-15 minute (depinde de conexiune)" echo "Durată estimată: 5-15 minute (depinde de conexiune)"
${PVE_CMD} pct exec ${LXC_ID} -- docker pull ${ORACLE_IMAGE} ${PVE_CMD} pct exec ${LXC_ID} -- docker pull ${ORACLE_IMAGE}
echo "✓ Oracle XE image descărcat" echo "✓ Oracle XE image descărcat"
fi fi
echo "" echo ""
echo "==========================================" echo "=========================================="
echo "PASUL 4/7: OPRIRE CONTAINER VECHI (dacă există)" echo "PASUL 4/7: OPRIRE CONTAINER VECHI (dacă există)"
echo "==========================================" echo "=========================================="
echo "" echo ""
if ${PVE_CMD} pct exec ${LXC_ID} -- docker ps -a | grep -q ${CONTAINER_NAME}; then if ${PVE_CMD} pct exec ${LXC_ID} -- docker ps -a | grep -q ${CONTAINER_NAME}; then
echo "Oprire și ștergere container vechi ${CONTAINER_NAME}..." echo "Oprire și ștergere container vechi ${CONTAINER_NAME}..."
${PVE_CMD} pct exec ${LXC_ID} -- docker stop ${CONTAINER_NAME} 2>/dev/null || true ${PVE_CMD} pct exec ${LXC_ID} -- docker stop ${CONTAINER_NAME} 2>/dev/null || true
${PVE_CMD} pct exec ${LXC_ID} -- docker rm ${CONTAINER_NAME} 2>/dev/null || true ${PVE_CMD} pct exec ${LXC_ID} -- docker rm ${CONTAINER_NAME} 2>/dev/null || true
echo "✓ Container vechi șters" echo "✓ Container vechi șters"
else else
echo "✓ Nu există container vechi" echo "✓ Nu există container vechi"
fi fi
echo "" echo ""
echo "==========================================" echo "=========================================="
echo "PASUL 5/7: START ORACLE 21c XE CONTAINER" echo "PASUL 5/7: START ORACLE 21c XE CONTAINER"
echo "==========================================" echo "=========================================="
echo "" echo ""
# Creare directoare pentru date # Creare directoare pentru date
${PVE_CMD} pct exec ${LXC_ID} -- mkdir -p /opt/oracle/oradata ${PVE_CMD} pct exec ${LXC_ID} -- mkdir -p /opt/oracle/oradata
echo "Pornire container Oracle XE..." echo "Pornire container Oracle XE..."
${PVE_CMD} pct exec ${LXC_ID} -- docker run -d \ ${PVE_CMD} pct exec ${LXC_ID} -- docker run -d \
--name ${CONTAINER_NAME} \ --name ${CONTAINER_NAME} \
--restart=unless-stopped \ --restart=unless-stopped \
-p 1521:1521 \ -p 1521:1521 \
-p 5500:5500 \ -p 5500:5500 \
-e ORACLE_PWD=${ORACLE_PWD} \ -e ORACLE_PWD=${ORACLE_PWD} \
-e ORACLE_CHARACTERSET=AL32UTF8 \ -e ORACLE_CHARACTERSET=AL32UTF8 \
-v /opt/oracle/oradata:/opt/oracle/oradata \ -v /opt/oracle/oradata:/opt/oracle/oradata \
${ORACLE_IMAGE} ${ORACLE_IMAGE}
echo "✓ Container pornit" echo "✓ Container pornit"
echo "" echo ""
echo "Așteptare inițializare Oracle (~ 5-10 minute)..." echo "Așteptare inițializare Oracle (~ 5-10 minute)..."
echo "Monitorizare log: docker logs -f ${CONTAINER_NAME}" echo "Monitorizare log: docker logs -f ${CONTAINER_NAME}"
echo "" echo ""
# Așteptare până când Oracle este gata # Așteptare până când Oracle este gata
TIMEOUT=600 # 10 minute TIMEOUT=600 # 10 minute
ELAPSED=0 ELAPSED=0
INTERVAL=10 INTERVAL=10
while [ $ELAPSED -lt $TIMEOUT ]; do while [ $ELAPSED -lt $TIMEOUT ]; do
if ${PVE_CMD} pct exec ${LXC_ID} -- docker logs ${CONTAINER_NAME} 2>&1 | grep -q "DATABASE IS READY TO USE"; then if ${PVE_CMD} pct exec ${LXC_ID} -- docker logs ${CONTAINER_NAME} 2>&1 | grep -q "DATABASE IS READY TO USE"; then
echo "" echo ""
echo "✓ Oracle 21c XE READY!" echo "✓ Oracle 21c XE READY!"
break break
fi fi
echo -n "." echo -n "."
sleep $INTERVAL sleep $INTERVAL
ELAPSED=$((ELAPSED + INTERVAL)) ELAPSED=$((ELAPSED + INTERVAL))
done done
if [ $ELAPSED -ge $TIMEOUT ]; then if [ $ELAPSED -ge $TIMEOUT ]; then
echo "" echo ""
echo "ERROR: Timeout așteptând Oracle să pornească!" echo "ERROR: Timeout așteptând Oracle să pornească!"
echo "Verifică log-urile: docker logs ${CONTAINER_NAME}" echo "Verifică log-urile: docker logs ${CONTAINER_NAME}"
exit 1 exit 1
fi fi
echo "" echo ""
echo "==========================================" echo "=========================================="
echo "PASUL 6/7: ȘTERGERE XEPDB1 + CREARE PDB ROA" echo "PASUL 6/7: ȘTERGERE XEPDB1 + CREARE PDB ROA"
echo "==========================================" echo "=========================================="
echo "" echo ""
echo "Conectare la CDB și ștergere XEPDB1..." echo "Conectare la CDB și ștergere XEPDB1..."
${PVE_CMD} pct exec ${LXC_ID} -- docker exec ${CONTAINER_NAME} sqlplus -s sys/${ORACLE_PWD}@localhost:1521/XE as sysdba <<'EOF' ${PVE_CMD} pct exec ${LXC_ID} -- docker exec ${CONTAINER_NAME} sqlplus -s sys/${ORACLE_PWD}@localhost:1521/XE as sysdba <<'EOF'
SET SERVEROUTPUT ON SET SERVEROUTPUT ON
WHENEVER SQLERROR CONTINUE WHENEVER SQLERROR CONTINUE
-- Închide și șterge XEPDB1 -- Închide și șterge XEPDB1
ALTER PLUGGABLE DATABASE xepdb1 CLOSE IMMEDIATE; ALTER PLUGGABLE DATABASE xepdb1 CLOSE IMMEDIATE;
DROP PLUGGABLE DATABASE xepdb1 INCLUDING DATAFILES; DROP PLUGGABLE DATABASE xepdb1 INCLUDING DATAFILES;
-- Verificare că XEPDB1 a fost șters -- Verificare că XEPDB1 a fost șters
SELECT 'PDB după ștergere XEPDB1:' FROM DUAL; SELECT 'PDB după ștergere XEPDB1:' FROM DUAL;
SELECT name, open_mode FROM v$pdbs; SELECT name, open_mode FROM v$pdbs;
EXIT; EXIT;
EOF EOF
echo "✓ XEPDB1 șters" echo "✓ XEPDB1 șters"
echo "" echo ""
echo "Creare PDB ROA..." echo "Creare PDB ROA..."
${PVE_CMD} pct exec ${LXC_ID} -- docker exec ${CONTAINER_NAME} sqlplus -s sys/${ORACLE_PWD}@localhost:1521/XE as sysdba <<EOF ${PVE_CMD} pct exec ${LXC_ID} -- docker exec ${CONTAINER_NAME} sqlplus -s sys/${ORACLE_PWD}@localhost:1521/XE as sysdba <<EOF
SET SERVEROUTPUT ON SET SERVEROUTPUT ON
WHENEVER SQLERROR EXIT SQL.SQLCODE WHENEVER SQLERROR EXIT SQL.SQLCODE
-- Creare PDB ROA -- Creare PDB ROA
CREATE PLUGGABLE DATABASE roa CREATE PLUGGABLE DATABASE roa
ADMIN USER pdb_admin IDENTIFIED BY ${ORACLE_PWD} ADMIN USER pdb_admin IDENTIFIED BY ${ORACLE_PWD}
FILE_NAME_CONVERT=('/opt/oracle/oradata/XE/pdbseed/','/opt/oracle/oradata/XE/roa/'); FILE_NAME_CONVERT=('/opt/oracle/oradata/XE/pdbseed/','/opt/oracle/oradata/XE/roa/');
-- Deschide PDB ROA -- Deschide PDB ROA
ALTER PLUGGABLE DATABASE roa OPEN; ALTER PLUGGABLE DATABASE roa OPEN;
ALTER PLUGGABLE DATABASE roa SAVE STATE; ALTER PLUGGABLE DATABASE roa SAVE STATE;
-- Verificare -- Verificare
SELECT name, open_mode FROM v\$pdbs WHERE name='ROA'; SELECT name, open_mode FROM v\$pdbs WHERE name='ROA';
DBMS_OUTPUT.PUT_LINE('✓ PDB ROA creat și deschis!'); DBMS_OUTPUT.PUT_LINE('✓ PDB ROA creat și deschis!');
EXIT; EXIT;
EOF EOF
echo "✓ PDB ROA creat" echo "✓ PDB ROA creat"
echo "" echo ""
echo "==========================================" echo "=========================================="
echo "PASUL 7/7: PDB ROA2 (OPȚIONAL)" echo "PASUL 7/7: PDB ROA2 (OPȚIONAL)"
echo "==========================================" echo "=========================================="
echo "" echo ""
read -p "Vrei să creezi și PDB ROA2? (y/N): " -n 1 -r read -p "Vrei să creezi și PDB ROA2? (y/N): " -n 1 -r
echo "" echo ""
if [[ $REPLY =~ ^[Yy]$ ]]; then if [[ $REPLY =~ ^[Yy]$ ]]; then
echo "Creare PDB ROA2..." echo "Creare PDB ROA2..."
${PVE_CMD} pct exec ${LXC_ID} -- docker exec ${CONTAINER_NAME} sqlplus -s sys/${ORACLE_PWD}@localhost:1521/XE as sysdba <<EOF ${PVE_CMD} pct exec ${LXC_ID} -- docker exec ${CONTAINER_NAME} sqlplus -s sys/${ORACLE_PWD}@localhost:1521/XE as sysdba <<EOF
SET SERVEROUTPUT ON SET SERVEROUTPUT ON
WHENEVER SQLERROR CONTINUE WHENEVER SQLERROR CONTINUE
-- Creare PDB ROA2 -- Creare PDB ROA2
CREATE PLUGGABLE DATABASE roa2 CREATE PLUGGABLE DATABASE roa2
ADMIN USER pdb_admin IDENTIFIED BY ${ORACLE_PWD} ADMIN USER pdb_admin IDENTIFIED BY ${ORACLE_PWD}
FILE_NAME_CONVERT=('/opt/oracle/oradata/XE/pdbseed/','/opt/oracle/oradata/XE/roa2/'); FILE_NAME_CONVERT=('/opt/oracle/oradata/XE/pdbseed/','/opt/oracle/oradata/XE/roa2/');
-- Deschide PDB ROA2 -- Deschide PDB ROA2
ALTER PLUGGABLE DATABASE roa2 OPEN; ALTER PLUGGABLE DATABASE roa2 OPEN;
ALTER PLUGGABLE DATABASE roa2 SAVE STATE; ALTER PLUGGABLE DATABASE roa2 SAVE STATE;
-- Verificare -- Verificare
SELECT name, open_mode FROM v\$pdbs WHERE name='ROA2'; SELECT name, open_mode FROM v\$pdbs WHERE name='ROA2';
DBMS_OUTPUT.PUT_LINE('✓ PDB ROA2 creat și deschis!'); DBMS_OUTPUT.PUT_LINE('✓ PDB ROA2 creat și deschis!');
EXIT; EXIT;
EOF EOF
echo "✓ PDB ROA2 creat" echo "✓ PDB ROA2 creat"
else else
echo "✓ PDB ROA2 omis" echo "✓ PDB ROA2 omis"
fi fi
echo "" echo ""
echo "==========================================" echo "=========================================="
echo "✅ INSTALARE ORACLE 21c XE COMPLETĂ!" echo "✅ INSTALARE ORACLE 21c XE COMPLETĂ!"
echo "==========================================" echo "=========================================="
echo "" echo ""
echo "Detalii instalare:" echo "Detalii instalare:"
echo " - LXC: ${LXC_ID}" echo " - LXC: ${LXC_ID}"
echo " - Container: ${CONTAINER_NAME}" echo " - Container: ${CONTAINER_NAME}"
echo " - CDB: XE" echo " - CDB: XE"
echo " - PDB: ROA (și ROA2 dacă ai creat)" echo " - PDB: ROA (și ROA2 dacă ai creat)"
echo " - XEPDB1: ȘTERS" echo " - XEPDB1: ȘTERS"
echo "" echo ""
echo "Conexiuni:" echo "Conexiuni:"
echo " - CDB: sys/${ORACLE_PWD}@${PROXMOX_HOST}:1521/XE as sysdba" echo " - CDB: sys/${ORACLE_PWD}@${PROXMOX_HOST}:1521/XE as sysdba"
echo " - PDB ROA: sys/${ORACLE_PWD}@${PROXMOX_HOST}:1521/roa as sysdba" echo " - PDB ROA: sys/${ORACLE_PWD}@${PROXMOX_HOST}:1521/roa as sysdba"
if [[ $REPLY =~ ^[Yy]$ ]]; then if [[ $REPLY =~ ^[Yy]$ ]]; then
echo " - PDB ROA2: sys/${ORACLE_PWD}@${PROXMOX_HOST}:1521/roa2 as sysdba" echo " - PDB ROA2: sys/${ORACLE_PWD}@${PROXMOX_HOST}:1521/roa2 as sysdba"
fi fi
echo "" echo ""
echo "Test conexiune:" echo "Test conexiune:"
echo " ${PVE_CMD} pct exec ${LXC_ID} -- docker exec -it ${CONTAINER_NAME} sqlplus sys/${ORACLE_PWD}@localhost:1521/roa as sysdba" echo " ${PVE_CMD} pct exec ${LXC_ID} -- docker exec -it ${CONTAINER_NAME} sqlplus sys/${ORACLE_PWD}@localhost:1521/roa as sysdba"
echo "" echo ""
echo "Verificare PDB-uri:" echo "Verificare PDB-uri:"
${PVE_CMD} pct exec ${LXC_ID} -- docker exec ${CONTAINER_NAME} sqlplus -s sys/${ORACLE_PWD}@localhost:1521/XE as sysdba <<'EOF' ${PVE_CMD} pct exec ${LXC_ID} -- docker exec ${CONTAINER_NAME} sqlplus -s sys/${ORACLE_PWD}@localhost:1521/XE as sysdba <<'EOF'
SET PAGESIZE 50 SET PAGESIZE 50
SELECT con_id, name, open_mode, restricted FROM v$pdbs ORDER BY con_id; SELECT con_id, name, open_mode, restricted FROM v$pdbs ORDER BY con_id;
EXIT; EXIT;
EOF EOF
echo "" echo ""
echo "Management container:" echo "Management container:"
echo " Start: ${PVE_CMD} pct exec ${LXC_ID} -- docker start ${CONTAINER_NAME}" echo " Start: ${PVE_CMD} pct exec ${LXC_ID} -- docker start ${CONTAINER_NAME}"
echo " Stop: ${PVE_CMD} pct exec ${LXC_ID} -- docker stop ${CONTAINER_NAME}" echo " Stop: ${PVE_CMD} pct exec ${LXC_ID} -- docker stop ${CONTAINER_NAME}"
echo " Logs: ${PVE_CMD} pct exec ${LXC_ID} -- docker logs -f ${CONTAINER_NAME}" echo " Logs: ${PVE_CMD} pct exec ${LXC_ID} -- docker logs -f ${CONTAINER_NAME}"
echo " Shell: ${PVE_CMD} pct exec ${LXC_ID} -- docker exec -it ${CONTAINER_NAME} bash" echo " Shell: ${PVE_CMD} pct exec ${LXC_ID} -- docker exec -it ${CONTAINER_NAME} bash"
echo "" echo ""
echo "Următorul pas: 01-setup-oracle21c.sh (pentru tablespace + useri)" echo "Următorul pas: 01-setup-oracle21c.sh (pentru tablespace + useri)"
echo "" echo ""

View File

@@ -1,209 +1,209 @@
#!/bin/bash #!/bin/bash
#============================================================================== #==============================================================================
# Script: 01-setup-oracle21c.sh # Script: 01-setup-oracle21c.sh
# Descriere: Pregătire Oracle 21c XE - Creare PDB ROA, Tablespace ROA, Useri # Descriere: Pregătire Oracle 21c XE - Creare PDB ROA, Tablespace ROA, Useri
# Data: 30 Septembrie 2025 # Data: 30 Septembrie 2025
# Rulare: bash 01-setup-oracle21c.sh # Rulare: bash 01-setup-oracle21c.sh
#============================================================================== #==============================================================================
set -e # Exit on error set -e # Exit on error
echo "==========================================" echo "=========================================="
echo "ORACLE 21c XE - SETUP PDB ROA" echo "ORACLE 21c XE - SETUP PDB ROA"
echo "==========================================" echo "=========================================="
echo "" echo ""
# Configurare # Configurare
ORACLE_PWD="OraclePass123" ORACLE_PWD="OraclePass123"
CDB_CONNECT="sys/${ORACLE_PWD}@localhost:1521/XE as sysdba" CDB_CONNECT="sys/${ORACLE_PWD}@localhost:1521/XE as sysdba"
PDB_CONNECT="sys/${ORACLE_PWD}@localhost:1521/roa as sysdba" PDB_CONNECT="sys/${ORACLE_PWD}@localhost:1521/roa as sysdba"
LXC_ID="108" LXC_ID="108"
CONTAINER_NAME="oracle-xe" CONTAINER_NAME="oracle-xe"
echo "[1/5] Verificare container Oracle XE..." echo "[1/5] Verificare container Oracle XE..."
# Detectare dacă rulează în LXC sau pe Proxmox # Detectare dacă rulează în LXC sau pe Proxmox
if [ -f "/etc/pve/.version" ]; then if [ -f "/etc/pve/.version" ]; then
# Rulează pe Proxmox host # Rulează pe Proxmox host
CMD_PREFIX="pct exec ${LXC_ID} --" CMD_PREFIX="pct exec ${LXC_ID} --"
else else
# Rulează direct în LXC # Rulează direct în LXC
CMD_PREFIX="" CMD_PREFIX=""
fi fi
if ! ${CMD_PREFIX} docker ps | grep -q ${CONTAINER_NAME}; then if ! ${CMD_PREFIX} docker ps | grep -q ${CONTAINER_NAME}; then
echo "ERROR: Container ${CONTAINER_NAME} nu rulează!" echo "ERROR: Container ${CONTAINER_NAME} nu rulează!"
echo "" echo ""
echo "Opțiuni:" echo "Opțiuni:"
echo " 1. Rulează: bash 00-install-oracle21c-xe.sh" echo " 1. Rulează: bash 00-install-oracle21c-xe.sh"
echo " 2. Sau pornește manual: docker start ${CONTAINER_NAME}" echo " 2. Sau pornește manual: docker start ${CONTAINER_NAME}"
exit 1 exit 1
fi fi
echo "✓ Container ${CONTAINER_NAME} activ" echo "✓ Container ${CONTAINER_NAME} activ"
echo "" echo ""
echo "[2/5] Verificare PDB ROA există..." echo "[2/5] Verificare PDB ROA există..."
PDB_EXISTS=$(${CMD_PREFIX} docker exec ${CONTAINER_NAME} sqlplus -s ${CDB_CONNECT} <<'EOF' PDB_EXISTS=$(${CMD_PREFIX} docker exec ${CONTAINER_NAME} sqlplus -s ${CDB_CONNECT} <<'EOF'
SET PAGESIZE 0 FEEDBACK OFF HEADING OFF SET PAGESIZE 0 FEEDBACK OFF HEADING OFF
SELECT COUNT(*) FROM v$pdbs WHERE name='ROA'; SELECT COUNT(*) FROM v$pdbs WHERE name='ROA';
EXIT; EXIT;
EOF EOF
) )
if [ "$PDB_EXISTS" = "0" ] || [ -z "$PDB_EXISTS" ]; then if [ "$PDB_EXISTS" = "0" ] || [ -z "$PDB_EXISTS" ]; then
echo "ERROR: PDB ROA nu există!" echo "ERROR: PDB ROA nu există!"
echo "" echo ""
echo "Rulează mai întâi: bash 00-install-oracle21c-xe.sh" echo "Rulează mai întâi: bash 00-install-oracle21c-xe.sh"
exit 1 exit 1
fi fi
echo "✓ PDB ROA există" echo "✓ PDB ROA există"
echo "" echo ""
echo "[3/5] Creare Tablespace ROA..." echo "[3/5] Creare Tablespace ROA..."
${CMD_PREFIX} docker exec ${CONTAINER_NAME} sqlplus -s ${PDB_CONNECT} <<EOF ${CMD_PREFIX} docker exec ${CONTAINER_NAME} sqlplus -s ${PDB_CONNECT} <<EOF
SET SERVEROUTPUT ON SET SERVEROUTPUT ON
WHENEVER SQLERROR EXIT SQL.SQLCODE WHENEVER SQLERROR EXIT SQL.SQLCODE
-- Verificare că suntem în PDB ROA -- Verificare că suntem în PDB ROA
SELECT 'Connected to: ' || name || ' (CDB=' || cdb || ')' FROM v\$database; SELECT 'Connected to: ' || name || ' (CDB=' || cdb || ')' FROM v\$database;
-- Creare tablespace ROA (ca în Oracle 10g) -- Creare tablespace ROA (ca în Oracle 10g)
CREATE TABLESPACE ROA CREATE TABLESPACE ROA
DATAFILE '/opt/oracle/oradata/XE/roa/roa_data01.dbf' DATAFILE '/opt/oracle/oradata/XE/roa/roa_data01.dbf'
SIZE 20G AUTOEXTEND ON NEXT 500M MAXSIZE UNLIMITED SIZE 20G AUTOEXTEND ON NEXT 500M MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL AUTOALLOCATE EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT AUTO; SEGMENT SPACE MANAGEMENT AUTO;
-- Verificare -- Verificare
SELECT tablespace_name, status, contents FROM dba_tablespaces WHERE tablespace_name='ROA'; SELECT tablespace_name, status, contents FROM dba_tablespaces WHERE tablespace_name='ROA';
EXIT; EXIT;
EOF EOF
echo "✓ Tablespace ROA creat (20GB, autoextend)" echo "✓ Tablespace ROA creat (20GB, autoextend)"
echo "" echo ""
echo "[4/5] Creare utilizatori CONTAFIN_ORACLE și schema secundara..." echo "[4/5] Creare utilizatori CONTAFIN_ORACLE și schema secundara..."
# Detectare mod migrare (daca exista variabila exportata din master script) # Detectare mod migrare (daca exista variabila exportata din master script)
if [ "$MIGRATION_MODE" = "NEW_INSTALL" ]; then if [ "$MIGRATION_MODE" = "NEW_INSTALL" ]; then
echo "" echo ""
echo "Mod: INSTALARE NOUA" echo "Mod: INSTALARE NOUA"
read -p "Introdu numele schemei secundare (ex: FIRMANOUA): " SCHEMA2_NAME read -p "Introdu numele schemei secundare (ex: FIRMANOUA): " SCHEMA2_NAME
SCHEMA2_NAME=$(echo "$SCHEMA2_NAME" | tr '[:lower:]' '[:upper:]') SCHEMA2_NAME=$(echo "$SCHEMA2_NAME" | tr '[:lower:]' '[:upper:]')
echo "Schema secundara: $SCHEMA2_NAME" echo "Schema secundara: $SCHEMA2_NAME"
export SCHEMA2_NAME export SCHEMA2_NAME
else else
SCHEMA2_NAME="MARIUSM_AUTO" SCHEMA2_NAME="MARIUSM_AUTO"
echo "Mod: MIGRARE (schema secundara: MARIUSM_AUTO)" echo "Mod: MIGRARE (schema secundara: MARIUSM_AUTO)"
fi fi
echo "" echo ""
${CMD_PREFIX} docker exec ${CONTAINER_NAME} sqlplus -s ${PDB_CONNECT} <<EOF ${CMD_PREFIX} docker exec ${CONTAINER_NAME} sqlplus -s ${PDB_CONNECT} <<EOF
SET SERVEROUTPUT ON SET SERVEROUTPUT ON
WHENEVER SQLERROR EXIT SQL.SQLCODE WHENEVER SQLERROR EXIT SQL.SQLCODE
-- User CONTAFIN_ORACLE -- User CONTAFIN_ORACLE
CREATE USER CONTAFIN_ORACLE IDENTIFIED BY ${ORACLE_PWD} CREATE USER CONTAFIN_ORACLE IDENTIFIED BY ${ORACLE_PWD}
DEFAULT TABLESPACE ROA DEFAULT TABLESPACE ROA
TEMPORARY TABLESPACE TEMP TEMPORARY TABLESPACE TEMP
QUOTA UNLIMITED ON ROA; QUOTA UNLIMITED ON ROA;
-- User schema secundara (MARIUSM_AUTO sau custom) -- User schema secundara (MARIUSM_AUTO sau custom)
CREATE USER ${SCHEMA2_NAME} IDENTIFIED BY ${ORACLE_PWD} CREATE USER ${SCHEMA2_NAME} IDENTIFIED BY ${ORACLE_PWD}
DEFAULT TABLESPACE ROA DEFAULT TABLESPACE ROA
TEMPORARY TABLESPACE TEMP TEMPORARY TABLESPACE TEMP
QUOTA UNLIMITED ON ROA; QUOTA UNLIMITED ON ROA;
-- Verificare -- Verificare
SELECT username, default_tablespace, account_status SELECT username, default_tablespace, account_status
FROM dba_users FROM dba_users
WHERE username IN ('CONTAFIN_ORACLE','${SCHEMA2_NAME}') WHERE username IN ('CONTAFIN_ORACLE','${SCHEMA2_NAME}')
ORDER BY username; ORDER BY username;
EXIT; EXIT;
EOF EOF
echo "✓ Utilizatori creați (parola: ${ORACLE_PWD})" echo "✓ Utilizatori creați (parola: ${ORACLE_PWD})"
echo "" echo ""
echo "[5/5] Acordare System Privileges + DBMS Packages..." echo "[5/5] Acordare System Privileges + DBMS Packages..."
${CMD_PREFIX} docker exec ${CONTAINER_NAME} sqlplus -s ${PDB_CONNECT} <<EOF ${CMD_PREFIX} docker exec ${CONTAINER_NAME} sqlplus -s ${PDB_CONNECT} <<EOF
WHENEVER SQLERROR EXIT SQL.SQLCODE WHENEVER SQLERROR EXIT SQL.SQLCODE
-- CONTAFIN_ORACLE - Privilegii COMPLETE (ca în 10g) -- CONTAFIN_ORACLE - Privilegii COMPLETE (ca în 10g)
GRANT CONNECT, RESOURCE, DBA TO CONTAFIN_ORACLE; GRANT CONNECT, RESOURCE, DBA TO CONTAFIN_ORACLE;
GRANT CREATE SESSION TO CONTAFIN_ORACLE; GRANT CREATE SESSION TO CONTAFIN_ORACLE;
GRANT CREATE TABLE TO CONTAFIN_ORACLE; GRANT CREATE TABLE TO CONTAFIN_ORACLE;
GRANT CREATE VIEW TO CONTAFIN_ORACLE; GRANT CREATE VIEW TO CONTAFIN_ORACLE;
GRANT CREATE SEQUENCE TO CONTAFIN_ORACLE; GRANT CREATE SEQUENCE TO CONTAFIN_ORACLE;
GRANT CREATE PROCEDURE TO CONTAFIN_ORACLE; GRANT CREATE PROCEDURE TO CONTAFIN_ORACLE;
GRANT CREATE TRIGGER TO CONTAFIN_ORACLE; GRANT CREATE TRIGGER TO CONTAFIN_ORACLE;
GRANT CREATE TYPE TO CONTAFIN_ORACLE; GRANT CREATE TYPE TO CONTAFIN_ORACLE;
GRANT CREATE SYNONYM TO CONTAFIN_ORACLE; GRANT CREATE SYNONYM TO CONTAFIN_ORACLE;
GRANT CREATE PUBLIC SYNONYM TO CONTAFIN_ORACLE; GRANT CREATE PUBLIC SYNONYM TO CONTAFIN_ORACLE;
GRANT CREATE DATABASE LINK TO CONTAFIN_ORACLE; GRANT CREATE DATABASE LINK TO CONTAFIN_ORACLE;
GRANT CREATE JOB TO CONTAFIN_ORACLE; GRANT CREATE JOB TO CONTAFIN_ORACLE;
GRANT CREATE ANY DIRECTORY TO CONTAFIN_ORACLE; GRANT CREATE ANY DIRECTORY TO CONTAFIN_ORACLE;
GRANT SELECT ANY TABLE TO CONTAFIN_ORACLE; GRANT SELECT ANY TABLE TO CONTAFIN_ORACLE;
GRANT INSERT ANY TABLE TO CONTAFIN_ORACLE; GRANT INSERT ANY TABLE TO CONTAFIN_ORACLE;
GRANT UPDATE ANY TABLE TO CONTAFIN_ORACLE; GRANT UPDATE ANY TABLE TO CONTAFIN_ORACLE;
GRANT DELETE ANY TABLE TO CONTAFIN_ORACLE; GRANT DELETE ANY TABLE TO CONTAFIN_ORACLE;
GRANT EXECUTE ANY PROCEDURE TO CONTAFIN_ORACLE; GRANT EXECUTE ANY PROCEDURE TO CONTAFIN_ORACLE;
GRANT CREATE EXTERNAL JOB TO CONTAFIN_ORACLE; GRANT CREATE EXTERNAL JOB TO CONTAFIN_ORACLE;
GRANT EXP_FULL_DATABASE TO CONTAFIN_ORACLE; GRANT EXP_FULL_DATABASE TO CONTAFIN_ORACLE;
GRANT IMP_FULL_DATABASE TO CONTAFIN_ORACLE; GRANT IMP_FULL_DATABASE TO CONTAFIN_ORACLE;
GRANT UNLIMITED TABLESPACE TO CONTAFIN_ORACLE; GRANT UNLIMITED TABLESPACE TO CONTAFIN_ORACLE;
-- Schema secundara - Privilegii Standard -- Schema secundara - Privilegii Standard
GRANT CONNECT, RESOURCE TO ${SCHEMA2_NAME}; GRANT CONNECT, RESOURCE TO ${SCHEMA2_NAME};
GRANT CREATE SESSION TO ${SCHEMA2_NAME}; GRANT CREATE SESSION TO ${SCHEMA2_NAME};
GRANT CREATE TABLE TO ${SCHEMA2_NAME}; GRANT CREATE TABLE TO ${SCHEMA2_NAME};
GRANT CREATE VIEW TO ${SCHEMA2_NAME}; GRANT CREATE VIEW TO ${SCHEMA2_NAME};
GRANT CREATE SEQUENCE TO ${SCHEMA2_NAME}; GRANT CREATE SEQUENCE TO ${SCHEMA2_NAME};
GRANT CREATE PROCEDURE TO ${SCHEMA2_NAME}; GRANT CREATE PROCEDURE TO ${SCHEMA2_NAME};
GRANT CREATE TRIGGER TO ${SCHEMA2_NAME}; GRANT CREATE TRIGGER TO ${SCHEMA2_NAME};
GRANT CREATE TYPE TO ${SCHEMA2_NAME}; GRANT CREATE TYPE TO ${SCHEMA2_NAME};
GRANT CREATE SYNONYM TO ${SCHEMA2_NAME}; GRANT CREATE SYNONYM TO ${SCHEMA2_NAME};
GRANT CREATE DATABASE LINK TO ${SCHEMA2_NAME}; GRANT CREATE DATABASE LINK TO ${SCHEMA2_NAME};
GRANT CREATE JOB TO ${SCHEMA2_NAME}; GRANT CREATE JOB TO ${SCHEMA2_NAME};
GRANT UNLIMITED TABLESPACE TO ${SCHEMA2_NAME}; GRANT UNLIMITED TABLESPACE TO ${SCHEMA2_NAME};
-- Grant-uri DBMS packages -- Grant-uri DBMS packages
GRANT EXECUTE ON DBMS_LOCK TO CONTAFIN_ORACLE; GRANT EXECUTE ON DBMS_LOCK TO CONTAFIN_ORACLE;
GRANT EXECUTE ON DBMS_SQL TO CONTAFIN_ORACLE; GRANT EXECUTE ON DBMS_SQL TO CONTAFIN_ORACLE;
GRANT EXECUTE ON DBMS_UTILITY TO CONTAFIN_ORACLE; GRANT EXECUTE ON DBMS_UTILITY TO CONTAFIN_ORACLE;
GRANT EXECUTE ON DBMS_OUTPUT TO CONTAFIN_ORACLE; GRANT EXECUTE ON DBMS_OUTPUT TO CONTAFIN_ORACLE;
GRANT EXECUTE ON DBMS_JOB TO CONTAFIN_ORACLE; GRANT EXECUTE ON DBMS_JOB TO CONTAFIN_ORACLE;
GRANT EXECUTE ON DBMS_SCHEDULER TO CONTAFIN_ORACLE; GRANT EXECUTE ON DBMS_SCHEDULER TO CONTAFIN_ORACLE;
GRANT EXECUTE ON DBMS_LOB TO CONTAFIN_ORACLE; GRANT EXECUTE ON DBMS_LOB TO CONTAFIN_ORACLE;
GRANT EXECUTE ON DBMS_XMLGEN TO CONTAFIN_ORACLE; GRANT EXECUTE ON DBMS_XMLGEN TO CONTAFIN_ORACLE;
GRANT EXECUTE ON DBMS_METADATA TO CONTAFIN_ORACLE; GRANT EXECUTE ON DBMS_METADATA TO CONTAFIN_ORACLE;
GRANT EXECUTE ON UTL_FILE TO CONTAFIN_ORACLE; GRANT EXECUTE ON UTL_FILE TO CONTAFIN_ORACLE;
GRANT EXECUTE ON UTL_HTTP TO CONTAFIN_ORACLE; GRANT EXECUTE ON UTL_HTTP TO CONTAFIN_ORACLE;
GRANT EXECUTE ON UTL_SMTP TO CONTAFIN_ORACLE; GRANT EXECUTE ON UTL_SMTP TO CONTAFIN_ORACLE;
GRANT EXECUTE ON UTL_TCP TO CONTAFIN_ORACLE; GRANT EXECUTE ON UTL_TCP TO CONTAFIN_ORACLE;
EXIT; EXIT;
EOF EOF
echo "✓ System privileges + DBMS packages acordate" echo "✓ System privileges + DBMS packages acordate"
echo "" echo ""
echo "==========================================" echo "=========================================="
echo "✅ SETUP COMPLET!" echo "✅ SETUP COMPLET!"
echo "==========================================" echo "=========================================="
echo "" echo ""
echo "PDB ROA creat și configurat:" echo "PDB ROA creat și configurat:"
echo " - Tablespace: ROA (20GB, autoextend)" echo " - Tablespace: ROA (20GB, autoextend)"
echo " - User CONTAFIN_ORACLE (parola: ${ORACLE_PWD})" echo " - User CONTAFIN_ORACLE (parola: ${ORACLE_PWD})"
echo " - User ${SCHEMA2_NAME} (parola: ${ORACLE_PWD})" echo " - User ${SCHEMA2_NAME} (parola: ${ORACLE_PWD})"
echo " - System privileges: ✓" echo " - System privileges: ✓"
echo " - DBMS grants: ✓" echo " - DBMS grants: ✓"
echo "" echo ""
echo "Conexiune test:" echo "Conexiune test:"
echo " sqlplus CONTAFIN_ORACLE/${ORACLE_PWD}@localhost:1521/roa" echo " sqlplus CONTAFIN_ORACLE/${ORACLE_PWD}@localhost:1521/roa"
echo "" echo ""
if [ "$MIGRATION_MODE" = "NEW_INSTALL" ]; then if [ "$MIGRATION_MODE" = "NEW_INSTALL" ]; then
echo "Următorul pas: 03-transfer-to-oracle21c.sh (transfer template-uri)" echo "Următorul pas: 03-transfer-to-oracle21c.sh (transfer template-uri)"
else else
echo "Următorul pas: 02-export-oracle10g.bat (pe VM 107 Windows)" echo "Următorul pas: 02-export-oracle10g.bat (pe VM 107 Windows)"
fi fi
echo "" echo ""

View File

@@ -1,417 +1,417 @@
#!/bin/bash #!/bin/bash
################################################################################ ################################################################################
# 02-export-source.sh - Universal Export Script (Auto/Manual) # 02-export-source.sh - Universal Export Script (Auto/Manual)
# Version: 2.1 # Version: 2.1
# Purpose: Export Oracle data with automatic (SSH) or manual modes # Purpose: Export Oracle data with automatic (SSH) or manual modes
################################################################################ ################################################################################
set -e set -e
echo "==========================================" echo "=========================================="
echo "ORACLE EXPORT - UNIVERSAL MODE" echo "ORACLE EXPORT - UNIVERSAL MODE"
echo "==========================================" echo "=========================================="
echo "" echo ""
# Check required variables from master script # Check required variables from master script
if [ -z "$EXPORT_MODE" ]; then if [ -z "$EXPORT_MODE" ]; then
echo "ERROR: EXPORT_MODE not set. Run via 00-MASTER-MIGRATION.sh" echo "ERROR: EXPORT_MODE not set. Run via 00-MASTER-MIGRATION.sh"
exit 1 exit 1
fi fi
# Set default export directory # Set default export directory
EXPORT_DIR="${EXPORT_DIR:-/tmp/oracle-export}" EXPORT_DIR="${EXPORT_DIR:-/tmp/oracle-export}"
# Export timestamp for filenames # Export timestamp for filenames
TIMESTAMP=$(date +%Y%m%d_%H%M%S) TIMESTAMP=$(date +%Y%m%d_%H%M%S)
################################################################################ ################################################################################
# AUTOMATIC EXPORT (via SSH) # AUTOMATIC EXPORT (via SSH)
################################################################################ ################################################################################
if [ "$EXPORT_MODE" = "AUTO" ]; then if [ "$EXPORT_MODE" = "AUTO" ]; then
echo "🔄 Mod AUTOMAT - Export via SSH" echo "🔄 Mod AUTOMAT - Export via SSH"
echo "" echo ""
# Validate SSH configuration # Validate SSH configuration
if [ -z "$ORACLE_SOURCE_HOST" ] || [ -z "$ORACLE_SOURCE_USER" ]; then if [ -z "$ORACLE_SOURCE_HOST" ] || [ -z "$ORACLE_SOURCE_USER" ]; then
echo "ERROR: SSH configuration incomplete" echo "ERROR: SSH configuration incomplete"
echo " ORACLE_SOURCE_HOST: $ORACLE_SOURCE_HOST" echo " ORACLE_SOURCE_HOST: $ORACLE_SOURCE_HOST"
echo " ORACLE_SOURCE_USER: $ORACLE_SOURCE_USER" echo " ORACLE_SOURCE_USER: $ORACLE_SOURCE_USER"
exit 1 exit 1
fi fi
echo "Source Configuration:" echo "Source Configuration:"
echo " Host: $ORACLE_SOURCE_HOST" echo " Host: $ORACLE_SOURCE_HOST"
echo " User: $ORACLE_SOURCE_USER" echo " User: $ORACLE_SOURCE_USER"
echo " OS: $ORACLE_SOURCE_OS" echo " OS: $ORACLE_SOURCE_OS"
echo "" echo ""
# Test SSH connection # Test SSH connection
echo "Testing SSH connection..." echo "Testing SSH connection..."
if ! ssh -o ConnectTimeout=5 ${ORACLE_SOURCE_USER}@${ORACLE_SOURCE_HOST} "echo 'SSH OK'" > /dev/null 2>&1; then if ! ssh -o ConnectTimeout=5 ${ORACLE_SOURCE_USER}@${ORACLE_SOURCE_HOST} "echo 'SSH OK'" > /dev/null 2>&1; then
echo "ERROR: Cannot connect via SSH to ${ORACLE_SOURCE_USER}@${ORACLE_SOURCE_HOST}" echo "ERROR: Cannot connect via SSH to ${ORACLE_SOURCE_USER}@${ORACLE_SOURCE_HOST}"
echo "Please check:" echo "Please check:"
echo " 1. SSH service is running on source" echo " 1. SSH service is running on source"
echo " 2. SSH keys are configured (or use ssh-copy-id)" echo " 2. SSH keys are configured (or use ssh-copy-id)"
echo " 3. Firewall allows SSH connection" echo " 3. Firewall allows SSH connection"
exit 1 exit 1
fi fi
echo "✓ SSH connection OK" echo "✓ SSH connection OK"
echo "" echo ""
# Execute export based on source OS # Execute export based on source OS
if [ "$ORACLE_SOURCE_OS" = "Windows" ]; then if [ "$ORACLE_SOURCE_OS" = "Windows" ]; then
echo "Executing Windows export via SSH..." echo "Executing Windows export via SSH..."
# Check if export script exists on Windows # Check if export script exists on Windows
if ! ssh ${ORACLE_SOURCE_USER}@${ORACLE_SOURCE_HOST} "if exist D:\\oracle-export-scripts\\00-MASTER-EXPORT-WSL.bat (echo EXISTS)" | grep -q "EXISTS"; then if ! ssh ${ORACLE_SOURCE_USER}@${ORACLE_SOURCE_HOST} "if exist D:\\oracle-export-scripts\\00-MASTER-EXPORT-WSL.bat (echo EXISTS)" | grep -q "EXISTS"; then
echo "ERROR: Export script not found on Windows server" echo "ERROR: Export script not found on Windows server"
echo "Expected path: D:\\oracle-export-scripts\\00-MASTER-EXPORT-WSL.bat" echo "Expected path: D:\\oracle-export-scripts\\00-MASTER-EXPORT-WSL.bat"
exit 1 exit 1
fi fi
# Execute Windows batch script # Execute Windows batch script
echo "Running export on Windows (this may take several minutes)..." echo "Running export on Windows (this may take several minutes)..."
ssh ${ORACLE_SOURCE_USER}@${ORACLE_SOURCE_HOST} 'cmd /c "D:\oracle-export-scripts\00-MASTER-EXPORT-WSL.bat"' ssh ${ORACLE_SOURCE_USER}@${ORACLE_SOURCE_HOST} 'cmd /c "D:\oracle-export-scripts\00-MASTER-EXPORT-WSL.bat"'
# Set remote export path for transfer # Set remote export path for transfer
REMOTE_EXPORT_PATH="D:\\oracle-export" REMOTE_EXPORT_PATH="D:\\oracle-export"
else else
# Linux/Unix export # Linux/Unix export
echo "Executing Linux export via SSH..." echo "Executing Linux export via SSH..."
# Check if export script exists # Check if export script exists
if ! ssh ${ORACLE_SOURCE_USER}@${ORACLE_SOURCE_HOST} "test -f /tmp/export-scripts/00-MASTER-EXPORT-ALL.sh && echo EXISTS" | grep -q "EXISTS"; then if ! ssh ${ORACLE_SOURCE_USER}@${ORACLE_SOURCE_HOST} "test -f /tmp/export-scripts/00-MASTER-EXPORT-ALL.sh && echo EXISTS" | grep -q "EXISTS"; then
echo "ERROR: Export script not found on Linux server" echo "ERROR: Export script not found on Linux server"
echo "Expected path: /tmp/export-scripts/00-MASTER-EXPORT-ALL.sh" echo "Expected path: /tmp/export-scripts/00-MASTER-EXPORT-ALL.sh"
exit 1 exit 1
fi fi
# Execute Linux export script # Execute Linux export script
echo "Running export on Linux (this may take several minutes)..." echo "Running export on Linux (this may take several minutes)..."
ssh ${ORACLE_SOURCE_USER}@${ORACLE_SOURCE_HOST} "cd /tmp/export-scripts && bash ./00-MASTER-EXPORT-ALL.sh" ssh ${ORACLE_SOURCE_USER}@${ORACLE_SOURCE_HOST} "cd /tmp/export-scripts && bash ./00-MASTER-EXPORT-ALL.sh"
# Set remote export path for transfer # Set remote export path for transfer
REMOTE_EXPORT_PATH="/tmp/oracle-export" REMOTE_EXPORT_PATH="/tmp/oracle-export"
fi fi
echo "" echo ""
echo "✓ Export completed on source server" echo "✓ Export completed on source server"
echo "" echo ""
echo "Next: Run 03-transfer-to-oracle21c.sh to copy files" echo "Next: Run 03-transfer-to-oracle21c.sh to copy files"
################################################################################ ################################################################################
# UPGRADE IN-PLACE (Complete guided workflow) # UPGRADE IN-PLACE (Complete guided workflow)
################################################################################ ################################################################################
elif [ "$EXPORT_MODE" = "INPLACE" ]; then elif [ "$EXPORT_MODE" = "INPLACE" ]; then
echo "🎯 Mod UPGRADE IN-PLACE - Ghidare completă" echo "🎯 Mod UPGRADE IN-PLACE - Ghidare completă"
echo "" echo ""
echo "==========================================" echo "=========================================="
echo "📤 PASUL 1/5: EXPORT DIN ORACLE VECHI" echo "📤 PASUL 1/5: EXPORT DIN ORACLE VECHI"
echo "==========================================" echo "=========================================="
echo "" echo ""
# Detectare unde să execute comenzile # Detectare unde să execute comenzile
if [ "$ORACLE_SOURCE_OS" = "Windows" ]; then if [ "$ORACLE_SOURCE_OS" = "Windows" ]; then
print_warning "⚠️ IMPORTANT: Execută comenzile de mai jos pe WINDOWS (unde e Oracle vechi)" print_warning "⚠️ IMPORTANT: Execută comenzile de mai jos pe WINDOWS (unde e Oracle vechi)"
echo "" echo ""
echo "Deschide Command Prompt (cmd) CA ADMINISTRATOR și rulează:" echo "Deschide Command Prompt (cmd) CA ADMINISTRATOR și rulează:"
echo "" echo ""
echo "REM ===================================================" echo "REM ==================================================="
echo "REM Export CONTAFIN_ORACLE" echo "REM Export CONTAFIN_ORACLE"
echo "REM ===================================================" echo "REM ==================================================="
echo "cd /d $EXPORT_DIR" echo "cd /d $EXPORT_DIR"
echo "mkdir %CD% 2>nul" echo "mkdir %CD% 2>nul"
echo "" echo ""
echo "exp system/${OLD_ORACLE_PASS}@localhost:${OLD_ORACLE_PORT}/${OLD_ORACLE_SID} ^" echo "exp system/${OLD_ORACLE_PASS}@localhost:${OLD_ORACLE_PORT}/${OLD_ORACLE_SID} ^"
echo " FILE=CONTAFIN_ORACLE_%DATE:~-4%%DATE:~3,2%%DATE:~0,2%.dmp ^" echo " FILE=CONTAFIN_ORACLE_%DATE:~-4%%DATE:~3,2%%DATE:~0,2%.dmp ^"
echo " OWNER=CONTAFIN_ORACLE ^" echo " OWNER=CONTAFIN_ORACLE ^"
echo " LOG=contafin_export.log ^" echo " LOG=contafin_export.log ^"
echo " CONSISTENT=Y" echo " CONSISTENT=Y"
echo "" echo ""
if [ -n "$SCHEMA2_NAME" ] && [ "$SCHEMA2_NAME" != "none" ]; then if [ -n "$SCHEMA2_NAME" ] && [ "$SCHEMA2_NAME" != "none" ]; then
echo "REM ===================================================" echo "REM ==================================================="
echo "REM Export $SCHEMA2_NAME" echo "REM Export $SCHEMA2_NAME"
echo "REM ===================================================" echo "REM ==================================================="
echo "exp system/${OLD_ORACLE_PASS}@localhost:${OLD_ORACLE_PORT}/${OLD_ORACLE_SID} ^" echo "exp system/${OLD_ORACLE_PASS}@localhost:${OLD_ORACLE_PORT}/${OLD_ORACLE_SID} ^"
echo " FILE=${SCHEMA2_NAME}_%DATE:~-4%%DATE:~3,2%%DATE:~0,2%.dmp ^" echo " FILE=${SCHEMA2_NAME}_%DATE:~-4%%DATE:~3,2%%DATE:~0,2%.dmp ^"
echo " OWNER=$SCHEMA2_NAME ^" echo " OWNER=$SCHEMA2_NAME ^"
echo " LOG=${SCHEMA2_NAME,,}_export.log ^" echo " LOG=${SCHEMA2_NAME,,}_export.log ^"
echo " CONSISTENT=Y" echo " CONSISTENT=Y"
echo "" echo ""
fi fi
echo "REM Verificare fișiere create" echo "REM Verificare fișiere create"
echo "dir *.dmp" echo "dir *.dmp"
echo "" echo ""
else else
# Linux # Linux
print_warning "⚠️ IMPORTANT: Execută comenzile de mai jos pe LINUX (unde e Oracle vechi)" print_warning "⚠️ IMPORTANT: Execută comenzile de mai jos pe LINUX (unde e Oracle vechi)"
echo "" echo ""
echo "Deschide terminal și rulează:" echo "Deschide terminal și rulează:"
echo "" echo ""
echo "# ================================================" echo "# ================================================"
echo "# Export CONTAFIN_ORACLE" echo "# Export CONTAFIN_ORACLE"
echo "# ================================================" echo "# ================================================"
echo "mkdir -p $EXPORT_DIR" echo "mkdir -p $EXPORT_DIR"
echo "cd $EXPORT_DIR" echo "cd $EXPORT_DIR"
echo "" echo ""
echo "exp system/${OLD_ORACLE_PASS}@localhost:${OLD_ORACLE_PORT}/${OLD_ORACLE_SID} \\" echo "exp system/${OLD_ORACLE_PASS}@localhost:${OLD_ORACLE_PORT}/${OLD_ORACLE_SID} \\"
echo " FILE=CONTAFIN_ORACLE_\$(date +%Y%m%d).dmp \\" echo " FILE=CONTAFIN_ORACLE_\$(date +%Y%m%d).dmp \\"
echo " OWNER=CONTAFIN_ORACLE \\" echo " OWNER=CONTAFIN_ORACLE \\"
echo " LOG=contafin_export.log \\" echo " LOG=contafin_export.log \\"
echo " CONSISTENT=Y" echo " CONSISTENT=Y"
echo "" echo ""
if [ -n "$SCHEMA2_NAME" ] && [ "$SCHEMA2_NAME" != "none" ]; then if [ -n "$SCHEMA2_NAME" ] && [ "$SCHEMA2_NAME" != "none" ]; then
echo "# ================================================" echo "# ================================================"
echo "# Export $SCHEMA2_NAME" echo "# Export $SCHEMA2_NAME"
echo "# ================================================" echo "# ================================================"
echo "exp system/${OLD_ORACLE_PASS}@localhost:${OLD_ORACLE_PORT}/${OLD_ORACLE_SID} \\" echo "exp system/${OLD_ORACLE_PASS}@localhost:${OLD_ORACLE_PORT}/${OLD_ORACLE_SID} \\"
echo " FILE=${SCHEMA2_NAME}_\$(date +%Y%m%d).dmp \\" echo " FILE=${SCHEMA2_NAME}_\$(date +%Y%m%d).dmp \\"
echo " OWNER=$SCHEMA2_NAME \\" echo " OWNER=$SCHEMA2_NAME \\"
echo " LOG=${SCHEMA2_NAME,,}_export.log \\" echo " LOG=${SCHEMA2_NAME,,}_export.log \\"
echo " CONSISTENT=Y" echo " CONSISTENT=Y"
echo "" echo ""
fi fi
echo "# Verificare fișiere create" echo "# Verificare fișiere create"
echo "ls -lh *.dmp" echo "ls -lh *.dmp"
echo "" echo ""
fi fi
echo "==========================================" echo "=========================================="
echo "" echo ""
read -p "✅ Apasă ENTER când ai terminat exportul și ai verificat fișierele DMP..." WAIT_EXPORT read -p "✅ Apasă ENTER când ai terminat exportul și ai verificat fișierele DMP..." WAIT_EXPORT
# Verificare existență fișiere (dacă directorul e accesibil) # Verificare existență fișiere (dacă directorul e accesibil)
if [ -d "$EXPORT_DIR" ]; then if [ -d "$EXPORT_DIR" ]; then
echo "" echo ""
echo "Verificare fișiere în $EXPORT_DIR..." echo "Verificare fișiere în $EXPORT_DIR..."
if [ -f "$EXPORT_DIR"/CONTAFIN_ORACLE*.dmp ]; then if [ -f "$EXPORT_DIR"/CONTAFIN_ORACLE*.dmp ]; then
print_success "✅ Fișier CONTAFIN găsit!" print_success "✅ Fișier CONTAFIN găsit!"
ls -lh "$EXPORT_DIR"/CONTAFIN_ORACLE*.dmp ls -lh "$EXPORT_DIR"/CONTAFIN_ORACLE*.dmp
else else
print_warning "⚠️ Nu găsesc fișier CONTAFIN în $EXPORT_DIR" print_warning "⚠️ Nu găsesc fișier CONTAFIN în $EXPORT_DIR"
fi fi
fi fi
echo "" echo ""
echo "==========================================" echo "=========================================="
echo "⏸️ PASUL 2/5: OPRIRE ORACLE VECHI" echo "⏸️ PASUL 2/5: OPRIRE ORACLE VECHI"
echo "==========================================" echo "=========================================="
echo "" echo ""
if [ "$ORACLE_SOURCE_OS" = "Windows" ]; then if [ "$ORACLE_SOURCE_OS" = "Windows" ]; then
echo "Pe WINDOWS, deschide Command Prompt CA ADMINISTRATOR și rulează:" echo "Pe WINDOWS, deschide Command Prompt CA ADMINISTRATOR și rulează:"
echo "" echo ""
echo "REM ===================================================" echo "REM ==================================================="
echo "REM Oprire servicii Oracle vechi" echo "REM Oprire servicii Oracle vechi"
echo "REM ===================================================" echo "REM ==================================================="
echo "net stop OracleServiceXE" echo "net stop OracleServiceXE"
echo "net stop OracleXETNSListener" echo "net stop OracleXETNSListener"
echo "" echo ""
echo "REM Opțional: Dezactivează serviciile (să nu pornească automat)" echo "REM Opțional: Dezactivează serviciile (să nu pornească automat)"
echo "sc config OracleServiceXE start= disabled" echo "sc config OracleServiceXE start= disabled"
echo "sc config OracleXETNSListener start= disabled" echo "sc config OracleXETNSListener start= disabled"
echo "" echo ""
echo "REM Verificare servicii oprite" echo "REM Verificare servicii oprite"
echo "sc query OracleServiceXE" echo "sc query OracleServiceXE"
echo "" echo ""
else else
echo "Pe LINUX, deschide terminal și rulează:" echo "Pe LINUX, deschide terminal și rulează:"
echo "" echo ""
echo "# ===================================================" echo "# ==================================================="
echo "# Oprire servicii Oracle vechi" echo "# Oprire servicii Oracle vechi"
echo "# ===================================================" echo "# ==================================================="
echo "sudo systemctl stop oracle-xe" echo "sudo systemctl stop oracle-xe"
echo "sudo systemctl disable oracle-xe" echo "sudo systemctl disable oracle-xe"
echo "" echo ""
echo "# Verificare serviciu oprit" echo "# Verificare serviciu oprit"
echo "sudo systemctl status oracle-xe" echo "sudo systemctl status oracle-xe"
echo "" echo ""
fi fi
read -p "✅ Apasă ENTER când ai oprit serviciile Oracle vechi..." WAIT_STOP read -p "✅ Apasă ENTER când ai oprit serviciile Oracle vechi..." WAIT_STOP
echo "" echo ""
print_success "✅ Export complet! Oracle vechi oprit!" print_success "✅ Export complet! Oracle vechi oprit!"
echo "" echo ""
echo "==========================================" echo "=========================================="
echo "📝 PASUL 3/5: INSTALARE ORACLE 21c XE" echo "📝 PASUL 3/5: INSTALARE ORACLE 21c XE"
echo "==========================================" echo "=========================================="
echo "" echo ""
echo "Următorul pas va fi instalarea Oracle 21c XE." echo "Următorul pas va fi instalarea Oracle 21c XE."
echo "" echo ""
echo "Opțiuni:" echo "Opțiuni:"
if [ "$ORACLE_SOURCE_OS" = "Windows" ]; then if [ "$ORACLE_SOURCE_OS" = "Windows" ]; then
echo " 1. Download Oracle XE 21c pentru Windows de la:" echo " 1. Download Oracle XE 21c pentru Windows de la:"
echo " https://www.oracle.com/database/technologies/xe-downloads.html" echo " https://www.oracle.com/database/technologies/xe-downloads.html"
echo " 2. Instalare normală (va folosi același port 1521)" echo " 2. Instalare normală (va folosi același port 1521)"
echo " 3. Apoi continuă cu scripturile de import" echo " 3. Apoi continuă cu scripturile de import"
else else
echo " 1. Instalare cu scriptul 00-install-oracle21c-xe.sh (pentru LXC/Docker)" echo " 1. Instalare cu scriptul 00-install-oracle21c-xe.sh (pentru LXC/Docker)"
echo " 2. SAU instalare manuală Oracle XE 21c pe Linux" echo " 2. SAU instalare manuală Oracle XE 21c pe Linux"
echo " 3. Apoi continuă cu scripturile de import" echo " 3. Apoi continuă cu scripturile de import"
fi fi
echo "" echo ""
echo "Next: Continuă cu pasul 1 (setup) din master script" echo "Next: Continuă cu pasul 1 (setup) din master script"
################################################################################ ################################################################################
# MANUAL EXPORT (User instructions) # MANUAL EXPORT (User instructions)
################################################################################ ################################################################################
elif [ "$EXPORT_MODE" = "MANUAL" ]; then elif [ "$EXPORT_MODE" = "MANUAL" ]; then
echo "📋 Mod MANUAL - Export ghidat" echo "📋 Mod MANUAL - Export ghidat"
echo "" echo ""
echo "==========================================" echo "=========================================="
echo "INSTRUCȚIUNI EXPORT MANUAL" echo "INSTRUCȚIUNI EXPORT MANUAL"
echo "==========================================" echo "=========================================="
echo "" echo ""
echo "Trebuie să exporți manual următoarele scheme:" echo "Trebuie să exporți manual următoarele scheme:"
echo "" echo ""
echo "1. Schema CONTAFIN_ORACLE:" echo "1. Schema CONTAFIN_ORACLE:"
echo " exp user/pass@db FILE=CONTAFIN_ORACLE_${TIMESTAMP}.dmp OWNER=CONTAFIN_ORACLE LOG=contafin_export.log CONSISTENT=Y" echo " exp user/pass@db FILE=CONTAFIN_ORACLE_${TIMESTAMP}.dmp OWNER=CONTAFIN_ORACLE LOG=contafin_export.log CONSISTENT=Y"
echo "" echo ""
if [ -n "$SCHEMA2_NAME" ] && [ "$SCHEMA2_NAME" != "none" ]; then if [ -n "$SCHEMA2_NAME" ] && [ "$SCHEMA2_NAME" != "none" ]; then
echo "2. Schema $SCHEMA2_NAME:" echo "2. Schema $SCHEMA2_NAME:"
echo " exp user/pass@db FILE=${SCHEMA2_NAME}_${TIMESTAMP}.dmp OWNER=$SCHEMA2_NAME LOG=${SCHEMA2_NAME,,}_export.log CONSISTENT=Y" echo " exp user/pass@db FILE=${SCHEMA2_NAME}_${TIMESTAMP}.dmp OWNER=$SCHEMA2_NAME LOG=${SCHEMA2_NAME,,}_export.log CONSISTENT=Y"
echo "" echo ""
fi fi
echo "3. SYS Objects (dacă e nevoie):" echo "3. SYS Objects (dacă e nevoie):"
echo " exp system/pass@db FILE=SYS_OBJECTS_${TIMESTAMP}.dmp OWNER=SYS TABLES=(...) LOG=sys_export.log" echo " exp system/pass@db FILE=SYS_OBJECTS_${TIMESTAMP}.dmp OWNER=SYS TABLES=(...) LOG=sys_export.log"
echo "" echo ""
echo "==========================================" echo "=========================================="
echo "" echo ""
echo "După export, copiază fișierele DMP în:" echo "După export, copiază fișierele DMP în:"
echo " 📁 $EXPORT_DIR" echo " 📁 $EXPORT_DIR"
echo "" echo ""
echo "Apoi continuă cu următorul script." echo "Apoi continuă cu următorul script."
echo "" echo ""
read -p "✓ Apasă ENTER când ai terminat exportul și ai copiat fișierele..." WAIT_INPUT read -p "✓ Apasă ENTER când ai terminat exportul și ai copiat fișierele..." WAIT_INPUT
# Verify exported files exist # Verify exported files exist
echo "" echo ""
echo "Verificare fișiere exportate..." echo "Verificare fișiere exportate..."
if [ ! -f "$EXPORT_DIR"/CONTAFIN_ORACLE*.dmp ]; then if [ ! -f "$EXPORT_DIR"/CONTAFIN_ORACLE*.dmp ]; then
echo "❌ ERROR: Nu găsesc fișierul CONTAFIN_ORACLE*.dmp în $EXPORT_DIR" echo "❌ ERROR: Nu găsesc fișierul CONTAFIN_ORACLE*.dmp în $EXPORT_DIR"
echo "" echo ""
echo "Verifică că ai copiat fișierele corect!" echo "Verifică că ai copiat fișierele corect!"
exit 1 exit 1
fi fi
if [ -n "$SCHEMA2_NAME" ] && [ "$SCHEMA2_NAME" != "none" ]; then if [ -n "$SCHEMA2_NAME" ] && [ "$SCHEMA2_NAME" != "none" ]; then
if [ ! -f "$EXPORT_DIR/${SCHEMA2_NAME}"*.dmp ]; then if [ ! -f "$EXPORT_DIR/${SCHEMA2_NAME}"*.dmp ]; then
echo "⚠️ WARNING: Nu găsesc fișierul ${SCHEMA2_NAME}*.dmp" echo "⚠️ WARNING: Nu găsesc fișierul ${SCHEMA2_NAME}*.dmp"
read -p "Continui fără schema secundară? (y/n): " CONTINUE read -p "Continui fără schema secundară? (y/n): " CONTINUE
if [ "$CONTINUE" != "y" ]; then if [ "$CONTINUE" != "y" ]; then
exit 1 exit 1
fi fi
fi fi
fi fi
echo "✓ Fișiere verificate cu succes" echo "✓ Fișiere verificate cu succes"
echo "" echo ""
echo "Export directory: $EXPORT_DIR" echo "Export directory: $EXPORT_DIR"
ls -lh "$EXPORT_DIR"/*.dmp 2>/dev/null || echo "No DMP files found" ls -lh "$EXPORT_DIR"/*.dmp 2>/dev/null || echo "No DMP files found"
################################################################################ ################################################################################
# LOCAL MIGRATION (Same server, different ports) # LOCAL MIGRATION (Same server, different ports)
################################################################################ ################################################################################
elif [ "$EXPORT_MODE" = "LOCAL" ]; then elif [ "$EXPORT_MODE" = "LOCAL" ]; then
echo "🏠 Mod LOCAL - Migrare pe același server" echo "🏠 Mod LOCAL - Migrare pe același server"
echo "" echo ""
# Validate local configuration # Validate local configuration
if [ -z "$ORACLE_SOURCE_PORT" ] || [ -z "$ORACLE_DEST_PORT" ]; then if [ -z "$ORACLE_SOURCE_PORT" ] || [ -z "$ORACLE_DEST_PORT" ]; then
echo "ERROR: Port configuration incomplete for local migration" echo "ERROR: Port configuration incomplete for local migration"
echo " Source port: $ORACLE_SOURCE_PORT" echo " Source port: $ORACLE_SOURCE_PORT"
echo " Dest port: $ORACLE_DEST_PORT" echo " Dest port: $ORACLE_DEST_PORT"
exit 1 exit 1
fi fi
if [ "$ORACLE_SOURCE_PORT" = "$ORACLE_DEST_PORT" ]; then if [ "$ORACLE_SOURCE_PORT" = "$ORACLE_DEST_PORT" ]; then
echo "ERROR: Source and destination ports must be different!" echo "ERROR: Source and destination ports must be different!"
echo " Both are set to: $ORACLE_SOURCE_PORT" echo " Both are set to: $ORACLE_SOURCE_PORT"
exit 1 exit 1
fi fi
echo "Local Migration Configuration:" echo "Local Migration Configuration:"
echo " Oracle Source: localhost:$ORACLE_SOURCE_PORT/$ORACLE_SOURCE_SID" echo " Oracle Source: localhost:$ORACLE_SOURCE_PORT/$ORACLE_SOURCE_SID"
echo " Oracle Dest: localhost:$ORACLE_DEST_PORT/$ORACLE_DEST_SID" echo " Oracle Dest: localhost:$ORACLE_DEST_PORT/$ORACLE_DEST_SID"
echo "" echo ""
# Check if source Oracle is running # Check if source Oracle is running
if ! nc -z localhost "$ORACLE_SOURCE_PORT" 2>/dev/null; then if ! nc -z localhost "$ORACLE_SOURCE_PORT" 2>/dev/null; then
echo "ERROR: Oracle source not running on port $ORACLE_SOURCE_PORT" echo "ERROR: Oracle source not running on port $ORACLE_SOURCE_PORT"
exit 1 exit 1
fi fi
echo "✓ Oracle source is running on port $ORACLE_SOURCE_PORT" echo "✓ Oracle source is running on port $ORACLE_SOURCE_PORT"
# Check if destination Oracle is running # Check if destination Oracle is running
if ! nc -z localhost "$ORACLE_DEST_PORT" 2>/dev/null; then if ! nc -z localhost "$ORACLE_DEST_PORT" 2>/dev/null; then
echo "ERROR: Oracle destination not running on port $ORACLE_DEST_PORT" echo "ERROR: Oracle destination not running on port $ORACLE_DEST_PORT"
exit 1 exit 1
fi fi
echo "✓ Oracle destination is running on port $ORACLE_DEST_PORT" echo "✓ Oracle destination is running on port $ORACLE_DEST_PORT"
echo "" echo ""
# Perform local export # Perform local export
echo "Starting local export..." echo "Starting local export..."
mkdir -p "$EXPORT_DIR" mkdir -p "$EXPORT_DIR"
# Export CONTAFIN schema # Export CONTAFIN schema
echo "Exporting CONTAFIN_ORACLE..." echo "Exporting CONTAFIN_ORACLE..."
exp system/${ORACLE_SOURCE_PASS}@localhost:${ORACLE_SOURCE_PORT}/${ORACLE_SOURCE_SID} \ exp system/${ORACLE_SOURCE_PASS}@localhost:${ORACLE_SOURCE_PORT}/${ORACLE_SOURCE_SID} \
FILE="${EXPORT_DIR}/CONTAFIN_ORACLE_${TIMESTAMP}.dmp" \ FILE="${EXPORT_DIR}/CONTAFIN_ORACLE_${TIMESTAMP}.dmp" \
OWNER=CONTAFIN_ORACLE \ OWNER=CONTAFIN_ORACLE \
LOG="${EXPORT_DIR}/contafin_export.log" \ LOG="${EXPORT_DIR}/contafin_export.log" \
CONSISTENT=Y CONSISTENT=Y
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
echo "ERROR: CONTAFIN export failed. Check log: ${EXPORT_DIR}/contafin_export.log" echo "ERROR: CONTAFIN export failed. Check log: ${EXPORT_DIR}/contafin_export.log"
exit 1 exit 1
fi fi
echo "✓ CONTAFIN export completed" echo "✓ CONTAFIN export completed"
# Export secondary schema if exists # Export secondary schema if exists
if [ -n "$SCHEMA2_NAME" ] && [ "$SCHEMA2_NAME" != "none" ]; then if [ -n "$SCHEMA2_NAME" ] && [ "$SCHEMA2_NAME" != "none" ]; then
echo "Exporting $SCHEMA2_NAME..." echo "Exporting $SCHEMA2_NAME..."
exp system/${ORACLE_SOURCE_PASS}@localhost:${ORACLE_SOURCE_PORT}/${ORACLE_SOURCE_SID} \ exp system/${ORACLE_SOURCE_PASS}@localhost:${ORACLE_SOURCE_PORT}/${ORACLE_SOURCE_SID} \
FILE="${EXPORT_DIR}/${SCHEMA2_NAME}_${TIMESTAMP}.dmp" \ FILE="${EXPORT_DIR}/${SCHEMA2_NAME}_${TIMESTAMP}.dmp" \
OWNER="$SCHEMA2_NAME" \ OWNER="$SCHEMA2_NAME" \
LOG="${EXPORT_DIR}/${SCHEMA2_NAME,,}_export.log" \ LOG="${EXPORT_DIR}/${SCHEMA2_NAME,,}_export.log" \
CONSISTENT=Y CONSISTENT=Y
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
echo "$SCHEMA2_NAME export completed" echo "$SCHEMA2_NAME export completed"
else else
echo "⚠️ WARNING: $SCHEMA2_NAME export failed" echo "⚠️ WARNING: $SCHEMA2_NAME export failed"
fi fi
fi fi
echo "" echo ""
echo "✓ Local export completed" echo "✓ Local export completed"
echo "Files saved to: $EXPORT_DIR" echo "Files saved to: $EXPORT_DIR"
ls -lh "$EXPORT_DIR"/*.dmp ls -lh "$EXPORT_DIR"/*.dmp
else else
echo "ERROR: Invalid EXPORT_MODE: $EXPORT_MODE" echo "ERROR: Invalid EXPORT_MODE: $EXPORT_MODE"
echo "Valid modes: AUTO, MANUAL, LOCAL" echo "Valid modes: AUTO, MANUAL, LOCAL"
exit 1 exit 1
fi fi
echo "" echo ""
echo "==========================================" echo "=========================================="
echo "✓ EXPORT PHASE COMPLETED" echo "✓ EXPORT PHASE COMPLETED"
echo "==========================================" echo "=========================================="
echo "" echo ""
echo "Exported files location: $EXPORT_DIR" echo "Exported files location: $EXPORT_DIR"
echo "" echo ""
echo "Next step: 03-transfer-to-oracle21c.sh (if needed)" echo "Next step: 03-transfer-to-oracle21c.sh (if needed)"
echo "" echo ""

View File

@@ -1,74 +1,74 @@
#!/bin/bash #!/bin/bash
#============================================================================== #==============================================================================
# Script: 03-transfer-to-oracle21c.sh # Script: 03-transfer-to-oracle21c.sh
# Descriere: Transfer fișiere DMP de pe WSL către Oracle 21c (Docker) # Descriere: Transfer fișiere DMP de pe WSL către Oracle 21c (Docker)
# Data: 30 Septembrie 2025 # Data: 30 Septembrie 2025
# Rulare: bash 03-transfer-to-oracle21c.sh # Rulare: bash 03-transfer-to-oracle21c.sh
#============================================================================== #==============================================================================
set -e set -e
echo "==========================================" echo "=========================================="
echo "TRANSFER FISIERE CATRE ORACLE 21c" echo "TRANSFER FISIERE CATRE ORACLE 21c"
echo "==========================================" echo "=========================================="
echo "" echo ""
# Configurare # Configurare
PROXMOX_HOST="root@10.0.20.201" PROXMOX_HOST="root@10.0.20.201"
SOURCE_DIR="/mnt/e/ORACLE_EXPORT/dumps" SOURCE_DIR="/mnt/e/ORACLE_EXPORT/dumps"
DEST_DIR="/tmp/oracle-import" DEST_DIR="/tmp/oracle-import"
echo "[1/4] Verificare fișiere locale..." echo "[1/4] Verificare fișiere locale..."
if [ ! -d "$SOURCE_DIR" ]; then if [ ! -d "$SOURCE_DIR" ]; then
echo "ERROR: Director $SOURCE_DIR nu există!" echo "ERROR: Director $SOURCE_DIR nu există!"
exit 1 exit 1
fi fi
DMP_FILES=$(ls $SOURCE_DIR/*.dmp 2>/dev/null | wc -l) DMP_FILES=$(ls $SOURCE_DIR/*.dmp 2>/dev/null | wc -l)
if [ $DMP_FILES -eq 0 ]; then if [ $DMP_FILES -eq 0 ]; then
echo "ERROR: Nu există fișiere *.dmp în $SOURCE_DIR" echo "ERROR: Nu există fișiere *.dmp în $SOURCE_DIR"
exit 1 exit 1
fi fi
echo "Găsite $DMP_FILES fișiere DMP:" echo "Găsite $DMP_FILES fișiere DMP:"
ls -lh $SOURCE_DIR/*.dmp ls -lh $SOURCE_DIR/*.dmp
echo "" echo ""
echo "[2/4] Creare director pe Proxmox..." echo "[2/4] Creare director pe Proxmox..."
ssh $PROXMOX_HOST "mkdir -p $DEST_DIR" ssh $PROXMOX_HOST "mkdir -p $DEST_DIR"
echo "✓ Director $DEST_DIR creat pe Proxmox" echo "✓ Director $DEST_DIR creat pe Proxmox"
echo "" echo ""
echo "[3/4] Transfer fișiere către Proxmox..." echo "[3/4] Transfer fișiere către Proxmox..."
echo "Durată estimată: 5-15 minute (depinde de dimensiune și rețea)" echo "Durată estimată: 5-15 minute (depinde de dimensiune și rețea)"
scp $SOURCE_DIR/*.dmp $PROXMOX_HOST:$DEST_DIR/ scp $SOURCE_DIR/*.dmp $PROXMOX_HOST:$DEST_DIR/
scp $SOURCE_DIR/SYS_OBJECTS.sql $PROXMOX_HOST:$DEST_DIR/ 2>/dev/null || echo "WARN: SYS_OBJECTS.sql nu există" scp $SOURCE_DIR/SYS_OBJECTS.sql $PROXMOX_HOST:$DEST_DIR/ 2>/dev/null || echo "WARN: SYS_OBJECTS.sql nu există"
echo "✓ Fișiere transferate" echo "✓ Fișiere transferate"
echo "" echo ""
echo "[4/4] Copiere în container Docker..." echo "[4/4] Copiere în container Docker..."
ssh $PROXMOX_HOST <<'ENDSSH' ssh $PROXMOX_HOST <<'ENDSSH'
pct exec 108 -- bash -c ' pct exec 108 -- bash -c '
docker cp /tmp/oracle-import/CONTAFIN_ORACLE_*.dmp oracle-xe:/tmp/ 2>/dev/null || \ docker cp /tmp/oracle-import/CONTAFIN_ORACLE_*.dmp oracle-xe:/tmp/ 2>/dev/null || \
docker cp /tmp/oracle-import/CONTAFIN_ORACLE*.dmp oracle-xe:/tmp/ docker cp /tmp/oracle-import/CONTAFIN_ORACLE*.dmp oracle-xe:/tmp/
docker cp /tmp/oracle-import/MARIUSM_AUTO_*.dmp oracle-xe:/tmp/ 2>/dev/null || \ docker cp /tmp/oracle-import/MARIUSM_AUTO_*.dmp oracle-xe:/tmp/ 2>/dev/null || \
docker cp /tmp/oracle-import/MARIUSM_AUTO*.dmp oracle-xe:/tmp/ docker cp /tmp/oracle-import/MARIUSM_AUTO*.dmp oracle-xe:/tmp/
docker cp /tmp/oracle-import/SYS_OBJECTS.sql oracle-xe:/tmp/ 2>/dev/null || true docker cp /tmp/oracle-import/SYS_OBJECTS.sql oracle-xe:/tmp/ 2>/dev/null || true
echo "Fișiere în container:" echo "Fișiere în container:"
docker exec oracle-xe ls -lh /tmp/*.dmp /tmp/SYS_OBJECTS.sql 2>/dev/null || docker exec oracle-xe ls -lh /tmp/*.dmp docker exec oracle-xe ls -lh /tmp/*.dmp /tmp/SYS_OBJECTS.sql 2>/dev/null || docker exec oracle-xe ls -lh /tmp/*.dmp
' '
ENDSSH ENDSSH
echo "✓ Fișiere copiate în container oracle-xe" echo "✓ Fișiere copiate în container oracle-xe"
echo "" echo ""
echo "==========================================" echo "=========================================="
echo "✅ TRANSFER COMPLET!" echo "✅ TRANSFER COMPLET!"
echo "==========================================" echo "=========================================="
echo "" echo ""
echo "Fișierele sunt acum în container oracle-xe:/tmp/" echo "Fișierele sunt acum în container oracle-xe:/tmp/"
echo "" echo ""
echo "Următorul pas: 04-import-to-oracle21c.sh" echo "Următorul pas: 04-import-to-oracle21c.sh"
echo "" echo ""

View File

@@ -1,173 +1,173 @@
#!/bin/bash #!/bin/bash
#============================================================================== #==============================================================================
# Script: 04-import-to-oracle21c.sh # Script: 04-import-to-oracle21c.sh
# Descriere: Import SYS objects + CONTAFIN_ORACLE + schema secundara în Oracle 21c # Descriere: Import SYS objects + CONTAFIN_ORACLE + schema secundara în Oracle 21c
# Data: 30 Septembrie 2025 # Data: 30 Septembrie 2025
# Rulare: bash 04-import-to-oracle21c.sh # Rulare: bash 04-import-to-oracle21c.sh
#============================================================================== #==============================================================================
set -e set -e
echo "==========================================" echo "=========================================="
echo "IMPORT IN ORACLE 21c XE - PDB ROA" echo "IMPORT IN ORACLE 21c XE - PDB ROA"
echo "==========================================" echo "=========================================="
echo "" echo ""
ORACLE_PWD="OraclePass123" ORACLE_PWD="OraclePass123"
PDB_CONNECT="sys/${ORACLE_PWD}@localhost:1521/roa as sysdba" PDB_CONNECT="sys/${ORACLE_PWD}@localhost:1521/roa as sysdba"
# Detectare schema secundara (din variabila exportata de 01-setup sau master) # Detectare schema secundara (din variabila exportata de 01-setup sau master)
if [ -z "$SCHEMA2_NAME" ]; then if [ -z "$SCHEMA2_NAME" ]; then
SCHEMA2_NAME="MARIUSM_AUTO" SCHEMA2_NAME="MARIUSM_AUTO"
echo "Schema secundara (default): MARIUSM_AUTO" echo "Schema secundara (default): MARIUSM_AUTO"
else else
echo "Schema secundara (custom): $SCHEMA2_NAME" echo "Schema secundara (custom): $SCHEMA2_NAME"
fi fi
echo "[1/5] Import SYS objects custom..." echo "[1/5] Import SYS objects custom..."
ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe sqlplus -s ${PDB_CONNECT}" <<'EOF' ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe sqlplus -s ${PDB_CONNECT}" <<'EOF'
SET SERVEROUTPUT ON SET SERVEROUTPUT ON
WHENEVER SQLERROR CONTINUE WHENEVER SQLERROR CONTINUE
-- Verificare conexiune PDB ROA -- Verificare conexiune PDB ROA
SELECT 'Connected to: ' || name || ' (CDB=' || cdb || ')' FROM v$database; SELECT 'Connected to: ' || name || ' (CDB=' || cdb || ')' FROM v$database;
-- Import SYS objects -- Import SYS objects
@/tmp/SYS_OBJECTS.sql @/tmp/SYS_OBJECTS.sql
-- Verificare obiecte create -- Verificare obiecte create
SELECT object_name, object_type, status SELECT object_name, object_type, status
FROM dba_objects FROM dba_objects
WHERE owner='SYS' WHERE owner='SYS'
AND object_name IN ('AUTH_PACK','NEWSCHEMA','NEWSCHEMAJOB','NEWSCHEMAPROGRESS','VAUTH_SERII','AUTH_SERII','AUTH_DETALII') AND object_name IN ('AUTH_PACK','NEWSCHEMA','NEWSCHEMAJOB','NEWSCHEMAPROGRESS','VAUTH_SERII','AUTH_SERII','AUTH_DETALII')
ORDER BY object_type, object_name; ORDER BY object_type, object_name;
EXIT; EXIT;
EOF EOF
echo "✓ SYS objects importat" echo "✓ SYS objects importat"
echo "" echo ""
echo "[2/5] Grant-uri SYS → CONTAFIN_ORACLE..." echo "[2/5] Grant-uri SYS → CONTAFIN_ORACLE..."
ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe sqlplus -s ${PDB_CONNECT}" <<'EOF' ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe sqlplus -s ${PDB_CONNECT}" <<'EOF'
WHENEVER SQLERROR CONTINUE WHENEVER SQLERROR CONTINUE
GRANT SELECT ON SYS.AUTH_SERII TO CONTAFIN_ORACLE; GRANT SELECT ON SYS.AUTH_SERII TO CONTAFIN_ORACLE;
GRANT SELECT ON SYS.AUTH_DETALII TO CONTAFIN_ORACLE; GRANT SELECT ON SYS.AUTH_DETALII TO CONTAFIN_ORACLE;
GRANT SELECT ON SYS.VAUTH_SERII TO CONTAFIN_ORACLE; GRANT SELECT ON SYS.VAUTH_SERII TO CONTAFIN_ORACLE;
GRANT EXECUTE ON SYS.AUTH_PACK TO CONTAFIN_ORACLE; GRANT EXECUTE ON SYS.AUTH_PACK TO CONTAFIN_ORACLE;
GRANT EXECUTE ON SYS.NEWSCHEMA TO CONTAFIN_ORACLE; GRANT EXECUTE ON SYS.NEWSCHEMA TO CONTAFIN_ORACLE;
GRANT EXECUTE ON SYS.NEWSCHEMAJOB TO CONTAFIN_ORACLE; GRANT EXECUTE ON SYS.NEWSCHEMAJOB TO CONTAFIN_ORACLE;
GRANT EXECUTE ON SYS.NEWSCHEMAPROGRESS TO CONTAFIN_ORACLE; GRANT EXECUTE ON SYS.NEWSCHEMAPROGRESS TO CONTAFIN_ORACLE;
GRANT EXECUTE ON SYS.UPDATESQLPLUS TO CONTAFIN_ORACLE; GRANT EXECUTE ON SYS.UPDATESQLPLUS TO CONTAFIN_ORACLE;
GRANT EXECUTE ON SYS.EXECUTESCRIPTOS TO CONTAFIN_ORACLE; GRANT EXECUTE ON SYS.EXECUTESCRIPTOS TO CONTAFIN_ORACLE;
EXIT; EXIT;
EOF EOF
echo "✓ Grant-uri SYS acordate" echo "✓ Grant-uri SYS acordate"
echo "" echo ""
echo "[3/5] Import CONTAFIN_ORACLE..." echo "[3/5] Import CONTAFIN_ORACLE..."
echo "Durată estimată: 10-15 minute" echo "Durată estimată: 10-15 minute"
ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe bash -c ' ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe bash -c '
CONTAFIN_DMP=\$(ls /tmp/CONTAFIN_ORACLE*.dmp | head -1) CONTAFIN_DMP=\$(ls /tmp/CONTAFIN_ORACLE*.dmp | head -1)
imp system/${ORACLE_PWD}@localhost:1521/roa \ imp system/${ORACLE_PWD}@localhost:1521/roa \
FILE=\$CONTAFIN_DMP \ FILE=\$CONTAFIN_DMP \
LOG=/tmp/contafin_import.log \ LOG=/tmp/contafin_import.log \
FROMUSER=CONTAFIN_ORACLE \ FROMUSER=CONTAFIN_ORACLE \
TOUSER=CONTAFIN_ORACLE \ TOUSER=CONTAFIN_ORACLE \
IGNORE=Y \ IGNORE=Y \
COMMIT=Y \ COMMIT=Y \
BUFFER=10485760 \ BUFFER=10485760 \
FEEDBACK=10000 FEEDBACK=10000
echo "" echo ""
echo "Verificare obiecte importate:" echo "Verificare obiecte importate:"
sqlplus -s system/${ORACLE_PWD}@localhost:1521/roa <<EOSQL sqlplus -s system/${ORACLE_PWD}@localhost:1521/roa <<EOSQL
SET PAGESIZE 50 SET PAGESIZE 50
SELECT object_type, COUNT(*) as total SELECT object_type, COUNT(*) as total
FROM dba_objects FROM dba_objects
WHERE owner='"'CONTAFIN_ORACLE'"' WHERE owner='"'CONTAFIN_ORACLE'"'
GROUP BY object_type GROUP BY object_type
ORDER BY object_type; ORDER BY object_type;
EXIT; EXIT;
EOSQL EOSQL
'" '"
echo "✓ CONTAFIN_ORACLE importat" echo "✓ CONTAFIN_ORACLE importat"
echo "" echo ""
echo "[4/5] Import ${SCHEMA2_NAME}..." echo "[4/5] Import ${SCHEMA2_NAME}..."
if [ "$SCHEMA2_NAME" = "MARIUSM_AUTO" ]; then if [ "$SCHEMA2_NAME" = "MARIUSM_AUTO" ]; then
echo "Durată estimată: 45-90 minute (707 tabele!)" echo "Durată estimată: 45-90 minute (707 tabele!)"
else else
echo "Durată estimată: variabilă (depinde de dimensiune DMP)" echo "Durată estimată: variabilă (depinde de dimensiune DMP)"
fi fi
# Determinare fisier DMP (MARIUSM_AUTO*.dmp sau schema custom) # Determinare fisier DMP (MARIUSM_AUTO*.dmp sau schema custom)
if [ "$SCHEMA2_NAME" = "MARIUSM_AUTO" ]; then if [ "$SCHEMA2_NAME" = "MARIUSM_AUTO" ]; then
DMP_PATTERN="MARIUSM_AUTO*.dmp" DMP_PATTERN="MARIUSM_AUTO*.dmp"
FROMUSER="MARIUSM_AUTO" FROMUSER="MARIUSM_AUTO"
else else
# Pentru schema custom, cautam fisierul specificat in SCHEMA2_TEMPLATE # Pentru schema custom, cautam fisierul specificat in SCHEMA2_TEMPLATE
DMP_PATTERN="${SCHEMA2_TEMPLATE:-*${SCHEMA2_NAME}*.dmp}" DMP_PATTERN="${SCHEMA2_TEMPLATE:-*${SCHEMA2_NAME}*.dmp}"
FROMUSER="${SCHEMA2_NAME}" FROMUSER="${SCHEMA2_NAME}"
fi fi
ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe bash -c ' ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe bash -c '
SCHEMA2_DMP=\$(ls /tmp/${DMP_PATTERN} | head -1) SCHEMA2_DMP=\$(ls /tmp/${DMP_PATTERN} | head -1)
if [ -z \"\$SCHEMA2_DMP\" ]; then if [ -z \"\$SCHEMA2_DMP\" ]; then
echo \"ERROR: Nu gasesc fisier DMP pentru ${SCHEMA2_NAME}!\" echo \"ERROR: Nu gasesc fisier DMP pentru ${SCHEMA2_NAME}!\"
exit 1 exit 1
fi fi
echo \"Import DMP: \$SCHEMA2_DMP\" echo \"Import DMP: \$SCHEMA2_DMP\"
imp system/${ORACLE_PWD}@localhost:1521/roa \ imp system/${ORACLE_PWD}@localhost:1521/roa \
FILE=\$SCHEMA2_DMP \ FILE=\$SCHEMA2_DMP \
LOG=/tmp/${SCHEMA2_NAME}_import.log \ LOG=/tmp/${SCHEMA2_NAME}_import.log \
FROMUSER=${FROMUSER} \ FROMUSER=${FROMUSER} \
TOUSER=${SCHEMA2_NAME} \ TOUSER=${SCHEMA2_NAME} \
IGNORE=Y \ IGNORE=Y \
COMMIT=Y \ COMMIT=Y \
BUFFER=10485760 \ BUFFER=10485760 \
FEEDBACK=10000 FEEDBACK=10000
echo \"\" echo \"\"
echo \"Verificare obiecte importate:\" echo \"Verificare obiecte importate:\"
sqlplus -s system/${ORACLE_PWD}@localhost:1521/roa <<EOSQL sqlplus -s system/${ORACLE_PWD}@localhost:1521/roa <<EOSQL
SET PAGESIZE 50 SET PAGESIZE 50
SELECT object_type, COUNT(*) as total SELECT object_type, COUNT(*) as total
FROM dba_objects FROM dba_objects
WHERE owner='"'${SCHEMA2_NAME}'"' WHERE owner='"'${SCHEMA2_NAME}'"'
GROUP BY object_type GROUP BY object_type
ORDER BY object_type; ORDER BY object_type;
EXIT; EXIT;
EOSQL EOSQL
'" '"
echo "${SCHEMA2_NAME} importat" echo "${SCHEMA2_NAME} importat"
echo "" echo ""
echo "[5/5] Verificare finală import..." echo "[5/5] Verificare finală import..."
ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe sqlplus -s ${PDB_CONNECT}" <<EOF ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe sqlplus -s ${PDB_CONNECT}" <<EOF
SET PAGESIZE 50 SET PAGESIZE 50
SELECT owner, COUNT(*) as total_objects, SELECT owner, COUNT(*) as total_objects,
SUM(CASE WHEN status='VALID' THEN 1 ELSE 0 END) as valid, SUM(CASE WHEN status='VALID' THEN 1 ELSE 0 END) as valid,
SUM(CASE WHEN status='INVALID' THEN 1 ELSE 0 END) as invalid SUM(CASE WHEN status='INVALID' THEN 1 ELSE 0 END) as invalid
FROM dba_objects FROM dba_objects
WHERE owner IN ('CONTAFIN_ORACLE','${SCHEMA2_NAME}') WHERE owner IN ('CONTAFIN_ORACLE','${SCHEMA2_NAME}')
GROUP BY owner GROUP BY owner
ORDER BY owner; ORDER BY owner;
EXIT; EXIT;
EOF EOF
echo "" echo ""
echo "==========================================" echo "=========================================="
echo "✅ IMPORT COMPLET!" echo "✅ IMPORT COMPLET!"
echo "==========================================" echo "=========================================="
echo "" echo ""
echo "Log-uri import:" echo "Log-uri import:"
echo " - /tmp/contafin_import.log" echo " - /tmp/contafin_import.log"
echo " - /tmp/${SCHEMA2_NAME}_import.log" echo " - /tmp/${SCHEMA2_NAME}_import.log"
echo "" echo ""
echo "Următorul pas: 05-create-synonyms-grants.sh" echo "Următorul pas: 05-create-synonyms-grants.sh"
echo "" echo ""

View File

@@ -1,132 +1,132 @@
#!/bin/bash #!/bin/bash
#============================================================================== #==============================================================================
# Script: 05-create-synonyms-grants.sh # Script: 05-create-synonyms-grants.sh
# Descriere: Creare sinonime publice (53) + grant-uri către PUBLIC (147) # Descriere: Creare sinonime publice (53) + grant-uri către PUBLIC (147)
# Data: 30 Septembrie 2025 # Data: 30 Septembrie 2025
# Rulare: bash 05-create-synonyms-grants.sh # Rulare: bash 05-create-synonyms-grants.sh
#============================================================================== #==============================================================================
set -e set -e
echo "==========================================" echo "=========================================="
echo "CREARE SINONIME PUBLICE + GRANT-URI" echo "CREARE SINONIME PUBLICE + GRANT-URI"
echo "==========================================" echo "=========================================="
echo "" echo ""
ORACLE_PWD="OraclePass123" ORACLE_PWD="OraclePass123"
PDB_CONNECT="sys/${ORACLE_PWD}@localhost:1521/roa as sysdba" PDB_CONNECT="sys/${ORACLE_PWD}@localhost:1521/roa as sysdba"
echo "[1/3] Generare script sinonime publice..." echo "[1/3] Generare script sinonime publice..."
ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe bash -c 'cat > /tmp/create_synonyms.sql <<\"EOFSCRIPT\" ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe bash -c 'cat > /tmp/create_synonyms.sql <<\"EOFSCRIPT\"
-- Creare 53 sinonime publice (50 CONTAFIN + 3 SYS) -- Creare 53 sinonime publice (50 CONTAFIN + 3 SYS)
CREATE OR REPLACE PUBLIC SYNONYM SYN_ATAS_ATASAMENTE FOR CONTAFIN_ORACLE.ATAS_ATASAMENTE; CREATE OR REPLACE PUBLIC SYNONYM SYN_ATAS_ATASAMENTE FOR CONTAFIN_ORACLE.ATAS_ATASAMENTE;
CREATE OR REPLACE PUBLIC SYNONYM SYN_ATAS_REFERINTE FOR CONTAFIN_ORACLE.ATAS_REFERINTE; CREATE OR REPLACE PUBLIC SYNONYM SYN_ATAS_REFERINTE FOR CONTAFIN_ORACLE.ATAS_REFERINTE;
CREATE OR REPLACE PUBLIC SYNONYM SYN_CURS_ACTUALIZARI FOR CONTAFIN_ORACLE.CURS_ACTUALIZARI; CREATE OR REPLACE PUBLIC SYNONYM SYN_CURS_ACTUALIZARI FOR CONTAFIN_ORACLE.CURS_ACTUALIZARI;
CREATE OR REPLACE PUBLIC SYNONYM SYN_CURS_COTATII FOR CONTAFIN_ORACLE.CURS_COTATII; CREATE OR REPLACE PUBLIC SYNONYM SYN_CURS_COTATII FOR CONTAFIN_ORACLE.CURS_COTATII;
CREATE OR REPLACE PUBLIC SYNONYM SYN_DEF_GRUP FOR CONTAFIN_ORACLE.DEF_GRUP; CREATE OR REPLACE PUBLIC SYNONYM SYN_DEF_GRUP FOR CONTAFIN_ORACLE.DEF_GRUP;
CREATE OR REPLACE PUBLIC SYNONYM SYN_DEF_GRUP_DREPT FOR CONTAFIN_ORACLE.DEF_GRUP_DREPT; CREATE OR REPLACE PUBLIC SYNONYM SYN_DEF_GRUP_DREPT FOR CONTAFIN_ORACLE.DEF_GRUP_DREPT;
CREATE OR REPLACE PUBLIC SYNONYM SYN_DEF_PROGRAME FOR CONTAFIN_ORACLE.DEF_PROGRAME; CREATE OR REPLACE PUBLIC SYNONYM SYN_DEF_PROGRAME FOR CONTAFIN_ORACLE.DEF_PROGRAME;
CREATE OR REPLACE PUBLIC SYNONYM SYN_HELPCONT FOR CONTAFIN_ORACLE.HELPCONT; CREATE OR REPLACE PUBLIC SYNONYM SYN_HELPCONT FOR CONTAFIN_ORACLE.HELPCONT;
CREATE OR REPLACE PUBLIC SYNONYM SYN_LUNILEAN FOR CONTAFIN_ORACLE.LUNILEAN; CREATE OR REPLACE PUBLIC SYNONYM SYN_LUNILEAN FOR CONTAFIN_ORACLE.LUNILEAN;
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_CETATENII FOR CONTAFIN_ORACLE.NOM_CETATENII; CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_CETATENII FOR CONTAFIN_ORACLE.NOM_CETATENII;
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_CODURI_CAEN FOR CONTAFIN_ORACLE.NOM_CODURI_CAEN; CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_CODURI_CAEN FOR CONTAFIN_ORACLE.NOM_CODURI_CAEN;
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_FIRME FOR CONTAFIN_ORACLE.NOM_FIRME; CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_FIRME FOR CONTAFIN_ORACLE.NOM_FIRME;
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_FORME_JURIDICE FOR CONTAFIN_ORACLE.NOM_FORME_JURIDICE; CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_FORME_JURIDICE FOR CONTAFIN_ORACLE.NOM_FORME_JURIDICE;
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_FORME_ORGANIZARE FOR CONTAFIN_ORACLE.NOM_FORME_ORGANIZARE; CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_FORME_ORGANIZARE FOR CONTAFIN_ORACLE.NOM_FORME_ORGANIZARE;
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_FORME_PROPRIETATE FOR CONTAFIN_ORACLE.NOM_FORME_PROPRIETATE; CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_FORME_PROPRIETATE FOR CONTAFIN_ORACLE.NOM_FORME_PROPRIETATE;
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_JUDETE FOR CONTAFIN_ORACLE.NOM_JUDETE; CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_JUDETE FOR CONTAFIN_ORACLE.NOM_JUDETE;
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_LOCALITATI FOR CONTAFIN_ORACLE.NOM_LOCALITATI; CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_LOCALITATI FOR CONTAFIN_ORACLE.NOM_LOCALITATI;
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_PROGRAME FOR CONTAFIN_ORACLE.NOM_PROGRAME; CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_PROGRAME FOR CONTAFIN_ORACLE.NOM_PROGRAME;
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_TARI FOR CONTAFIN_ORACLE.NOM_TARI; CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_TARI FOR CONTAFIN_ORACLE.NOM_TARI;
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_TIPAPATRID FOR CONTAFIN_ORACLE.NOM_TIPAPATRID; CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_TIPAPATRID FOR CONTAFIN_ORACLE.NOM_TIPAPATRID;
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_TIP_ARTERA FOR CONTAFIN_ORACLE.NOM_TIP_ARTERA; CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_TIP_ARTERA FOR CONTAFIN_ORACLE.NOM_TIP_ARTERA;
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_TIP_SOCIETATE FOR CONTAFIN_ORACLE.NOM_TIP_SOCIETATE; CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_TIP_SOCIETATE FOR CONTAFIN_ORACLE.NOM_TIP_SOCIETATE;
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_VALUTE_ISO FOR CONTAFIN_ORACLE.NOM_VALUTE_ISO; CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_VALUTE_ISO FOR CONTAFIN_ORACLE.NOM_VALUTE_ISO;
CREATE OR REPLACE PUBLIC SYNONYM SYN_OPTIUNI_PROGRAME FOR CONTAFIN_ORACLE.OPTIUNI_PROGRAME; CREATE OR REPLACE PUBLIC SYNONYM SYN_OPTIUNI_PROGRAME FOR CONTAFIN_ORACLE.OPTIUNI_PROGRAME;
CREATE OR REPLACE PUBLIC SYNONYM SYN_PACK_DEF_CO FOR CONTAFIN_ORACLE.PACK_DEF_CO; CREATE OR REPLACE PUBLIC SYNONYM SYN_PACK_DEF_CO FOR CONTAFIN_ORACLE.PACK_DEF_CO;
CREATE OR REPLACE PUBLIC SYNONYM SYN_PACK_DREPTURI FOR CONTAFIN_ORACLE.PACK_DREPTURI; CREATE OR REPLACE PUBLIC SYNONYM SYN_PACK_DREPTURI FOR CONTAFIN_ORACLE.PACK_DREPTURI;
CREATE OR REPLACE PUBLIC SYNONYM SYN_SAL_ACTUALIZARE_COR FOR CONTAFIN_ORACLE.SAL_ACTUALIZARE_COR; CREATE OR REPLACE PUBLIC SYNONYM SYN_SAL_ACTUALIZARE_COR FOR CONTAFIN_ORACLE.SAL_ACTUALIZARE_COR;
CREATE OR REPLACE PUBLIC SYNONYM SYN_SAL_COR FOR CONTAFIN_ORACLE.SAL_COR; CREATE OR REPLACE PUBLIC SYNONYM SYN_SAL_COR FOR CONTAFIN_ORACLE.SAL_COR;
CREATE OR REPLACE PUBLIC SYNONYM SYN_SAL_NOM_DURATA_MUNCA FOR CONTAFIN_ORACLE.SAL_NOM_DURATA_MUNCA; CREATE OR REPLACE PUBLIC SYNONYM SYN_SAL_NOM_DURATA_MUNCA FOR CONTAFIN_ORACLE.SAL_NOM_DURATA_MUNCA;
CREATE OR REPLACE PUBLIC SYNONYM SYN_SAL_NOM_INTERVALE_MUNCA FOR CONTAFIN_ORACLE.SAL_NOM_INTERVALE_MUNCA; CREATE OR REPLACE PUBLIC SYNONYM SYN_SAL_NOM_INTERVALE_MUNCA FOR CONTAFIN_ORACLE.SAL_NOM_INTERVALE_MUNCA;
CREATE OR REPLACE PUBLIC SYNONYM SYN_SAL_NOM_REPARTIZARE_MUNCA FOR CONTAFIN_ORACLE.SAL_NOM_REPARTIZARE_MUNCA; CREATE OR REPLACE PUBLIC SYNONYM SYN_SAL_NOM_REPARTIZARE_MUNCA FOR CONTAFIN_ORACLE.SAL_NOM_REPARTIZARE_MUNCA;
CREATE OR REPLACE PUBLIC SYNONYM SYN_SAL_NOM_STARI_CTR FOR CONTAFIN_ORACLE.SAL_NOM_STARI_CTR; CREATE OR REPLACE PUBLIC SYNONYM SYN_SAL_NOM_STARI_CTR FOR CONTAFIN_ORACLE.SAL_NOM_STARI_CTR;
CREATE OR REPLACE PUBLIC SYNONYM SYN_SAL_NOM_TEMEI FOR CONTAFIN_ORACLE.SAL_NOM_TEMEI; CREATE OR REPLACE PUBLIC SYNONYM SYN_SAL_NOM_TEMEI FOR CONTAFIN_ORACLE.SAL_NOM_TEMEI;
CREATE OR REPLACE PUBLIC SYNONYM SYN_SAL_NOM_TIPAUTORIZATIE FOR CONTAFIN_ORACLE.SAL_NOM_TIPAUTORIZATIE; CREATE OR REPLACE PUBLIC SYNONYM SYN_SAL_NOM_TIPAUTORIZATIE FOR CONTAFIN_ORACLE.SAL_NOM_TIPAUTORIZATIE;
CREATE OR REPLACE PUBLIC SYNONYM SYN_SAL_NOM_TIP_NORME FOR CONTAFIN_ORACLE.SAL_NOM_TIP_NORME; CREATE OR REPLACE PUBLIC SYNONYM SYN_SAL_NOM_TIP_NORME FOR CONTAFIN_ORACLE.SAL_NOM_TIP_NORME;
CREATE OR REPLACE PUBLIC SYNONYM SYN_SAL_NOM_TIP_SPOR FOR CONTAFIN_ORACLE.SAL_NOM_TIP_SPOR; CREATE OR REPLACE PUBLIC SYNONYM SYN_SAL_NOM_TIP_SPOR FOR CONTAFIN_ORACLE.SAL_NOM_TIP_SPOR;
CREATE OR REPLACE PUBLIC SYNONYM SYN_UTILIZATORI FOR CONTAFIN_ORACLE.UTILIZATORI; CREATE OR REPLACE PUBLIC SYNONYM SYN_UTILIZATORI FOR CONTAFIN_ORACLE.UTILIZATORI;
CREATE OR REPLACE PUBLIC SYNONYM SYN_VDEF_PROGRAME FOR CONTAFIN_ORACLE.VDEF_PROGRAME; CREATE OR REPLACE PUBLIC SYNONYM SYN_VDEF_PROGRAME FOR CONTAFIN_ORACLE.VDEF_PROGRAME;
CREATE OR REPLACE PUBLIC SYNONYM SYN_VDEF_UTIL_FIRME FOR CONTAFIN_ORACLE.VDEF_UTIL_FIRME; CREATE OR REPLACE PUBLIC SYNONYM SYN_VDEF_UTIL_FIRME FOR CONTAFIN_ORACLE.VDEF_UTIL_FIRME;
CREATE OR REPLACE PUBLIC SYNONYM SYN_VDEF_UTIL_GRUP FOR CONTAFIN_ORACLE.VDEF_UTIL_GRUP; CREATE OR REPLACE PUBLIC SYNONYM SYN_VDEF_UTIL_GRUP FOR CONTAFIN_ORACLE.VDEF_UTIL_GRUP;
CREATE OR REPLACE PUBLIC SYNONYM SYN_VDEF_UTIL_OBIECTE FOR CONTAFIN_ORACLE.VDEF_UTIL_OBIECTE; CREATE OR REPLACE PUBLIC SYNONYM SYN_VDEF_UTIL_OBIECTE FOR CONTAFIN_ORACLE.VDEF_UTIL_OBIECTE;
CREATE OR REPLACE PUBLIC SYNONYM SYN_VDEF_UTIL_PROGRAME FOR CONTAFIN_ORACLE.VDEF_UTIL_PROGRAME; CREATE OR REPLACE PUBLIC SYNONYM SYN_VDEF_UTIL_PROGRAME FOR CONTAFIN_ORACLE.VDEF_UTIL_PROGRAME;
CREATE OR REPLACE PUBLIC SYNONYM SYN_V_NOM_FIRME FOR CONTAFIN_ORACLE.V_NOM_FIRME; CREATE OR REPLACE PUBLIC SYNONYM SYN_V_NOM_FIRME FOR CONTAFIN_ORACLE.V_NOM_FIRME;
CREATE OR REPLACE PUBLIC SYNONYM SYN_VNOM_JUDETE FOR CONTAFIN_ORACLE.VNOM_JUDETE; CREATE OR REPLACE PUBLIC SYNONYM SYN_VNOM_JUDETE FOR CONTAFIN_ORACLE.VNOM_JUDETE;
CREATE OR REPLACE PUBLIC SYNONYM SYN_VNOM_LOCALITATI FOR CONTAFIN_ORACLE.VNOM_LOCALITATI; CREATE OR REPLACE PUBLIC SYNONYM SYN_VNOM_LOCALITATI FOR CONTAFIN_ORACLE.VNOM_LOCALITATI;
CREATE OR REPLACE PUBLIC SYNONYM SYN_VNOM_TARI FOR CONTAFIN_ORACLE.VNOM_TARI; CREATE OR REPLACE PUBLIC SYNONYM SYN_VNOM_TARI FOR CONTAFIN_ORACLE.VNOM_TARI;
CREATE OR REPLACE PUBLIC SYNONYM SYN_VNOM_TIP_ARTERA FOR CONTAFIN_ORACLE.VNOM_TIP_ARTERA; CREATE OR REPLACE PUBLIC SYNONYM SYN_VNOM_TIP_ARTERA FOR CONTAFIN_ORACLE.VNOM_TIP_ARTERA;
CREATE OR REPLACE PUBLIC SYNONYM SYN_VNOM_UM_ISO FOR CONTAFIN_ORACLE.VNOM_UM_ISO; CREATE OR REPLACE PUBLIC SYNONYM SYN_VNOM_UM_ISO FOR CONTAFIN_ORACLE.VNOM_UM_ISO;
CREATE OR REPLACE PUBLIC SYNONYM SYN_VNOM_VALUTE_ISO FOR CONTAFIN_ORACLE.VNOM_VALUTE_ISO; CREATE OR REPLACE PUBLIC SYNONYM SYN_VNOM_VALUTE_ISO FOR CONTAFIN_ORACLE.VNOM_VALUTE_ISO;
CREATE OR REPLACE PUBLIC SYNONYM SYN_VUTILIZATORI FOR CONTAFIN_ORACLE.VUTILIZATORI; CREATE OR REPLACE PUBLIC SYNONYM SYN_VUTILIZATORI FOR CONTAFIN_ORACLE.VUTILIZATORI;
CREATE OR REPLACE PUBLIC SYNONYM SYN_NEWSCHEMA FOR SYS.NEWSCHEMA; CREATE OR REPLACE PUBLIC SYNONYM SYN_NEWSCHEMA FOR SYS.NEWSCHEMA;
CREATE OR REPLACE PUBLIC SYNONYM SYN_NEWSCHEMAJOB FOR SYS.NEWSCHEMAJOB; CREATE OR REPLACE PUBLIC SYNONYM SYN_NEWSCHEMAJOB FOR SYS.NEWSCHEMAJOB;
CREATE OR REPLACE PUBLIC SYNONYM SYN_NEWSCHEMAPROGRESS FOR SYS.NEWSCHEMAPROGRESS; CREATE OR REPLACE PUBLIC SYNONYM SYN_NEWSCHEMAPROGRESS FOR SYS.NEWSCHEMAPROGRESS;
PROMPT Sinonime publice create! PROMPT Sinonime publice create!
EXIT; EXIT;
EOFSCRIPT EOFSCRIPT
'" '"
echo "✓ Script sinonime generat" echo "✓ Script sinonime generat"
echo "" echo ""
echo "[2/3] Creare sinonime publice (53 total)..." echo "[2/3] Creare sinonime publice (53 total)..."
ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe sqlplus -s ${PDB_CONNECT} @/tmp/create_synonyms.sql" ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe sqlplus -s ${PDB_CONNECT} @/tmp/create_synonyms.sql"
echo "✓ Sinonime create" echo "✓ Sinonime create"
echo "" echo ""
echo "[3/3] Acordare grant-uri către PUBLIC (147 total)..." echo "[3/3] Acordare grant-uri către PUBLIC (147 total)..."
ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe sqlplus -s ${PDB_CONNECT}" <<'EOF' ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe sqlplus -s ${PDB_CONNECT}" <<'EOF'
WHENEVER SQLERROR CONTINUE WHENEVER SQLERROR CONTINUE
-- Grant-uri CONTAFIN_ORACLE → PUBLIC (sample complet în documentație) -- Grant-uri CONTAFIN_ORACLE → PUBLIC (sample complet în documentație)
GRANT REFERENCES ON CONTAFIN_ORACLE.ATAS_ATASAMENTE TO PUBLIC; GRANT REFERENCES ON CONTAFIN_ORACLE.ATAS_ATASAMENTE TO PUBLIC;
GRANT SELECT ON CONTAFIN_ORACLE.ATAS_ATASAMENTE TO PUBLIC; GRANT SELECT ON CONTAFIN_ORACLE.ATAS_ATASAMENTE TO PUBLIC;
GRANT EXECUTE ON CONTAFIN_ORACLE.PACK_DREPTURI TO PUBLIC; GRANT EXECUTE ON CONTAFIN_ORACLE.PACK_DREPTURI TO PUBLIC;
GRANT EXECUTE ON CONTAFIN_ORACLE.PACK_UTILS TO PUBLIC; GRANT EXECUTE ON CONTAFIN_ORACLE.PACK_UTILS TO PUBLIC;
GRANT EXECUTE ON CONTAFIN_ORACLE.PACK_UPDATE TO PUBLIC; GRANT EXECUTE ON CONTAFIN_ORACLE.PACK_UPDATE TO PUBLIC;
GRANT SELECT ON CONTAFIN_ORACLE.NOM_FIRME TO PUBLIC; GRANT SELECT ON CONTAFIN_ORACLE.NOM_FIRME TO PUBLIC;
GRANT SELECT ON CONTAFIN_ORACLE.UTILIZATORI TO PUBLIC; GRANT SELECT ON CONTAFIN_ORACLE.UTILIZATORI TO PUBLIC;
-- ... (147 grant-uri total - vezi scriptul complet în documentație) -- ... (147 grant-uri total - vezi scriptul complet în documentație)
PROMPT Grant-uri către PUBLIC acordate! PROMPT Grant-uri către PUBLIC acordate!
EXIT; EXIT;
EOF EOF
echo "✓ Grant-uri acordate" echo "✓ Grant-uri acordate"
echo "" echo ""
echo "Verificare finală..." echo "Verificare finală..."
ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe sqlplus -s ${PDB_CONNECT}" <<'EOF' ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe sqlplus -s ${PDB_CONNECT}" <<'EOF'
SET PAGESIZE 20 SET PAGESIZE 20
-- Verificare sinonime -- Verificare sinonime
SELECT COUNT(*) as "Sinonime SYN_*" SELECT COUNT(*) as "Sinonime SYN_*"
FROM dba_synonyms FROM dba_synonyms
WHERE owner='PUBLIC' AND synonym_name LIKE 'SYN_%'; WHERE owner='PUBLIC' AND synonym_name LIKE 'SYN_%';
-- Verificare grant-uri -- Verificare grant-uri
SELECT COUNT(*) as "Grant-uri to PUBLIC" SELECT COUNT(*) as "Grant-uri to PUBLIC"
FROM dba_tab_privs FROM dba_tab_privs
WHERE grantee='PUBLIC' AND grantor='CONTAFIN_ORACLE'; WHERE grantee='PUBLIC' AND grantor='CONTAFIN_ORACLE';
EXIT; EXIT;
EOF EOF
echo "" echo ""
echo "==========================================" echo "=========================================="
echo "✅ SINONIME + GRANT-URI COMPLETE!" echo "✅ SINONIME + GRANT-URI COMPLETE!"
echo "==========================================" echo "=========================================="
echo "" echo ""
echo "Următorul pas: 06-finalize-migration.sh" echo "Următorul pas: 06-finalize-migration.sh"
echo "" echo ""

View File

@@ -1,162 +1,162 @@
#!/bin/bash #!/bin/bash
#============================================================================== #==============================================================================
# Script: 06-finalize-migration.sh # Script: 06-finalize-migration.sh
# Descriere: Recompilare obiecte invalide + verificare finală migrare # Descriere: Recompilare obiecte invalide + verificare finală migrare
# Data: 30 Septembrie 2025 # Data: 30 Septembrie 2025
# Rulare: bash 06-finalize-migration.sh # Rulare: bash 06-finalize-migration.sh
#============================================================================== #==============================================================================
set -e set -e
echo "==========================================" echo "=========================================="
echo "FINALIZARE MIGRARE ORACLE 21c" echo "FINALIZARE MIGRARE ORACLE 21c"
echo "==========================================" echo "=========================================="
echo "" echo ""
ORACLE_PWD="OraclePass123" ORACLE_PWD="OraclePass123"
PDB_CONNECT="sys/${ORACLE_PWD}@localhost:1521/roa as sysdba" PDB_CONNECT="sys/${ORACLE_PWD}@localhost:1521/roa as sysdba"
# Detectare schema secundara # Detectare schema secundara
if [ -z "$SCHEMA2_NAME" ]; then if [ -z "$SCHEMA2_NAME" ]; then
SCHEMA2_NAME="MARIUSM_AUTO" SCHEMA2_NAME="MARIUSM_AUTO"
fi fi
echo "[1/2] Recompilare obiecte invalide..." echo "[1/2] Recompilare obiecte invalide..."
echo "Durată estimată: 5-10 minute" echo "Durată estimată: 5-10 minute"
ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe sqlplus -s ${PDB_CONNECT}" <<EOF ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe sqlplus -s ${PDB_CONNECT}" <<EOF
SET SERVEROUTPUT ON SET SERVEROUTPUT ON
WHENEVER SQLERROR CONTINUE WHENEVER SQLERROR CONTINUE
BEGIN BEGIN
DBMS_OUTPUT.PUT_LINE('Recompilare CONTAFIN_ORACLE...'); DBMS_OUTPUT.PUT_LINE('Recompilare CONTAFIN_ORACLE...');
DBMS_UTILITY.compile_schema('CONTAFIN_ORACLE', compile_all => FALSE); DBMS_UTILITY.compile_schema('CONTAFIN_ORACLE', compile_all => FALSE);
DBMS_OUTPUT.PUT_LINE('Recompilare ${SCHEMA2_NAME}...'); DBMS_OUTPUT.PUT_LINE('Recompilare ${SCHEMA2_NAME}...');
DBMS_UTILITY.compile_schema('${SCHEMA2_NAME}', compile_all => FALSE); DBMS_UTILITY.compile_schema('${SCHEMA2_NAME}', compile_all => FALSE);
DBMS_OUTPUT.PUT_LINE('Recompilare completă!'); DBMS_OUTPUT.PUT_LINE('Recompilare completă!');
END; END;
/ /
EXIT; EXIT;
EOF EOF
echo "✓ Obiecte recompilate" echo "✓ Obiecte recompilate"
echo "" echo ""
echo "[2/2] Verificare completă migrare..." echo "[2/2] Verificare completă migrare..."
ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe sqlplus -s ${PDB_CONNECT}" <<EOF ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe sqlplus -s ${PDB_CONNECT}" <<EOF
SET PAGESIZE 100 FEEDBACK ON SET PAGESIZE 100 FEEDBACK ON
PROMPT ========================================== PROMPT ==========================================
PROMPT VERIFICARE COMPLETA MIGRARE ORACLE 21c PROMPT VERIFICARE COMPLETA MIGRARE ORACLE 21c
PROMPT ========================================== PROMPT ==========================================
PROMPT PROMPT
PROMPT 1. Conexiune PDB ROA: PROMPT 1. Conexiune PDB ROA:
SELECT 'Connected to: ' || name || ' (CDB=' || cdb || ')' as info FROM v$database; SELECT 'Connected to: ' || name || ' (CDB=' || cdb || ')' as info FROM v$database;
PROMPT PROMPT
PROMPT 2. Tablespace ROA: PROMPT 2. Tablespace ROA:
SELECT tablespace_name, status, contents, SELECT tablespace_name, status, contents,
ROUND(SUM(bytes)/1024/1024/1024,2) as size_gb ROUND(SUM(bytes)/1024/1024/1024,2) as size_gb
FROM dba_data_files FROM dba_data_files
WHERE tablespace_name='ROA' WHERE tablespace_name='ROA'
GROUP BY tablespace_name, status, contents; GROUP BY tablespace_name, status, contents;
PROMPT PROMPT
PROMPT 3. Utilizatori: PROMPT 3. Utilizatori:
SELECT username, default_tablespace, account_status SELECT username, default_tablespace, account_status
FROM dba_users FROM dba_users
WHERE username IN ('CONTAFIN_ORACLE','${SCHEMA2_NAME}') WHERE username IN ('CONTAFIN_ORACLE','${SCHEMA2_NAME}')
ORDER BY username; ORDER BY username;
PROMPT PROMPT
PROMPT 4. Obiecte totale: PROMPT 4. Obiecte totale:
SELECT owner, COUNT(*) as total_objects, SELECT owner, COUNT(*) as total_objects,
SUM(CASE WHEN status='VALID' THEN 1 ELSE 0 END) as valid_objects, SUM(CASE WHEN status='VALID' THEN 1 ELSE 0 END) as valid_objects,
SUM(CASE WHEN status='INVALID' THEN 1 ELSE 0 END) as invalid_objects, SUM(CASE WHEN status='INVALID' THEN 1 ELSE 0 END) as invalid_objects,
ROUND(SUM(CASE WHEN status='VALID' THEN 1 ELSE 0 END) * 100.0 / COUNT(*), 2) || '%' as pct_valid ROUND(SUM(CASE WHEN status='VALID' THEN 1 ELSE 0 END) * 100.0 / COUNT(*), 2) || '%' as pct_valid
FROM dba_objects FROM dba_objects
WHERE owner IN ('CONTAFIN_ORACLE','${SCHEMA2_NAME}') WHERE owner IN ('CONTAFIN_ORACLE','${SCHEMA2_NAME}')
GROUP BY owner GROUP BY owner
ORDER BY owner; ORDER BY owner;
PROMPT PROMPT
PROMPT 5. Tabele: PROMPT 5. Tabele:
SELECT owner, COUNT(*) as table_count SELECT owner, COUNT(*) as table_count
FROM dba_tables FROM dba_tables
WHERE owner IN ('CONTAFIN_ORACLE','${SCHEMA2_NAME}') WHERE owner IN ('CONTAFIN_ORACLE','${SCHEMA2_NAME}')
GROUP BY owner GROUP BY owner
ORDER BY owner; ORDER BY owner;
PROMPT PROMPT
PROMPT 6. Obiecte SYS custom: PROMPT 6. Obiecte SYS custom:
SELECT object_name, object_type, status SELECT object_name, object_type, status
FROM dba_objects FROM dba_objects
WHERE owner='SYS' WHERE owner='SYS'
AND object_name IN ('AUTH_PACK','NEWSCHEMA','NEWSCHEMAJOB','VAUTH_SERII','AUTH_SERII') AND object_name IN ('AUTH_PACK','NEWSCHEMA','NEWSCHEMAJOB','VAUTH_SERII','AUTH_SERII')
ORDER BY object_type, object_name; ORDER BY object_type, object_name;
PROMPT PROMPT
PROMPT 7. Sinonime publice: PROMPT 7. Sinonime publice:
SELECT COUNT(*) as "Sinonime SYN_*" SELECT COUNT(*) as "Sinonime SYN_*"
FROM dba_synonyms FROM dba_synonyms
WHERE owner='PUBLIC' AND synonym_name LIKE 'SYN_%'; WHERE owner='PUBLIC' AND synonym_name LIKE 'SYN_%';
PROMPT PROMPT
PROMPT 8. Grant-uri PUBLIC: PROMPT 8. Grant-uri PUBLIC:
SELECT COUNT(*) as "Grants to PUBLIC" SELECT COUNT(*) as "Grants to PUBLIC"
FROM dba_tab_privs FROM dba_tab_privs
WHERE grantee='PUBLIC' AND grantor='CONTAFIN_ORACLE'; WHERE grantee='PUBLIC' AND grantor='CONTAFIN_ORACLE';
PROMPT PROMPT
PROMPT 9. Grant-uri SYS: PROMPT 9. Grant-uri SYS:
SELECT COUNT(*) as "Grants from SYS" SELECT COUNT(*) as "Grants from SYS"
FROM dba_tab_privs FROM dba_tab_privs
WHERE grantee='CONTAFIN_ORACLE' AND grantor='SYS'; WHERE grantee='CONTAFIN_ORACLE' AND grantor='SYS';
PROMPT PROMPT
PROMPT 10. Test funcțional - Sinonim public: PROMPT 10. Test funcțional - Sinonim public:
DECLARE DECLARE
v_count NUMBER; v_count NUMBER;
BEGIN BEGIN
SELECT COUNT(*) INTO v_count FROM dba_synonyms SELECT COUNT(*) INTO v_count FROM dba_synonyms
WHERE synonym_name='SYN_PACK_DREPTURI' AND owner='PUBLIC'; WHERE synonym_name='SYN_PACK_DREPTURI' AND owner='PUBLIC';
IF v_count > 0 THEN IF v_count > 0 THEN
DBMS_OUTPUT.PUT_LINE('✓ SYN_PACK_DREPTURI exists and is accessible'); DBMS_OUTPUT.PUT_LINE('✓ SYN_PACK_DREPTURI exists and is accessible');
ELSE ELSE
DBMS_OUTPUT.PUT_LINE('✗ SYN_PACK_DREPTURI NOT FOUND!'); DBMS_OUTPUT.PUT_LINE('✗ SYN_PACK_DREPTURI NOT FOUND!');
END IF; END IF;
END; END;
/ /
PROMPT PROMPT
PROMPT ========================================== PROMPT ==========================================
PROMPT VERIFICARE COMPLETA! PROMPT VERIFICARE COMPLETA!
PROMPT ========================================== PROMPT ==========================================
EXIT; EXIT;
EOF EOF
echo "" echo ""
echo "==========================================" echo "=========================================="
echo "✅ MIGRARE FINALIZATA CU SUCCES!" echo "✅ MIGRARE FINALIZATA CU SUCCES!"
echo "==========================================" echo "=========================================="
echo "" echo ""
echo "Rezumat:" echo "Rezumat:"
echo " ✓ PDB ROA creat" echo " ✓ PDB ROA creat"
echo " ✓ Tablespace ROA (20GB)" echo " ✓ Tablespace ROA (20GB)"
echo " ✓ Utilizatori: CONTAFIN_ORACLE, MARIUSM_AUTO" echo " ✓ Utilizatori: CONTAFIN_ORACLE, MARIUSM_AUTO"
echo " ✓ Obiecte importate: ~4,000" echo " ✓ Obiecte importate: ~4,000"
echo " ✓ Sinonime publice: 53" echo " ✓ Sinonime publice: 53"
echo " ✓ Grant-uri PUBLIC: 147" echo " ✓ Grant-uri PUBLIC: 147"
echo " ✓ Obiecte recompilate" echo " ✓ Obiecte recompilate"
echo "" echo ""
echo "Test conexiune:" echo "Test conexiune:"
echo " sqlplus CONTAFIN_ORACLE/${ORACLE_PWD}@10.0.20.201:1521/roa" echo " sqlplus CONTAFIN_ORACLE/${ORACLE_PWD}@10.0.20.201:1521/roa"
echo "" echo ""
echo "Log-uri disponibile:" echo "Log-uri disponibile:"
echo " - docker exec oracle-xe cat /tmp/contafin_import.log" echo " - docker exec oracle-xe cat /tmp/contafin_import.log"
echo " - docker exec oracle-xe cat /tmp/mariusm_import.log" echo " - docker exec oracle-xe cat /tmp/mariusm_import.log"
echo "" echo ""

View File

@@ -1,212 +1,212 @@
#!/bin/bash #!/bin/bash
# ============================================================================= # =============================================================================
# Clone VM 300 (Windows 11 Template) for Oracle Testing # Clone VM 300 (Windows 11 Template) for Oracle Testing
# ============================================================================= # =============================================================================
# #
# Purpose: Create a test VM for Oracle installation testing # Purpose: Create a test VM for Oracle installation testing
# #
# Usage: # Usage:
# ./clone-vm300.sh [TARGET_VMID] [TARGET_NAME] # ./clone-vm300.sh [TARGET_VMID] [TARGET_NAME]
# #
# Examples: # Examples:
# ./clone-vm300.sh # Creates VM 301 named oracle-test-301 # ./clone-vm300.sh # Creates VM 301 named oracle-test-301
# ./clone-vm300.sh 305 # Creates VM 305 named oracle-test-305 # ./clone-vm300.sh 305 # Creates VM 305 named oracle-test-305
# ./clone-vm300.sh 310 roa-prod # Creates VM 310 named roa-prod # ./clone-vm300.sh 310 roa-prod # Creates VM 310 named roa-prod
# #
# Prerequisites: # Prerequisites:
# - Run on Proxmox host (pvemini, pve1, or pveelite) # - Run on Proxmox host (pvemini, pve1, or pveelite)
# - VM 300 exists as Windows 11 template # - VM 300 exists as Windows 11 template
# - Sufficient storage space (~50GB per clone) # - Sufficient storage space (~50GB per clone)
# #
# ============================================================================= # =============================================================================
set -e set -e
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# Configuration # Configuration
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
SOURCE_VMID=300 SOURCE_VMID=300
TARGET_VMID=${1:-301} TARGET_VMID=${1:-301}
TARGET_NAME=${2:-"oracle-test-${TARGET_VMID}"} TARGET_NAME=${2:-"oracle-test-${TARGET_VMID}"}
# Storage for new VM (change if needed) # Storage for new VM (change if needed)
TARGET_STORAGE="local-zfs" TARGET_STORAGE="local-zfs"
# Node where to create the VM (empty = same as source) # Node where to create the VM (empty = same as source)
TARGET_NODE="" TARGET_NODE=""
# Full clone (true) or linked clone (false) # Full clone (true) or linked clone (false)
FULL_CLONE=true FULL_CLONE=true
# Start VM after creation # Start VM after creation
AUTO_START=true AUTO_START=true
# Description for the new VM # Description for the new VM
DESCRIPTION="Oracle 21c Test VM - Created $(date '+%Y-%m-%d %H:%M')" DESCRIPTION="Oracle 21c Test VM - Created $(date '+%Y-%m-%d %H:%M')"
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# Validation # Validation
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
echo "==============================================" echo "=============================================="
echo "Proxmox VM Clone Script" echo "Proxmox VM Clone Script"
echo "==============================================" echo "=============================================="
echo "" echo ""
echo "Source VM: $SOURCE_VMID" echo "Source VM: $SOURCE_VMID"
echo "Target VM: $TARGET_VMID" echo "Target VM: $TARGET_VMID"
echo "Target Name: $TARGET_NAME" echo "Target Name: $TARGET_NAME"
echo "Full Clone: $FULL_CLONE" echo "Full Clone: $FULL_CLONE"
echo "Auto Start: $AUTO_START" echo "Auto Start: $AUTO_START"
echo "" echo ""
# Check if running on Proxmox # Check if running on Proxmox
if ! command -v qm &> /dev/null; then if ! command -v qm &> /dev/null; then
echo "ERROR: This script must be run on a Proxmox host" echo "ERROR: This script must be run on a Proxmox host"
echo " (qm command not found)" echo " (qm command not found)"
exit 1 exit 1
fi fi
# Check if source VM exists # Check if source VM exists
if ! qm status $SOURCE_VMID &> /dev/null; then if ! qm status $SOURCE_VMID &> /dev/null; then
echo "ERROR: Source VM $SOURCE_VMID does not exist" echo "ERROR: Source VM $SOURCE_VMID does not exist"
exit 1 exit 1
fi fi
# Check if target VMID is already in use # Check if target VMID is already in use
if qm status $TARGET_VMID &> /dev/null 2>&1; then if qm status $TARGET_VMID &> /dev/null 2>&1; then
echo "ERROR: Target VMID $TARGET_VMID already exists" echo "ERROR: Target VMID $TARGET_VMID already exists"
echo " Choose a different VMID or remove existing VM:" echo " Choose a different VMID or remove existing VM:"
echo " qm destroy $TARGET_VMID" echo " qm destroy $TARGET_VMID"
exit 1 exit 1
fi fi
# Confirm before proceeding # Confirm before proceeding
read -p "Proceed with cloning? [y/N] " -n 1 -r read -p "Proceed with cloning? [y/N] " -n 1 -r
echo echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then if [[ ! $REPLY =~ ^[Yy]$ ]]; then
echo "Aborted." echo "Aborted."
exit 0 exit 0
fi fi
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# Clone VM # Clone VM
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
echo "" echo ""
echo "Creating clone..." echo "Creating clone..."
CLONE_CMD="qm clone $SOURCE_VMID $TARGET_VMID --name $TARGET_NAME" CLONE_CMD="qm clone $SOURCE_VMID $TARGET_VMID --name $TARGET_NAME"
if [ "$FULL_CLONE" = true ]; then if [ "$FULL_CLONE" = true ]; then
CLONE_CMD="$CLONE_CMD --full" CLONE_CMD="$CLONE_CMD --full"
fi fi
if [ -n "$TARGET_STORAGE" ]; then if [ -n "$TARGET_STORAGE" ]; then
CLONE_CMD="$CLONE_CMD --storage $TARGET_STORAGE" CLONE_CMD="$CLONE_CMD --storage $TARGET_STORAGE"
fi fi
if [ -n "$TARGET_NODE" ]; then if [ -n "$TARGET_NODE" ]; then
CLONE_CMD="$CLONE_CMD --target $TARGET_NODE" CLONE_CMD="$CLONE_CMD --target $TARGET_NODE"
fi fi
echo "Running: $CLONE_CMD" echo "Running: $CLONE_CMD"
eval $CLONE_CMD eval $CLONE_CMD
echo "Clone created successfully" echo "Clone created successfully"
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# Configure VM # Configure VM
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
echo "" echo ""
echo "Configuring VM..." echo "Configuring VM..."
# Set description # Set description
qm set $TARGET_VMID --description "$DESCRIPTION" qm set $TARGET_VMID --description "$DESCRIPTION"
# Optionally increase resources for Oracle # Optionally increase resources for Oracle
# qm set $TARGET_VMID --memory 8192 --cores 4 # qm set $TARGET_VMID --memory 8192 --cores 4
echo "VM configured" echo "VM configured"
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# Start VM # Start VM
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
if [ "$AUTO_START" = true ]; then if [ "$AUTO_START" = true ]; then
echo "" echo ""
echo "Starting VM..." echo "Starting VM..."
qm start $TARGET_VMID qm start $TARGET_VMID
# Wait for VM to start # Wait for VM to start
sleep 5 sleep 5
# Check status # Check status
STATUS=$(qm status $TARGET_VMID | awk '{print $2}') STATUS=$(qm status $TARGET_VMID | awk '{print $2}')
echo "VM Status: $STATUS" echo "VM Status: $STATUS"
fi fi
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# Output Summary # Output Summary
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
echo "" echo ""
echo "==============================================" echo "=============================================="
echo "VM Clone Complete" echo "VM Clone Complete"
echo "==============================================" echo "=============================================="
echo "" echo ""
echo "VMID: $TARGET_VMID" echo "VMID: $TARGET_VMID"
echo "Name: $TARGET_NAME" echo "Name: $TARGET_NAME"
echo "Status: $(qm status $TARGET_VMID | awk '{print $2}')" echo "Status: $(qm status $TARGET_VMID | awk '{print $2}')"
echo "" echo ""
echo "Console URL: https://$(hostname -I | awk '{print $1}'):8006/#v1:0:=qemu%2F${TARGET_VMID}:4::::::" echo "Console URL: https://$(hostname -I | awk '{print $1}'):8006/#v1:0:=qemu%2F${TARGET_VMID}:4::::::"
echo "" echo ""
echo "Next steps:" echo "Next steps:"
echo " 1. Connect to VM console" echo " 1. Connect to VM console"
echo " 2. Complete Windows OOBE if needed" echo " 2. Complete Windows OOBE if needed"
echo " 3. Install Oracle 21c XE or SE" echo " 3. Install Oracle 21c XE or SE"
echo " 4. Run ROA setup scripts" echo " 4. Run ROA setup scripts"
echo "" echo ""
echo "To delete this VM when done:" echo "To delete this VM when done:"
echo " qm stop $TARGET_VMID" echo " qm stop $TARGET_VMID"
echo " qm destroy $TARGET_VMID" echo " qm destroy $TARGET_VMID"
echo "" echo ""
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# Helper Commands # Helper Commands
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# Print helpful commands # Print helpful commands
cat << 'COMMANDS' cat << 'COMMANDS'
# Useful Proxmox commands: # Useful Proxmox commands:
# List all VMs # List all VMs
qm list qm list
# VM status # VM status
qm status TARGET_VMID qm status TARGET_VMID
# Start/Stop/Restart VM # Start/Stop/Restart VM
qm start TARGET_VMID qm start TARGET_VMID
qm stop TARGET_VMID qm stop TARGET_VMID
qm restart TARGET_VMID qm restart TARGET_VMID
# Access VM console # Access VM console
qm terminal TARGET_VMID qm terminal TARGET_VMID
# Clone with different storage # Clone with different storage
qm clone 300 TARGET_VMID --name NAME --full --storage local-lvm qm clone 300 TARGET_VMID --name NAME --full --storage local-lvm
# Snapshot before testing # Snapshot before testing
qm snapshot TARGET_VMID snap-before-oracle --description "Before Oracle install" qm snapshot TARGET_VMID snap-before-oracle --description "Before Oracle install"
# Rollback to snapshot # Rollback to snapshot
qm rollback TARGET_VMID snap-before-oracle qm rollback TARGET_VMID snap-before-oracle
# Delete VM # Delete VM
qm stop TARGET_VMID && qm destroy TARGET_VMID qm stop TARGET_VMID && qm destroy TARGET_VMID
COMMANDS COMMANDS
exit 0 exit 0

View File

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

View File

@@ -1,23 +1,23 @@
#!/bin/bash #!/bin/bash
# ============================================================================= # =============================================================================
# fix-sqlnet.sh - Startup script pentru Oracle 18c XE # fix-sqlnet.sh - Startup script pentru Oracle 18c XE
# ============================================================================= # =============================================================================
# Scop: Restaurează sqlnet.ora cu suport pentru clienți vechi (Instant Client 11g) # Scop: Restaurează sqlnet.ora cu suport pentru clienți vechi (Instant Client 11g)
# la fiecare pornire a containerului Docker. # la fiecare pornire a containerului Docker.
# #
# Locație în container: /opt/oracle/scripts/startup/fix-sqlnet.sh # Locație în container: /opt/oracle/scripts/startup/fix-sqlnet.sh
# Executat automat de: gvenzl/oracle-xe la pornirea containerului # Executat automat de: gvenzl/oracle-xe la pornirea containerului
# #
# Problema rezolvată: ORA-28040: No matching authentication protocol # Problema rezolvată: ORA-28040: No matching authentication protocol
# Cauză: Oracle 18c implicit nu acceptă autentificare de la clienți 11g # Cauză: Oracle 18c implicit nu acceptă autentificare de la clienți 11g
# ============================================================================= # =============================================================================
CONFIG_SOURCE="/opt/oracle/oradata/dbconfig/sqlnet.ora" CONFIG_SOURCE="/opt/oracle/oradata/dbconfig/sqlnet.ora"
CONFIG_DEST="/opt/oracle/product/18c/dbhomeXE/network/admin/sqlnet.ora" CONFIG_DEST="/opt/oracle/product/18c/dbhomeXE/network/admin/sqlnet.ora"
if [ -f "$CONFIG_SOURCE" ]; then if [ -f "$CONFIG_SOURCE" ]; then
cp "$CONFIG_SOURCE" "$CONFIG_DEST" cp "$CONFIG_SOURCE" "$CONFIG_DEST"
echo "[fix-sqlnet.sh] Copied custom sqlnet.ora with old auth protocol support" echo "[fix-sqlnet.sh] Copied custom sqlnet.ora with old auth protocol support"
else else
echo "[fix-sqlnet.sh] WARNING: $CONFIG_SOURCE not found, using default sqlnet.ora" echo "[fix-sqlnet.sh] WARNING: $CONFIG_SOURCE not found, using default sqlnet.ora"
fi fi

View File

@@ -1,31 +1,31 @@
#!/bin/bash #!/bin/bash
# Script pentru a finaliza un task (commit + push) # Script pentru a finaliza un task (commit + push)
PROJECT_DIR="/workspace/romfastsql" PROJECT_DIR="/workspace/romfastsql"
cd "$PROJECT_DIR" || exit 1 cd "$PROJECT_DIR" || exit 1
BRANCH=$(git branch --show-current) BRANCH=$(git branch --show-current)
if [ "$BRANCH" = "main" ]; then if [ "$BRANCH" = "main" ]; then
echo "❌ Ești pe main! Nu face commit direct pe main." echo "❌ Ești pe main! Nu face commit direct pe main."
exit 1 exit 1
fi fi
echo "📋 Status curent:" echo "📋 Status curent:"
git status --short git status --short
echo "" echo ""
read -p "Mesaj commit: " COMMIT_MSG read -p "Mesaj commit: " COMMIT_MSG
if [ -z "$COMMIT_MSG" ]; then if [ -z "$COMMIT_MSG" ]; then
echo "❌ Trebuie să dai un mesaj pentru commit" echo "❌ Trebuie să dai un mesaj pentru commit"
exit 1 exit 1
fi fi
git add . git add .
git commit -m "$COMMIT_MSG" git commit -m "$COMMIT_MSG"
git push -u origin "$BRANCH" git push -u origin "$BRANCH"
echo "" echo ""
echo "✅ Done! Branch-ul $BRANCH a fost push-uit." echo "✅ Done! Branch-ul $BRANCH a fost push-uit."
echo "🔗 Creează Pull Request în Gitea: https://gitea.romfast.ro/romfast/romfastsql/compare/main...$BRANCH" echo "🔗 Creează Pull Request în Gitea: https://gitea.romfast.ro/romfast/romfastsql/compare/main...$BRANCH"

View File

@@ -1,26 +1,26 @@
#!/bin/bash #!/bin/bash
# Script pentru a începe un task nou cu branch # Script pentru a începe un task nou cu branch
if [ -z "$1" ]; then if [ -z "$1" ]; then
echo "Utilizare: ~/new-task.sh <nume-branch>" echo "Utilizare: ~/new-task.sh <nume-branch>"
echo "Exemplu: ~/new-task.sh fix/rezolva-bug" echo "Exemplu: ~/new-task.sh fix/rezolva-bug"
exit 1 exit 1
fi fi
BRANCH_NAME="$1" BRANCH_NAME="$1"
PROJECT_DIR="/workspace/romfastsql" PROJECT_DIR="/workspace/romfastsql"
cd "$PROJECT_DIR" || exit 1 cd "$PROJECT_DIR" || exit 1
# Actualizează main # Actualizează main
echo "📥 Actualizez main..." echo "📥 Actualizez main..."
git checkout main git checkout main
git pull origin main git pull origin main
# Creează branch nou # Creează branch nou
echo "🌿 Creez branch: $BRANCH_NAME" echo "🌿 Creez branch: $BRANCH_NAME"
git checkout -b "$BRANCH_NAME" git checkout -b "$BRANCH_NAME"
echo "✅ Gata! Ești pe branch-ul: $BRANCH_NAME" echo "✅ Gata! Ești pe branch-ul: $BRANCH_NAME"
echo "" echo ""
echo "Pornește Claude cu: source ~/.nvm/nvm.sh && claude" echo "Pornește Claude cu: source ~/.nvm/nvm.sh && claude"

View File

@@ -1,17 +1,17 @@
#!/bin/bash #!/bin/bash
# Start or attach to Claude agent tmux session # Start or attach to Claude agent tmux session
SESSION_NAME="agent" SESSION_NAME="agent"
# Load nvm # Load nvm
export NVM_DIR="$HOME/.nvm" export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
# Check if session exists # Check if session exists
if tmux has-session -t $SESSION_NAME 2>/dev/null; then if tmux has-session -t $SESSION_NAME 2>/dev/null; then
echo "Attaching to existing session: $SESSION_NAME" echo "Attaching to existing session: $SESSION_NAME"
tmux attach-session -t $SESSION_NAME tmux attach-session -t $SESSION_NAME
else else
echo "Creating new session: $SESSION_NAME" echo "Creating new session: $SESSION_NAME"
tmux new-session -s $SESSION_NAME -c /workspace tmux new-session -s $SESSION_NAME -c /workspace
fi fi

View File

@@ -1,104 +1,104 @@
#!/bin/bash #!/bin/bash
# Script all-in-one pentru workflow cu selecție proiect # Script all-in-one pentru workflow cu selecție proiect
WORKSPACE="/workspace" WORKSPACE="/workspace"
source ~/.nvm/nvm.sh source ~/.nvm/nvm.sh
echo "🚀 Claude Workflow" echo "🚀 Claude Workflow"
echo "==================" echo "=================="
echo "" echo ""
# Listează proiectele (directoare cu .git) # Listează proiectele (directoare cu .git)
echo "📁 Proiecte disponibile:" echo "📁 Proiecte disponibile:"
echo "" echo ""
projects=() projects=()
i=1 i=1
for dir in "$WORKSPACE"/*/; do for dir in "$WORKSPACE"/*/; do
if [ -d "$dir/.git" ]; then if [ -d "$dir/.git" ]; then
name=$(basename "$dir") name=$(basename "$dir")
projects+=("$dir") projects+=("$dir")
echo " $i) $name" echo " $i) $name"
((i++)) ((i++))
fi fi
done done
if [ ${#projects[@]} -eq 0 ]; then if [ ${#projects[@]} -eq 0 ]; then
echo "❌ Nu am găsit proiecte Git în $WORKSPACE" echo "❌ Nu am găsit proiecte Git în $WORKSPACE"
exit 1 exit 1
fi fi
echo "" echo ""
read -p "Alege proiect [1-$((i-1))]: " proj_choice read -p "Alege proiect [1-$((i-1))]: " proj_choice
if [ -z "$proj_choice" ] || [ "$proj_choice" -lt 1 ] || [ "$proj_choice" -gt ${#projects[@]} ]; then if [ -z "$proj_choice" ] || [ "$proj_choice" -lt 1 ] || [ "$proj_choice" -gt ${#projects[@]} ]; then
echo "❌ Selecție invalidă" echo "❌ Selecție invalidă"
exit 1 exit 1
fi fi
PROJECT_DIR="${projects[$((proj_choice-1))]}" PROJECT_DIR="${projects[$((proj_choice-1))]}"
PROJECT_NAME=$(basename "$PROJECT_DIR") PROJECT_NAME=$(basename "$PROJECT_DIR")
cd "$PROJECT_DIR" || exit 1 cd "$PROJECT_DIR" || exit 1
echo "" echo ""
echo "📂 Proiect: $PROJECT_NAME" echo "📂 Proiect: $PROJECT_NAME"
echo "🌿 Branch curent: $(git branch --show-current)" echo "🌿 Branch curent: $(git branch --show-current)"
echo "" echo ""
echo "Ce vrei să faci?" echo "Ce vrei să faci?"
echo " 1) Începe task nou (branch nou)" echo " 1) Începe task nou (branch nou)"
echo " 2) Continuă task existent" echo " 2) Continuă task existent"
echo " 3) Finalizează task (commit + push)" echo " 3) Finalizează task (commit + push)"
echo " 4) Vezi branch-uri" echo " 4) Vezi branch-uri"
echo " 5) Pornește Claude pe branch-ul curent" echo " 5) Pornește Claude pe branch-ul curent"
echo "" echo ""
read -p "Alege [1-5]: " choice read -p "Alege [1-5]: " choice
case $choice in case $choice in
1) 1)
read -p "Nume branch (ex: fix/bug-login): " BRANCH_NAME read -p "Nume branch (ex: fix/bug-login): " BRANCH_NAME
git checkout main 2>/dev/null || git checkout master git checkout main 2>/dev/null || git checkout master
git pull git pull
git checkout -b "$BRANCH_NAME" git checkout -b "$BRANCH_NAME"
echo "✅ Branch creat: $BRANCH_NAME" echo "✅ Branch creat: $BRANCH_NAME"
echo "Pornesc Claude..." echo "Pornesc Claude..."
claude claude
;; ;;
2) 2)
echo "Branch-uri locale:" echo "Branch-uri locale:"
git branch git branch
echo "" echo ""
read -p "Nume branch: " BRANCH_NAME read -p "Nume branch: " BRANCH_NAME
git checkout "$BRANCH_NAME" git checkout "$BRANCH_NAME"
echo "Pornesc Claude..." echo "Pornesc Claude..."
claude claude
;; ;;
3) 3)
BRANCH=$(git branch --show-current) BRANCH=$(git branch --show-current)
if [ "$BRANCH" = "main" ] || [ "$BRANCH" = "master" ]; then if [ "$BRANCH" = "main" ] || [ "$BRANCH" = "master" ]; then
echo "❌ Ești pe $BRANCH! Nu face commit direct aici." echo "❌ Ești pe $BRANCH! Nu face commit direct aici."
exit 1 exit 1
fi fi
echo "📋 Status:" echo "📋 Status:"
git status --short git status --short
echo "" echo ""
read -p "Mesaj commit: " COMMIT_MSG read -p "Mesaj commit: " COMMIT_MSG
if [ -n "$COMMIT_MSG" ]; then if [ -n "$COMMIT_MSG" ]; then
git add . git add .
git commit -m "$COMMIT_MSG" git commit -m "$COMMIT_MSG"
git push -u origin "$BRANCH" git push -u origin "$BRANCH"
echo "✅ Push făcut pe $BRANCH" echo "✅ Push făcut pe $BRANCH"
fi fi
;; ;;
4) 4)
echo "Branch curent: $(git branch --show-current)" echo "Branch curent: $(git branch --show-current)"
echo "" echo ""
git branch -a git branch -a
;; ;;
5) 5)
echo "Pornesc Claude pe $(git branch --show-current)..." echo "Pornesc Claude pe $(git branch --show-current)..."
claude claude
;; ;;
*) *)
echo "Opțiune invalidă" echo "Opțiune invalidă"
;; ;;
esac esac