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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,132 +1,132 @@
#!/bin/bash
#==============================================================================
# Script: 05-create-synonyms-grants.sh
# Descriere: Creare sinonime publice (53) + grant-uri către PUBLIC (147)
# Data: 30 Septembrie 2025
# Rulare: bash 05-create-synonyms-grants.sh
#==============================================================================
set -e
echo "=========================================="
echo "CREARE SINONIME PUBLICE + GRANT-URI"
echo "=========================================="
echo ""
ORACLE_PWD="OraclePass123"
PDB_CONNECT="sys/${ORACLE_PWD}@localhost:1521/roa as sysdba"
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\"
-- 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_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_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_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_HELPCONT FOR CONTAFIN_ORACLE.HELPCONT;
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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_NEWSCHEMA FOR SYS.NEWSCHEMA;
CREATE OR REPLACE PUBLIC SYNONYM SYN_NEWSCHEMAJOB FOR SYS.NEWSCHEMAJOB;
CREATE OR REPLACE PUBLIC SYNONYM SYN_NEWSCHEMAPROGRESS FOR SYS.NEWSCHEMAPROGRESS;
PROMPT Sinonime publice create!
EXIT;
EOFSCRIPT
'"
echo "✓ Script sinonime generat"
echo ""
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"
echo "✓ Sinonime create"
echo ""
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'
WHENEVER SQLERROR CONTINUE
-- Grant-uri CONTAFIN_ORACLE → PUBLIC (sample complet în documentație)
GRANT REFERENCES 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_UTILS 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.UTILIZATORI TO PUBLIC;
-- ... (147 grant-uri total - vezi scriptul complet în documentație)
PROMPT Grant-uri către PUBLIC acordate!
EXIT;
EOF
echo "✓ Grant-uri acordate"
echo ""
echo "Verificare finală..."
ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe sqlplus -s ${PDB_CONNECT}" <<'EOF'
SET PAGESIZE 20
-- Verificare sinonime
SELECT COUNT(*) as "Sinonime SYN_*"
FROM dba_synonyms
WHERE owner='PUBLIC' AND synonym_name LIKE 'SYN_%';
-- Verificare grant-uri
SELECT COUNT(*) as "Grant-uri to PUBLIC"
FROM dba_tab_privs
WHERE grantee='PUBLIC' AND grantor='CONTAFIN_ORACLE';
EXIT;
EOF
echo ""
echo "=========================================="
echo "✅ SINONIME + GRANT-URI COMPLETE!"
echo "=========================================="
echo ""
echo "Următorul pas: 06-finalize-migration.sh"
echo ""
#!/bin/bash
#==============================================================================
# Script: 05-create-synonyms-grants.sh
# Descriere: Creare sinonime publice (53) + grant-uri către PUBLIC (147)
# Data: 30 Septembrie 2025
# Rulare: bash 05-create-synonyms-grants.sh
#==============================================================================
set -e
echo "=========================================="
echo "CREARE SINONIME PUBLICE + GRANT-URI"
echo "=========================================="
echo ""
ORACLE_PWD="OraclePass123"
PDB_CONNECT="sys/${ORACLE_PWD}@localhost:1521/roa as sysdba"
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\"
-- 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_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_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_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_HELPCONT FOR CONTAFIN_ORACLE.HELPCONT;
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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_NEWSCHEMA FOR SYS.NEWSCHEMA;
CREATE OR REPLACE PUBLIC SYNONYM SYN_NEWSCHEMAJOB FOR SYS.NEWSCHEMAJOB;
CREATE OR REPLACE PUBLIC SYNONYM SYN_NEWSCHEMAPROGRESS FOR SYS.NEWSCHEMAPROGRESS;
PROMPT Sinonime publice create!
EXIT;
EOFSCRIPT
'"
echo "✓ Script sinonime generat"
echo ""
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"
echo "✓ Sinonime create"
echo ""
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'
WHENEVER SQLERROR CONTINUE
-- Grant-uri CONTAFIN_ORACLE → PUBLIC (sample complet în documentație)
GRANT REFERENCES 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_UTILS 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.UTILIZATORI TO PUBLIC;
-- ... (147 grant-uri total - vezi scriptul complet în documentație)
PROMPT Grant-uri către PUBLIC acordate!
EXIT;
EOF
echo "✓ Grant-uri acordate"
echo ""
echo "Verificare finală..."
ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe sqlplus -s ${PDB_CONNECT}" <<'EOF'
SET PAGESIZE 20
-- Verificare sinonime
SELECT COUNT(*) as "Sinonime SYN_*"
FROM dba_synonyms
WHERE owner='PUBLIC' AND synonym_name LIKE 'SYN_%';
-- Verificare grant-uri
SELECT COUNT(*) as "Grant-uri to PUBLIC"
FROM dba_tab_privs
WHERE grantee='PUBLIC' AND grantor='CONTAFIN_ORACLE';
EXIT;
EOF
echo ""
echo "=========================================="
echo "✅ SINONIME + GRANT-URI COMPLETE!"
echo "=========================================="
echo ""
echo "Următorul pas: 06-finalize-migration.sh"
echo ""

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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