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:
File diff suppressed because it is too large
Load Diff
@@ -1,315 +1,315 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
#==============================================================================
|
#==============================================================================
|
||||||
# Script: 00-install-oracle21c-xe.sh
|
# Script: 00-install-oracle21c-xe.sh
|
||||||
# Descriere: Instalare completă Oracle 21c XE în Docker pe LXC Proxmox
|
# Descriere: Instalare completă Oracle 21c XE în Docker pe LXC Proxmox
|
||||||
# - Instalează Docker (dacă nu există)
|
# - Instalează Docker (dacă nu există)
|
||||||
# - Instalează Oracle 21c XE
|
# - Instalează Oracle 21c XE
|
||||||
# - Șterge XEPDB1 automat
|
# - Șterge XEPDB1 automat
|
||||||
# - Creează PDB ROA (și opțional PDB ROA2)
|
# - Creează PDB ROA (și opțional PDB ROA2)
|
||||||
# Data: 30 Septembrie 2025
|
# Data: 30 Septembrie 2025
|
||||||
# Rulare: bash 00-install-oracle21c-xe.sh
|
# Rulare: bash 00-install-oracle21c-xe.sh
|
||||||
# Unde: Pe host Proxmox (sau în LXC prin pct exec)
|
# Unde: Pe host Proxmox (sau în LXC prin pct exec)
|
||||||
#==============================================================================
|
#==============================================================================
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo "INSTALARE ORACLE 21c XE PE LXC + DOCKER"
|
echo "INSTALARE ORACLE 21c XE PE LXC + DOCKER"
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# Configurare
|
# Configurare
|
||||||
ORACLE_PWD="OraclePass123"
|
ORACLE_PWD="OraclePass123"
|
||||||
LXC_ID="108"
|
LXC_ID="108"
|
||||||
PROXMOX_HOST="10.0.20.201"
|
PROXMOX_HOST="10.0.20.201"
|
||||||
CONTAINER_NAME="oracle-xe"
|
CONTAINER_NAME="oracle-xe"
|
||||||
ORACLE_IMAGE="container-registry.oracle.com/database/express:21.3.0-xe"
|
ORACLE_IMAGE="container-registry.oracle.com/database/express:21.3.0-xe"
|
||||||
|
|
||||||
# Verificare dacă rulează pe Proxmox sau trebuie SSH
|
# Verificare dacă rulează pe Proxmox sau trebuie SSH
|
||||||
if [ -f "/etc/pve/.version" ]; then
|
if [ -f "/etc/pve/.version" ]; then
|
||||||
echo "✓ Rulează direct pe Proxmox host"
|
echo "✓ Rulează direct pe Proxmox host"
|
||||||
PVE_CMD=""
|
PVE_CMD=""
|
||||||
else
|
else
|
||||||
echo "Conectare la Proxmox ${PROXMOX_HOST}..."
|
echo "Conectare la Proxmox ${PROXMOX_HOST}..."
|
||||||
PVE_CMD="ssh root@${PROXMOX_HOST}"
|
PVE_CMD="ssh root@${PROXMOX_HOST}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo "PASUL 1/7: VERIFICARE LXC ${LXC_ID}"
|
echo "PASUL 1/7: VERIFICARE LXC ${LXC_ID}"
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# Verificare LXC există
|
# Verificare LXC există
|
||||||
if ! ${PVE_CMD} pct status ${LXC_ID} &>/dev/null; then
|
if ! ${PVE_CMD} pct status ${LXC_ID} &>/dev/null; then
|
||||||
echo "ERROR: LXC ${LXC_ID} nu există!"
|
echo "ERROR: LXC ${LXC_ID} nu există!"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Creează LXC manual:"
|
echo "Creează LXC manual:"
|
||||||
echo " pct create ${LXC_ID} local:vztmpl/debian-12-standard_12.2-1_amd64.tar.zst \\"
|
echo " pct create ${LXC_ID} local:vztmpl/debian-12-standard_12.2-1_amd64.tar.zst \\"
|
||||||
echo " --hostname oracle-db \\"
|
echo " --hostname oracle-db \\"
|
||||||
echo " --memory 8192 \\"
|
echo " --memory 8192 \\"
|
||||||
echo " --cores 4 \\"
|
echo " --cores 4 \\"
|
||||||
echo " --rootfs local-lvm:32 \\"
|
echo " --rootfs local-lvm:32 \\"
|
||||||
echo " --net0 name=eth0,bridge=vmbr0,ip=dhcp \\"
|
echo " --net0 name=eth0,bridge=vmbr0,ip=dhcp \\"
|
||||||
echo " --features nesting=1,keyctl=1"
|
echo " --features nesting=1,keyctl=1"
|
||||||
echo " pct start ${LXC_ID}"
|
echo " pct start ${LXC_ID}"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Start LXC dacă e oprit
|
# Start LXC dacă e oprit
|
||||||
if ! ${PVE_CMD} pct status ${LXC_ID} | grep -q "running"; then
|
if ! ${PVE_CMD} pct status ${LXC_ID} | grep -q "running"; then
|
||||||
echo "Pornire LXC ${LXC_ID}..."
|
echo "Pornire LXC ${LXC_ID}..."
|
||||||
${PVE_CMD} pct start ${LXC_ID}
|
${PVE_CMD} pct start ${LXC_ID}
|
||||||
sleep 5
|
sleep 5
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "✓ LXC ${LXC_ID} activ"
|
echo "✓ LXC ${LXC_ID} activ"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo "PASUL 2/7: INSTALARE DOCKER"
|
echo "PASUL 2/7: INSTALARE DOCKER"
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# Verificare Docker instalat
|
# Verificare Docker instalat
|
||||||
if ${PVE_CMD} pct exec ${LXC_ID} -- which docker &>/dev/null; then
|
if ${PVE_CMD} pct exec ${LXC_ID} -- which docker &>/dev/null; then
|
||||||
echo "✓ Docker deja instalat"
|
echo "✓ Docker deja instalat"
|
||||||
${PVE_CMD} pct exec ${LXC_ID} -- docker --version
|
${PVE_CMD} pct exec ${LXC_ID} -- docker --version
|
||||||
else
|
else
|
||||||
echo "Instalare Docker..."
|
echo "Instalare Docker..."
|
||||||
${PVE_CMD} pct exec ${LXC_ID} -- bash -c '
|
${PVE_CMD} pct exec ${LXC_ID} -- bash -c '
|
||||||
# Update package list
|
# Update package list
|
||||||
apt-get update
|
apt-get update
|
||||||
|
|
||||||
# Install prerequisites
|
# Install prerequisites
|
||||||
apt-get install -y \
|
apt-get install -y \
|
||||||
ca-certificates \
|
ca-certificates \
|
||||||
curl \
|
curl \
|
||||||
gnupg \
|
gnupg \
|
||||||
lsb-release
|
lsb-release
|
||||||
|
|
||||||
# Add Docker GPG key
|
# Add Docker GPG key
|
||||||
mkdir -p /etc/apt/keyrings
|
mkdir -p /etc/apt/keyrings
|
||||||
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
|
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
|
||||||
|
|
||||||
# Add Docker repository
|
# Add Docker repository
|
||||||
echo \
|
echo \
|
||||||
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
|
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
|
||||||
$(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
|
$(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||||||
|
|
||||||
# Install Docker
|
# Install Docker
|
||||||
apt-get update
|
apt-get update
|
||||||
apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
|
apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
|
||||||
|
|
||||||
# Enable and start Docker
|
# Enable and start Docker
|
||||||
systemctl enable docker
|
systemctl enable docker
|
||||||
systemctl start docker
|
systemctl start docker
|
||||||
|
|
||||||
echo "Docker version:"
|
echo "Docker version:"
|
||||||
docker --version
|
docker --version
|
||||||
'
|
'
|
||||||
echo "✓ Docker instalat"
|
echo "✓ Docker instalat"
|
||||||
fi
|
fi
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo "PASUL 3/7: DOWNLOAD ORACLE 21c XE IMAGE"
|
echo "PASUL 3/7: DOWNLOAD ORACLE 21c XE IMAGE"
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# Verificare dacă image-ul există
|
# Verificare dacă image-ul există
|
||||||
if ${PVE_CMD} pct exec ${LXC_ID} -- docker images | grep -q "express.*21.3.0-xe"; then
|
if ${PVE_CMD} pct exec ${LXC_ID} -- docker images | grep -q "express.*21.3.0-xe"; then
|
||||||
echo "✓ Oracle XE image deja descărcat"
|
echo "✓ Oracle XE image deja descărcat"
|
||||||
else
|
else
|
||||||
echo "Download Oracle 21c XE image (~ 2-3 GB)..."
|
echo "Download Oracle 21c XE image (~ 2-3 GB)..."
|
||||||
echo "Durată estimată: 5-15 minute (depinde de conexiune)"
|
echo "Durată estimată: 5-15 minute (depinde de conexiune)"
|
||||||
${PVE_CMD} pct exec ${LXC_ID} -- docker pull ${ORACLE_IMAGE}
|
${PVE_CMD} pct exec ${LXC_ID} -- docker pull ${ORACLE_IMAGE}
|
||||||
echo "✓ Oracle XE image descărcat"
|
echo "✓ Oracle XE image descărcat"
|
||||||
fi
|
fi
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo "PASUL 4/7: OPRIRE CONTAINER VECHI (dacă există)"
|
echo "PASUL 4/7: OPRIRE CONTAINER VECHI (dacă există)"
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
if ${PVE_CMD} pct exec ${LXC_ID} -- docker ps -a | grep -q ${CONTAINER_NAME}; then
|
if ${PVE_CMD} pct exec ${LXC_ID} -- docker ps -a | grep -q ${CONTAINER_NAME}; then
|
||||||
echo "Oprire și ștergere container vechi ${CONTAINER_NAME}..."
|
echo "Oprire și ștergere container vechi ${CONTAINER_NAME}..."
|
||||||
${PVE_CMD} pct exec ${LXC_ID} -- docker stop ${CONTAINER_NAME} 2>/dev/null || true
|
${PVE_CMD} pct exec ${LXC_ID} -- docker stop ${CONTAINER_NAME} 2>/dev/null || true
|
||||||
${PVE_CMD} pct exec ${LXC_ID} -- docker rm ${CONTAINER_NAME} 2>/dev/null || true
|
${PVE_CMD} pct exec ${LXC_ID} -- docker rm ${CONTAINER_NAME} 2>/dev/null || true
|
||||||
echo "✓ Container vechi șters"
|
echo "✓ Container vechi șters"
|
||||||
else
|
else
|
||||||
echo "✓ Nu există container vechi"
|
echo "✓ Nu există container vechi"
|
||||||
fi
|
fi
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo "PASUL 5/7: START ORACLE 21c XE CONTAINER"
|
echo "PASUL 5/7: START ORACLE 21c XE CONTAINER"
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# Creare directoare pentru date
|
# Creare directoare pentru date
|
||||||
${PVE_CMD} pct exec ${LXC_ID} -- mkdir -p /opt/oracle/oradata
|
${PVE_CMD} pct exec ${LXC_ID} -- mkdir -p /opt/oracle/oradata
|
||||||
|
|
||||||
echo "Pornire container Oracle XE..."
|
echo "Pornire container Oracle XE..."
|
||||||
${PVE_CMD} pct exec ${LXC_ID} -- docker run -d \
|
${PVE_CMD} pct exec ${LXC_ID} -- docker run -d \
|
||||||
--name ${CONTAINER_NAME} \
|
--name ${CONTAINER_NAME} \
|
||||||
--restart=unless-stopped \
|
--restart=unless-stopped \
|
||||||
-p 1521:1521 \
|
-p 1521:1521 \
|
||||||
-p 5500:5500 \
|
-p 5500:5500 \
|
||||||
-e ORACLE_PWD=${ORACLE_PWD} \
|
-e ORACLE_PWD=${ORACLE_PWD} \
|
||||||
-e ORACLE_CHARACTERSET=AL32UTF8 \
|
-e ORACLE_CHARACTERSET=AL32UTF8 \
|
||||||
-v /opt/oracle/oradata:/opt/oracle/oradata \
|
-v /opt/oracle/oradata:/opt/oracle/oradata \
|
||||||
${ORACLE_IMAGE}
|
${ORACLE_IMAGE}
|
||||||
|
|
||||||
echo "✓ Container pornit"
|
echo "✓ Container pornit"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Așteptare inițializare Oracle (~ 5-10 minute)..."
|
echo "Așteptare inițializare Oracle (~ 5-10 minute)..."
|
||||||
echo "Monitorizare log: docker logs -f ${CONTAINER_NAME}"
|
echo "Monitorizare log: docker logs -f ${CONTAINER_NAME}"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# Așteptare până când Oracle este gata
|
# Așteptare până când Oracle este gata
|
||||||
TIMEOUT=600 # 10 minute
|
TIMEOUT=600 # 10 minute
|
||||||
ELAPSED=0
|
ELAPSED=0
|
||||||
INTERVAL=10
|
INTERVAL=10
|
||||||
|
|
||||||
while [ $ELAPSED -lt $TIMEOUT ]; do
|
while [ $ELAPSED -lt $TIMEOUT ]; do
|
||||||
if ${PVE_CMD} pct exec ${LXC_ID} -- docker logs ${CONTAINER_NAME} 2>&1 | grep -q "DATABASE IS READY TO USE"; then
|
if ${PVE_CMD} pct exec ${LXC_ID} -- docker logs ${CONTAINER_NAME} 2>&1 | grep -q "DATABASE IS READY TO USE"; then
|
||||||
echo ""
|
echo ""
|
||||||
echo "✓ Oracle 21c XE READY!"
|
echo "✓ Oracle 21c XE READY!"
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
echo -n "."
|
echo -n "."
|
||||||
sleep $INTERVAL
|
sleep $INTERVAL
|
||||||
ELAPSED=$((ELAPSED + INTERVAL))
|
ELAPSED=$((ELAPSED + INTERVAL))
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ $ELAPSED -ge $TIMEOUT ]; then
|
if [ $ELAPSED -ge $TIMEOUT ]; then
|
||||||
echo ""
|
echo ""
|
||||||
echo "ERROR: Timeout așteptând Oracle să pornească!"
|
echo "ERROR: Timeout așteptând Oracle să pornească!"
|
||||||
echo "Verifică log-urile: docker logs ${CONTAINER_NAME}"
|
echo "Verifică log-urile: docker logs ${CONTAINER_NAME}"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo "PASUL 6/7: ȘTERGERE XEPDB1 + CREARE PDB ROA"
|
echo "PASUL 6/7: ȘTERGERE XEPDB1 + CREARE PDB ROA"
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
echo "Conectare la CDB și ștergere XEPDB1..."
|
echo "Conectare la CDB și ștergere XEPDB1..."
|
||||||
${PVE_CMD} pct exec ${LXC_ID} -- docker exec ${CONTAINER_NAME} sqlplus -s sys/${ORACLE_PWD}@localhost:1521/XE as sysdba <<'EOF'
|
${PVE_CMD} pct exec ${LXC_ID} -- docker exec ${CONTAINER_NAME} sqlplus -s sys/${ORACLE_PWD}@localhost:1521/XE as sysdba <<'EOF'
|
||||||
SET SERVEROUTPUT ON
|
SET SERVEROUTPUT ON
|
||||||
WHENEVER SQLERROR CONTINUE
|
WHENEVER SQLERROR CONTINUE
|
||||||
|
|
||||||
-- Închide și șterge XEPDB1
|
-- Închide și șterge XEPDB1
|
||||||
ALTER PLUGGABLE DATABASE xepdb1 CLOSE IMMEDIATE;
|
ALTER PLUGGABLE DATABASE xepdb1 CLOSE IMMEDIATE;
|
||||||
DROP PLUGGABLE DATABASE xepdb1 INCLUDING DATAFILES;
|
DROP PLUGGABLE DATABASE xepdb1 INCLUDING DATAFILES;
|
||||||
|
|
||||||
-- Verificare că XEPDB1 a fost șters
|
-- Verificare că XEPDB1 a fost șters
|
||||||
SELECT 'PDB după ștergere XEPDB1:' FROM DUAL;
|
SELECT 'PDB după ștergere XEPDB1:' FROM DUAL;
|
||||||
SELECT name, open_mode FROM v$pdbs;
|
SELECT name, open_mode FROM v$pdbs;
|
||||||
|
|
||||||
EXIT;
|
EXIT;
|
||||||
EOF
|
EOF
|
||||||
echo "✓ XEPDB1 șters"
|
echo "✓ XEPDB1 șters"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
echo "Creare PDB ROA..."
|
echo "Creare PDB ROA..."
|
||||||
${PVE_CMD} pct exec ${LXC_ID} -- docker exec ${CONTAINER_NAME} sqlplus -s sys/${ORACLE_PWD}@localhost:1521/XE as sysdba <<EOF
|
${PVE_CMD} pct exec ${LXC_ID} -- docker exec ${CONTAINER_NAME} sqlplus -s sys/${ORACLE_PWD}@localhost:1521/XE as sysdba <<EOF
|
||||||
SET SERVEROUTPUT ON
|
SET SERVEROUTPUT ON
|
||||||
WHENEVER SQLERROR EXIT SQL.SQLCODE
|
WHENEVER SQLERROR EXIT SQL.SQLCODE
|
||||||
|
|
||||||
-- Creare PDB ROA
|
-- Creare PDB ROA
|
||||||
CREATE PLUGGABLE DATABASE roa
|
CREATE PLUGGABLE DATABASE roa
|
||||||
ADMIN USER pdb_admin IDENTIFIED BY ${ORACLE_PWD}
|
ADMIN USER pdb_admin IDENTIFIED BY ${ORACLE_PWD}
|
||||||
FILE_NAME_CONVERT=('/opt/oracle/oradata/XE/pdbseed/','/opt/oracle/oradata/XE/roa/');
|
FILE_NAME_CONVERT=('/opt/oracle/oradata/XE/pdbseed/','/opt/oracle/oradata/XE/roa/');
|
||||||
|
|
||||||
-- Deschide PDB ROA
|
-- Deschide PDB ROA
|
||||||
ALTER PLUGGABLE DATABASE roa OPEN;
|
ALTER PLUGGABLE DATABASE roa OPEN;
|
||||||
ALTER PLUGGABLE DATABASE roa SAVE STATE;
|
ALTER PLUGGABLE DATABASE roa SAVE STATE;
|
||||||
|
|
||||||
-- Verificare
|
-- Verificare
|
||||||
SELECT name, open_mode FROM v\$pdbs WHERE name='ROA';
|
SELECT name, open_mode FROM v\$pdbs WHERE name='ROA';
|
||||||
|
|
||||||
DBMS_OUTPUT.PUT_LINE('✓ PDB ROA creat și deschis!');
|
DBMS_OUTPUT.PUT_LINE('✓ PDB ROA creat și deschis!');
|
||||||
|
|
||||||
EXIT;
|
EXIT;
|
||||||
EOF
|
EOF
|
||||||
echo "✓ PDB ROA creat"
|
echo "✓ PDB ROA creat"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo "PASUL 7/7: PDB ROA2 (OPȚIONAL)"
|
echo "PASUL 7/7: PDB ROA2 (OPȚIONAL)"
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
read -p "Vrei să creezi și PDB ROA2? (y/N): " -n 1 -r
|
read -p "Vrei să creezi și PDB ROA2? (y/N): " -n 1 -r
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||||
echo "Creare PDB ROA2..."
|
echo "Creare PDB ROA2..."
|
||||||
${PVE_CMD} pct exec ${LXC_ID} -- docker exec ${CONTAINER_NAME} sqlplus -s sys/${ORACLE_PWD}@localhost:1521/XE as sysdba <<EOF
|
${PVE_CMD} pct exec ${LXC_ID} -- docker exec ${CONTAINER_NAME} sqlplus -s sys/${ORACLE_PWD}@localhost:1521/XE as sysdba <<EOF
|
||||||
SET SERVEROUTPUT ON
|
SET SERVEROUTPUT ON
|
||||||
WHENEVER SQLERROR CONTINUE
|
WHENEVER SQLERROR CONTINUE
|
||||||
|
|
||||||
-- Creare PDB ROA2
|
-- Creare PDB ROA2
|
||||||
CREATE PLUGGABLE DATABASE roa2
|
CREATE PLUGGABLE DATABASE roa2
|
||||||
ADMIN USER pdb_admin IDENTIFIED BY ${ORACLE_PWD}
|
ADMIN USER pdb_admin IDENTIFIED BY ${ORACLE_PWD}
|
||||||
FILE_NAME_CONVERT=('/opt/oracle/oradata/XE/pdbseed/','/opt/oracle/oradata/XE/roa2/');
|
FILE_NAME_CONVERT=('/opt/oracle/oradata/XE/pdbseed/','/opt/oracle/oradata/XE/roa2/');
|
||||||
|
|
||||||
-- Deschide PDB ROA2
|
-- Deschide PDB ROA2
|
||||||
ALTER PLUGGABLE DATABASE roa2 OPEN;
|
ALTER PLUGGABLE DATABASE roa2 OPEN;
|
||||||
ALTER PLUGGABLE DATABASE roa2 SAVE STATE;
|
ALTER PLUGGABLE DATABASE roa2 SAVE STATE;
|
||||||
|
|
||||||
-- Verificare
|
-- Verificare
|
||||||
SELECT name, open_mode FROM v\$pdbs WHERE name='ROA2';
|
SELECT name, open_mode FROM v\$pdbs WHERE name='ROA2';
|
||||||
|
|
||||||
DBMS_OUTPUT.PUT_LINE('✓ PDB ROA2 creat și deschis!');
|
DBMS_OUTPUT.PUT_LINE('✓ PDB ROA2 creat și deschis!');
|
||||||
|
|
||||||
EXIT;
|
EXIT;
|
||||||
EOF
|
EOF
|
||||||
echo "✓ PDB ROA2 creat"
|
echo "✓ PDB ROA2 creat"
|
||||||
else
|
else
|
||||||
echo "✓ PDB ROA2 omis"
|
echo "✓ PDB ROA2 omis"
|
||||||
fi
|
fi
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo "✅ INSTALARE ORACLE 21c XE COMPLETĂ!"
|
echo "✅ INSTALARE ORACLE 21c XE COMPLETĂ!"
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo ""
|
echo ""
|
||||||
echo "Detalii instalare:"
|
echo "Detalii instalare:"
|
||||||
echo " - LXC: ${LXC_ID}"
|
echo " - LXC: ${LXC_ID}"
|
||||||
echo " - Container: ${CONTAINER_NAME}"
|
echo " - Container: ${CONTAINER_NAME}"
|
||||||
echo " - CDB: XE"
|
echo " - CDB: XE"
|
||||||
echo " - PDB: ROA (și ROA2 dacă ai creat)"
|
echo " - PDB: ROA (și ROA2 dacă ai creat)"
|
||||||
echo " - XEPDB1: ȘTERS"
|
echo " - XEPDB1: ȘTERS"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Conexiuni:"
|
echo "Conexiuni:"
|
||||||
echo " - CDB: sys/${ORACLE_PWD}@${PROXMOX_HOST}:1521/XE as sysdba"
|
echo " - CDB: sys/${ORACLE_PWD}@${PROXMOX_HOST}:1521/XE as sysdba"
|
||||||
echo " - PDB ROA: sys/${ORACLE_PWD}@${PROXMOX_HOST}:1521/roa as sysdba"
|
echo " - PDB ROA: sys/${ORACLE_PWD}@${PROXMOX_HOST}:1521/roa as sysdba"
|
||||||
|
|
||||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||||
echo " - PDB ROA2: sys/${ORACLE_PWD}@${PROXMOX_HOST}:1521/roa2 as sysdba"
|
echo " - PDB ROA2: sys/${ORACLE_PWD}@${PROXMOX_HOST}:1521/roa2 as sysdba"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "Test conexiune:"
|
echo "Test conexiune:"
|
||||||
echo " ${PVE_CMD} pct exec ${LXC_ID} -- docker exec -it ${CONTAINER_NAME} sqlplus sys/${ORACLE_PWD}@localhost:1521/roa as sysdba"
|
echo " ${PVE_CMD} pct exec ${LXC_ID} -- docker exec -it ${CONTAINER_NAME} sqlplus sys/${ORACLE_PWD}@localhost:1521/roa as sysdba"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Verificare PDB-uri:"
|
echo "Verificare PDB-uri:"
|
||||||
${PVE_CMD} pct exec ${LXC_ID} -- docker exec ${CONTAINER_NAME} sqlplus -s sys/${ORACLE_PWD}@localhost:1521/XE as sysdba <<'EOF'
|
${PVE_CMD} pct exec ${LXC_ID} -- docker exec ${CONTAINER_NAME} sqlplus -s sys/${ORACLE_PWD}@localhost:1521/XE as sysdba <<'EOF'
|
||||||
SET PAGESIZE 50
|
SET PAGESIZE 50
|
||||||
SELECT con_id, name, open_mode, restricted FROM v$pdbs ORDER BY con_id;
|
SELECT con_id, name, open_mode, restricted FROM v$pdbs ORDER BY con_id;
|
||||||
EXIT;
|
EXIT;
|
||||||
EOF
|
EOF
|
||||||
echo ""
|
echo ""
|
||||||
echo "Management container:"
|
echo "Management container:"
|
||||||
echo " Start: ${PVE_CMD} pct exec ${LXC_ID} -- docker start ${CONTAINER_NAME}"
|
echo " Start: ${PVE_CMD} pct exec ${LXC_ID} -- docker start ${CONTAINER_NAME}"
|
||||||
echo " Stop: ${PVE_CMD} pct exec ${LXC_ID} -- docker stop ${CONTAINER_NAME}"
|
echo " Stop: ${PVE_CMD} pct exec ${LXC_ID} -- docker stop ${CONTAINER_NAME}"
|
||||||
echo " Logs: ${PVE_CMD} pct exec ${LXC_ID} -- docker logs -f ${CONTAINER_NAME}"
|
echo " Logs: ${PVE_CMD} pct exec ${LXC_ID} -- docker logs -f ${CONTAINER_NAME}"
|
||||||
echo " Shell: ${PVE_CMD} pct exec ${LXC_ID} -- docker exec -it ${CONTAINER_NAME} bash"
|
echo " Shell: ${PVE_CMD} pct exec ${LXC_ID} -- docker exec -it ${CONTAINER_NAME} bash"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Următorul pas: 01-setup-oracle21c.sh (pentru tablespace + useri)"
|
echo "Următorul pas: 01-setup-oracle21c.sh (pentru tablespace + useri)"
|
||||||
echo ""
|
echo ""
|
||||||
|
|||||||
@@ -1,209 +1,209 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
#==============================================================================
|
#==============================================================================
|
||||||
# Script: 01-setup-oracle21c.sh
|
# Script: 01-setup-oracle21c.sh
|
||||||
# Descriere: Pregătire Oracle 21c XE - Creare PDB ROA, Tablespace ROA, Useri
|
# Descriere: Pregătire Oracle 21c XE - Creare PDB ROA, Tablespace ROA, Useri
|
||||||
# Data: 30 Septembrie 2025
|
# Data: 30 Septembrie 2025
|
||||||
# Rulare: bash 01-setup-oracle21c.sh
|
# Rulare: bash 01-setup-oracle21c.sh
|
||||||
#==============================================================================
|
#==============================================================================
|
||||||
|
|
||||||
set -e # Exit on error
|
set -e # Exit on error
|
||||||
|
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo "ORACLE 21c XE - SETUP PDB ROA"
|
echo "ORACLE 21c XE - SETUP PDB ROA"
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# Configurare
|
# Configurare
|
||||||
ORACLE_PWD="OraclePass123"
|
ORACLE_PWD="OraclePass123"
|
||||||
CDB_CONNECT="sys/${ORACLE_PWD}@localhost:1521/XE as sysdba"
|
CDB_CONNECT="sys/${ORACLE_PWD}@localhost:1521/XE as sysdba"
|
||||||
PDB_CONNECT="sys/${ORACLE_PWD}@localhost:1521/roa as sysdba"
|
PDB_CONNECT="sys/${ORACLE_PWD}@localhost:1521/roa as sysdba"
|
||||||
LXC_ID="108"
|
LXC_ID="108"
|
||||||
CONTAINER_NAME="oracle-xe"
|
CONTAINER_NAME="oracle-xe"
|
||||||
|
|
||||||
echo "[1/5] Verificare container Oracle XE..."
|
echo "[1/5] Verificare container Oracle XE..."
|
||||||
|
|
||||||
# Detectare dacă rulează în LXC sau pe Proxmox
|
# Detectare dacă rulează în LXC sau pe Proxmox
|
||||||
if [ -f "/etc/pve/.version" ]; then
|
if [ -f "/etc/pve/.version" ]; then
|
||||||
# Rulează pe Proxmox host
|
# Rulează pe Proxmox host
|
||||||
CMD_PREFIX="pct exec ${LXC_ID} --"
|
CMD_PREFIX="pct exec ${LXC_ID} --"
|
||||||
else
|
else
|
||||||
# Rulează direct în LXC
|
# Rulează direct în LXC
|
||||||
CMD_PREFIX=""
|
CMD_PREFIX=""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! ${CMD_PREFIX} docker ps | grep -q ${CONTAINER_NAME}; then
|
if ! ${CMD_PREFIX} docker ps | grep -q ${CONTAINER_NAME}; then
|
||||||
echo "ERROR: Container ${CONTAINER_NAME} nu rulează!"
|
echo "ERROR: Container ${CONTAINER_NAME} nu rulează!"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Opțiuni:"
|
echo "Opțiuni:"
|
||||||
echo " 1. Rulează: bash 00-install-oracle21c-xe.sh"
|
echo " 1. Rulează: bash 00-install-oracle21c-xe.sh"
|
||||||
echo " 2. Sau pornește manual: docker start ${CONTAINER_NAME}"
|
echo " 2. Sau pornește manual: docker start ${CONTAINER_NAME}"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
echo "✓ Container ${CONTAINER_NAME} activ"
|
echo "✓ Container ${CONTAINER_NAME} activ"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
echo "[2/5] Verificare PDB ROA există..."
|
echo "[2/5] Verificare PDB ROA există..."
|
||||||
PDB_EXISTS=$(${CMD_PREFIX} docker exec ${CONTAINER_NAME} sqlplus -s ${CDB_CONNECT} <<'EOF'
|
PDB_EXISTS=$(${CMD_PREFIX} docker exec ${CONTAINER_NAME} sqlplus -s ${CDB_CONNECT} <<'EOF'
|
||||||
SET PAGESIZE 0 FEEDBACK OFF HEADING OFF
|
SET PAGESIZE 0 FEEDBACK OFF HEADING OFF
|
||||||
SELECT COUNT(*) FROM v$pdbs WHERE name='ROA';
|
SELECT COUNT(*) FROM v$pdbs WHERE name='ROA';
|
||||||
EXIT;
|
EXIT;
|
||||||
EOF
|
EOF
|
||||||
)
|
)
|
||||||
|
|
||||||
if [ "$PDB_EXISTS" = "0" ] || [ -z "$PDB_EXISTS" ]; then
|
if [ "$PDB_EXISTS" = "0" ] || [ -z "$PDB_EXISTS" ]; then
|
||||||
echo "ERROR: PDB ROA nu există!"
|
echo "ERROR: PDB ROA nu există!"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Rulează mai întâi: bash 00-install-oracle21c-xe.sh"
|
echo "Rulează mai întâi: bash 00-install-oracle21c-xe.sh"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
echo "✓ PDB ROA există"
|
echo "✓ PDB ROA există"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
echo "[3/5] Creare Tablespace ROA..."
|
echo "[3/5] Creare Tablespace ROA..."
|
||||||
${CMD_PREFIX} docker exec ${CONTAINER_NAME} sqlplus -s ${PDB_CONNECT} <<EOF
|
${CMD_PREFIX} docker exec ${CONTAINER_NAME} sqlplus -s ${PDB_CONNECT} <<EOF
|
||||||
SET SERVEROUTPUT ON
|
SET SERVEROUTPUT ON
|
||||||
WHENEVER SQLERROR EXIT SQL.SQLCODE
|
WHENEVER SQLERROR EXIT SQL.SQLCODE
|
||||||
|
|
||||||
-- Verificare că suntem în PDB ROA
|
-- Verificare că suntem în PDB ROA
|
||||||
SELECT 'Connected to: ' || name || ' (CDB=' || cdb || ')' FROM v\$database;
|
SELECT 'Connected to: ' || name || ' (CDB=' || cdb || ')' FROM v\$database;
|
||||||
|
|
||||||
-- Creare tablespace ROA (ca în Oracle 10g)
|
-- Creare tablespace ROA (ca în Oracle 10g)
|
||||||
CREATE TABLESPACE ROA
|
CREATE TABLESPACE ROA
|
||||||
DATAFILE '/opt/oracle/oradata/XE/roa/roa_data01.dbf'
|
DATAFILE '/opt/oracle/oradata/XE/roa/roa_data01.dbf'
|
||||||
SIZE 20G AUTOEXTEND ON NEXT 500M MAXSIZE UNLIMITED
|
SIZE 20G AUTOEXTEND ON NEXT 500M MAXSIZE UNLIMITED
|
||||||
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
|
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
|
||||||
SEGMENT SPACE MANAGEMENT AUTO;
|
SEGMENT SPACE MANAGEMENT AUTO;
|
||||||
|
|
||||||
-- Verificare
|
-- Verificare
|
||||||
SELECT tablespace_name, status, contents FROM dba_tablespaces WHERE tablespace_name='ROA';
|
SELECT tablespace_name, status, contents FROM dba_tablespaces WHERE tablespace_name='ROA';
|
||||||
|
|
||||||
EXIT;
|
EXIT;
|
||||||
EOF
|
EOF
|
||||||
echo "✓ Tablespace ROA creat (20GB, autoextend)"
|
echo "✓ Tablespace ROA creat (20GB, autoextend)"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
echo "[4/5] Creare utilizatori CONTAFIN_ORACLE și schema secundara..."
|
echo "[4/5] Creare utilizatori CONTAFIN_ORACLE și schema secundara..."
|
||||||
|
|
||||||
# Detectare mod migrare (daca exista variabila exportata din master script)
|
# Detectare mod migrare (daca exista variabila exportata din master script)
|
||||||
if [ "$MIGRATION_MODE" = "NEW_INSTALL" ]; then
|
if [ "$MIGRATION_MODE" = "NEW_INSTALL" ]; then
|
||||||
echo ""
|
echo ""
|
||||||
echo "Mod: INSTALARE NOUA"
|
echo "Mod: INSTALARE NOUA"
|
||||||
read -p "Introdu numele schemei secundare (ex: FIRMANOUA): " SCHEMA2_NAME
|
read -p "Introdu numele schemei secundare (ex: FIRMANOUA): " SCHEMA2_NAME
|
||||||
SCHEMA2_NAME=$(echo "$SCHEMA2_NAME" | tr '[:lower:]' '[:upper:]')
|
SCHEMA2_NAME=$(echo "$SCHEMA2_NAME" | tr '[:lower:]' '[:upper:]')
|
||||||
echo "Schema secundara: $SCHEMA2_NAME"
|
echo "Schema secundara: $SCHEMA2_NAME"
|
||||||
export SCHEMA2_NAME
|
export SCHEMA2_NAME
|
||||||
else
|
else
|
||||||
SCHEMA2_NAME="MARIUSM_AUTO"
|
SCHEMA2_NAME="MARIUSM_AUTO"
|
||||||
echo "Mod: MIGRARE (schema secundara: MARIUSM_AUTO)"
|
echo "Mod: MIGRARE (schema secundara: MARIUSM_AUTO)"
|
||||||
fi
|
fi
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
${CMD_PREFIX} docker exec ${CONTAINER_NAME} sqlplus -s ${PDB_CONNECT} <<EOF
|
${CMD_PREFIX} docker exec ${CONTAINER_NAME} sqlplus -s ${PDB_CONNECT} <<EOF
|
||||||
SET SERVEROUTPUT ON
|
SET SERVEROUTPUT ON
|
||||||
WHENEVER SQLERROR EXIT SQL.SQLCODE
|
WHENEVER SQLERROR EXIT SQL.SQLCODE
|
||||||
|
|
||||||
-- User CONTAFIN_ORACLE
|
-- User CONTAFIN_ORACLE
|
||||||
CREATE USER CONTAFIN_ORACLE IDENTIFIED BY ${ORACLE_PWD}
|
CREATE USER CONTAFIN_ORACLE IDENTIFIED BY ${ORACLE_PWD}
|
||||||
DEFAULT TABLESPACE ROA
|
DEFAULT TABLESPACE ROA
|
||||||
TEMPORARY TABLESPACE TEMP
|
TEMPORARY TABLESPACE TEMP
|
||||||
QUOTA UNLIMITED ON ROA;
|
QUOTA UNLIMITED ON ROA;
|
||||||
|
|
||||||
-- User schema secundara (MARIUSM_AUTO sau custom)
|
-- User schema secundara (MARIUSM_AUTO sau custom)
|
||||||
CREATE USER ${SCHEMA2_NAME} IDENTIFIED BY ${ORACLE_PWD}
|
CREATE USER ${SCHEMA2_NAME} IDENTIFIED BY ${ORACLE_PWD}
|
||||||
DEFAULT TABLESPACE ROA
|
DEFAULT TABLESPACE ROA
|
||||||
TEMPORARY TABLESPACE TEMP
|
TEMPORARY TABLESPACE TEMP
|
||||||
QUOTA UNLIMITED ON ROA;
|
QUOTA UNLIMITED ON ROA;
|
||||||
|
|
||||||
-- Verificare
|
-- Verificare
|
||||||
SELECT username, default_tablespace, account_status
|
SELECT username, default_tablespace, account_status
|
||||||
FROM dba_users
|
FROM dba_users
|
||||||
WHERE username IN ('CONTAFIN_ORACLE','${SCHEMA2_NAME}')
|
WHERE username IN ('CONTAFIN_ORACLE','${SCHEMA2_NAME}')
|
||||||
ORDER BY username;
|
ORDER BY username;
|
||||||
|
|
||||||
EXIT;
|
EXIT;
|
||||||
EOF
|
EOF
|
||||||
echo "✓ Utilizatori creați (parola: ${ORACLE_PWD})"
|
echo "✓ Utilizatori creați (parola: ${ORACLE_PWD})"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
echo "[5/5] Acordare System Privileges + DBMS Packages..."
|
echo "[5/5] Acordare System Privileges + DBMS Packages..."
|
||||||
${CMD_PREFIX} docker exec ${CONTAINER_NAME} sqlplus -s ${PDB_CONNECT} <<EOF
|
${CMD_PREFIX} docker exec ${CONTAINER_NAME} sqlplus -s ${PDB_CONNECT} <<EOF
|
||||||
WHENEVER SQLERROR EXIT SQL.SQLCODE
|
WHENEVER SQLERROR EXIT SQL.SQLCODE
|
||||||
|
|
||||||
-- CONTAFIN_ORACLE - Privilegii COMPLETE (ca în 10g)
|
-- CONTAFIN_ORACLE - Privilegii COMPLETE (ca în 10g)
|
||||||
GRANT CONNECT, RESOURCE, DBA TO CONTAFIN_ORACLE;
|
GRANT CONNECT, RESOURCE, DBA TO CONTAFIN_ORACLE;
|
||||||
GRANT CREATE SESSION TO CONTAFIN_ORACLE;
|
GRANT CREATE SESSION TO CONTAFIN_ORACLE;
|
||||||
GRANT CREATE TABLE TO CONTAFIN_ORACLE;
|
GRANT CREATE TABLE TO CONTAFIN_ORACLE;
|
||||||
GRANT CREATE VIEW TO CONTAFIN_ORACLE;
|
GRANT CREATE VIEW TO CONTAFIN_ORACLE;
|
||||||
GRANT CREATE SEQUENCE TO CONTAFIN_ORACLE;
|
GRANT CREATE SEQUENCE TO CONTAFIN_ORACLE;
|
||||||
GRANT CREATE PROCEDURE TO CONTAFIN_ORACLE;
|
GRANT CREATE PROCEDURE TO CONTAFIN_ORACLE;
|
||||||
GRANT CREATE TRIGGER TO CONTAFIN_ORACLE;
|
GRANT CREATE TRIGGER TO CONTAFIN_ORACLE;
|
||||||
GRANT CREATE TYPE TO CONTAFIN_ORACLE;
|
GRANT CREATE TYPE TO CONTAFIN_ORACLE;
|
||||||
GRANT CREATE SYNONYM TO CONTAFIN_ORACLE;
|
GRANT CREATE SYNONYM TO CONTAFIN_ORACLE;
|
||||||
GRANT CREATE PUBLIC SYNONYM TO CONTAFIN_ORACLE;
|
GRANT CREATE PUBLIC SYNONYM TO CONTAFIN_ORACLE;
|
||||||
GRANT CREATE DATABASE LINK TO CONTAFIN_ORACLE;
|
GRANT CREATE DATABASE LINK TO CONTAFIN_ORACLE;
|
||||||
GRANT CREATE JOB TO CONTAFIN_ORACLE;
|
GRANT CREATE JOB TO CONTAFIN_ORACLE;
|
||||||
GRANT CREATE ANY DIRECTORY TO CONTAFIN_ORACLE;
|
GRANT CREATE ANY DIRECTORY TO CONTAFIN_ORACLE;
|
||||||
GRANT SELECT ANY TABLE TO CONTAFIN_ORACLE;
|
GRANT SELECT ANY TABLE TO CONTAFIN_ORACLE;
|
||||||
GRANT INSERT ANY TABLE TO CONTAFIN_ORACLE;
|
GRANT INSERT ANY TABLE TO CONTAFIN_ORACLE;
|
||||||
GRANT UPDATE ANY TABLE TO CONTAFIN_ORACLE;
|
GRANT UPDATE ANY TABLE TO CONTAFIN_ORACLE;
|
||||||
GRANT DELETE ANY TABLE TO CONTAFIN_ORACLE;
|
GRANT DELETE ANY TABLE TO CONTAFIN_ORACLE;
|
||||||
GRANT EXECUTE ANY PROCEDURE TO CONTAFIN_ORACLE;
|
GRANT EXECUTE ANY PROCEDURE TO CONTAFIN_ORACLE;
|
||||||
GRANT CREATE EXTERNAL JOB TO CONTAFIN_ORACLE;
|
GRANT CREATE EXTERNAL JOB TO CONTAFIN_ORACLE;
|
||||||
GRANT EXP_FULL_DATABASE TO CONTAFIN_ORACLE;
|
GRANT EXP_FULL_DATABASE TO CONTAFIN_ORACLE;
|
||||||
GRANT IMP_FULL_DATABASE TO CONTAFIN_ORACLE;
|
GRANT IMP_FULL_DATABASE TO CONTAFIN_ORACLE;
|
||||||
GRANT UNLIMITED TABLESPACE TO CONTAFIN_ORACLE;
|
GRANT UNLIMITED TABLESPACE TO CONTAFIN_ORACLE;
|
||||||
|
|
||||||
-- Schema secundara - Privilegii Standard
|
-- Schema secundara - Privilegii Standard
|
||||||
GRANT CONNECT, RESOURCE TO ${SCHEMA2_NAME};
|
GRANT CONNECT, RESOURCE TO ${SCHEMA2_NAME};
|
||||||
GRANT CREATE SESSION TO ${SCHEMA2_NAME};
|
GRANT CREATE SESSION TO ${SCHEMA2_NAME};
|
||||||
GRANT CREATE TABLE TO ${SCHEMA2_NAME};
|
GRANT CREATE TABLE TO ${SCHEMA2_NAME};
|
||||||
GRANT CREATE VIEW TO ${SCHEMA2_NAME};
|
GRANT CREATE VIEW TO ${SCHEMA2_NAME};
|
||||||
GRANT CREATE SEQUENCE TO ${SCHEMA2_NAME};
|
GRANT CREATE SEQUENCE TO ${SCHEMA2_NAME};
|
||||||
GRANT CREATE PROCEDURE TO ${SCHEMA2_NAME};
|
GRANT CREATE PROCEDURE TO ${SCHEMA2_NAME};
|
||||||
GRANT CREATE TRIGGER TO ${SCHEMA2_NAME};
|
GRANT CREATE TRIGGER TO ${SCHEMA2_NAME};
|
||||||
GRANT CREATE TYPE TO ${SCHEMA2_NAME};
|
GRANT CREATE TYPE TO ${SCHEMA2_NAME};
|
||||||
GRANT CREATE SYNONYM TO ${SCHEMA2_NAME};
|
GRANT CREATE SYNONYM TO ${SCHEMA2_NAME};
|
||||||
GRANT CREATE DATABASE LINK TO ${SCHEMA2_NAME};
|
GRANT CREATE DATABASE LINK TO ${SCHEMA2_NAME};
|
||||||
GRANT CREATE JOB TO ${SCHEMA2_NAME};
|
GRANT CREATE JOB TO ${SCHEMA2_NAME};
|
||||||
GRANT UNLIMITED TABLESPACE TO ${SCHEMA2_NAME};
|
GRANT UNLIMITED TABLESPACE TO ${SCHEMA2_NAME};
|
||||||
|
|
||||||
-- Grant-uri DBMS packages
|
-- Grant-uri DBMS packages
|
||||||
GRANT EXECUTE ON DBMS_LOCK TO CONTAFIN_ORACLE;
|
GRANT EXECUTE ON DBMS_LOCK TO CONTAFIN_ORACLE;
|
||||||
GRANT EXECUTE ON DBMS_SQL TO CONTAFIN_ORACLE;
|
GRANT EXECUTE ON DBMS_SQL TO CONTAFIN_ORACLE;
|
||||||
GRANT EXECUTE ON DBMS_UTILITY TO CONTAFIN_ORACLE;
|
GRANT EXECUTE ON DBMS_UTILITY TO CONTAFIN_ORACLE;
|
||||||
GRANT EXECUTE ON DBMS_OUTPUT TO CONTAFIN_ORACLE;
|
GRANT EXECUTE ON DBMS_OUTPUT TO CONTAFIN_ORACLE;
|
||||||
GRANT EXECUTE ON DBMS_JOB TO CONTAFIN_ORACLE;
|
GRANT EXECUTE ON DBMS_JOB TO CONTAFIN_ORACLE;
|
||||||
GRANT EXECUTE ON DBMS_SCHEDULER TO CONTAFIN_ORACLE;
|
GRANT EXECUTE ON DBMS_SCHEDULER TO CONTAFIN_ORACLE;
|
||||||
GRANT EXECUTE ON DBMS_LOB TO CONTAFIN_ORACLE;
|
GRANT EXECUTE ON DBMS_LOB TO CONTAFIN_ORACLE;
|
||||||
GRANT EXECUTE ON DBMS_XMLGEN TO CONTAFIN_ORACLE;
|
GRANT EXECUTE ON DBMS_XMLGEN TO CONTAFIN_ORACLE;
|
||||||
GRANT EXECUTE ON DBMS_METADATA TO CONTAFIN_ORACLE;
|
GRANT EXECUTE ON DBMS_METADATA TO CONTAFIN_ORACLE;
|
||||||
GRANT EXECUTE ON UTL_FILE TO CONTAFIN_ORACLE;
|
GRANT EXECUTE ON UTL_FILE TO CONTAFIN_ORACLE;
|
||||||
GRANT EXECUTE ON UTL_HTTP TO CONTAFIN_ORACLE;
|
GRANT EXECUTE ON UTL_HTTP TO CONTAFIN_ORACLE;
|
||||||
GRANT EXECUTE ON UTL_SMTP TO CONTAFIN_ORACLE;
|
GRANT EXECUTE ON UTL_SMTP TO CONTAFIN_ORACLE;
|
||||||
GRANT EXECUTE ON UTL_TCP TO CONTAFIN_ORACLE;
|
GRANT EXECUTE ON UTL_TCP TO CONTAFIN_ORACLE;
|
||||||
|
|
||||||
EXIT;
|
EXIT;
|
||||||
EOF
|
EOF
|
||||||
echo "✓ System privileges + DBMS packages acordate"
|
echo "✓ System privileges + DBMS packages acordate"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo "✅ SETUP COMPLET!"
|
echo "✅ SETUP COMPLET!"
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo ""
|
echo ""
|
||||||
echo "PDB ROA creat și configurat:"
|
echo "PDB ROA creat și configurat:"
|
||||||
echo " - Tablespace: ROA (20GB, autoextend)"
|
echo " - Tablespace: ROA (20GB, autoextend)"
|
||||||
echo " - User CONTAFIN_ORACLE (parola: ${ORACLE_PWD})"
|
echo " - User CONTAFIN_ORACLE (parola: ${ORACLE_PWD})"
|
||||||
echo " - User ${SCHEMA2_NAME} (parola: ${ORACLE_PWD})"
|
echo " - User ${SCHEMA2_NAME} (parola: ${ORACLE_PWD})"
|
||||||
echo " - System privileges: ✓"
|
echo " - System privileges: ✓"
|
||||||
echo " - DBMS grants: ✓"
|
echo " - DBMS grants: ✓"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Conexiune test:"
|
echo "Conexiune test:"
|
||||||
echo " sqlplus CONTAFIN_ORACLE/${ORACLE_PWD}@localhost:1521/roa"
|
echo " sqlplus CONTAFIN_ORACLE/${ORACLE_PWD}@localhost:1521/roa"
|
||||||
echo ""
|
echo ""
|
||||||
if [ "$MIGRATION_MODE" = "NEW_INSTALL" ]; then
|
if [ "$MIGRATION_MODE" = "NEW_INSTALL" ]; then
|
||||||
echo "Următorul pas: 03-transfer-to-oracle21c.sh (transfer template-uri)"
|
echo "Următorul pas: 03-transfer-to-oracle21c.sh (transfer template-uri)"
|
||||||
else
|
else
|
||||||
echo "Următorul pas: 02-export-oracle10g.bat (pe VM 107 Windows)"
|
echo "Următorul pas: 02-export-oracle10g.bat (pe VM 107 Windows)"
|
||||||
fi
|
fi
|
||||||
echo ""
|
echo ""
|
||||||
|
|||||||
@@ -1,417 +1,417 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
################################################################################
|
################################################################################
|
||||||
# 02-export-source.sh - Universal Export Script (Auto/Manual)
|
# 02-export-source.sh - Universal Export Script (Auto/Manual)
|
||||||
# Version: 2.1
|
# Version: 2.1
|
||||||
# Purpose: Export Oracle data with automatic (SSH) or manual modes
|
# Purpose: Export Oracle data with automatic (SSH) or manual modes
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo "ORACLE EXPORT - UNIVERSAL MODE"
|
echo "ORACLE EXPORT - UNIVERSAL MODE"
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# Check required variables from master script
|
# Check required variables from master script
|
||||||
if [ -z "$EXPORT_MODE" ]; then
|
if [ -z "$EXPORT_MODE" ]; then
|
||||||
echo "ERROR: EXPORT_MODE not set. Run via 00-MASTER-MIGRATION.sh"
|
echo "ERROR: EXPORT_MODE not set. Run via 00-MASTER-MIGRATION.sh"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Set default export directory
|
# Set default export directory
|
||||||
EXPORT_DIR="${EXPORT_DIR:-/tmp/oracle-export}"
|
EXPORT_DIR="${EXPORT_DIR:-/tmp/oracle-export}"
|
||||||
|
|
||||||
# Export timestamp for filenames
|
# Export timestamp for filenames
|
||||||
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
|
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# AUTOMATIC EXPORT (via SSH)
|
# AUTOMATIC EXPORT (via SSH)
|
||||||
################################################################################
|
################################################################################
|
||||||
if [ "$EXPORT_MODE" = "AUTO" ]; then
|
if [ "$EXPORT_MODE" = "AUTO" ]; then
|
||||||
echo "🔄 Mod AUTOMAT - Export via SSH"
|
echo "🔄 Mod AUTOMAT - Export via SSH"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# Validate SSH configuration
|
# Validate SSH configuration
|
||||||
if [ -z "$ORACLE_SOURCE_HOST" ] || [ -z "$ORACLE_SOURCE_USER" ]; then
|
if [ -z "$ORACLE_SOURCE_HOST" ] || [ -z "$ORACLE_SOURCE_USER" ]; then
|
||||||
echo "ERROR: SSH configuration incomplete"
|
echo "ERROR: SSH configuration incomplete"
|
||||||
echo " ORACLE_SOURCE_HOST: $ORACLE_SOURCE_HOST"
|
echo " ORACLE_SOURCE_HOST: $ORACLE_SOURCE_HOST"
|
||||||
echo " ORACLE_SOURCE_USER: $ORACLE_SOURCE_USER"
|
echo " ORACLE_SOURCE_USER: $ORACLE_SOURCE_USER"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Source Configuration:"
|
echo "Source Configuration:"
|
||||||
echo " Host: $ORACLE_SOURCE_HOST"
|
echo " Host: $ORACLE_SOURCE_HOST"
|
||||||
echo " User: $ORACLE_SOURCE_USER"
|
echo " User: $ORACLE_SOURCE_USER"
|
||||||
echo " OS: $ORACLE_SOURCE_OS"
|
echo " OS: $ORACLE_SOURCE_OS"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# Test SSH connection
|
# Test SSH connection
|
||||||
echo "Testing SSH connection..."
|
echo "Testing SSH connection..."
|
||||||
if ! ssh -o ConnectTimeout=5 ${ORACLE_SOURCE_USER}@${ORACLE_SOURCE_HOST} "echo 'SSH OK'" > /dev/null 2>&1; then
|
if ! ssh -o ConnectTimeout=5 ${ORACLE_SOURCE_USER}@${ORACLE_SOURCE_HOST} "echo 'SSH OK'" > /dev/null 2>&1; then
|
||||||
echo "ERROR: Cannot connect via SSH to ${ORACLE_SOURCE_USER}@${ORACLE_SOURCE_HOST}"
|
echo "ERROR: Cannot connect via SSH to ${ORACLE_SOURCE_USER}@${ORACLE_SOURCE_HOST}"
|
||||||
echo "Please check:"
|
echo "Please check:"
|
||||||
echo " 1. SSH service is running on source"
|
echo " 1. SSH service is running on source"
|
||||||
echo " 2. SSH keys are configured (or use ssh-copy-id)"
|
echo " 2. SSH keys are configured (or use ssh-copy-id)"
|
||||||
echo " 3. Firewall allows SSH connection"
|
echo " 3. Firewall allows SSH connection"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
echo "✓ SSH connection OK"
|
echo "✓ SSH connection OK"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# Execute export based on source OS
|
# Execute export based on source OS
|
||||||
if [ "$ORACLE_SOURCE_OS" = "Windows" ]; then
|
if [ "$ORACLE_SOURCE_OS" = "Windows" ]; then
|
||||||
echo "Executing Windows export via SSH..."
|
echo "Executing Windows export via SSH..."
|
||||||
|
|
||||||
# Check if export script exists on Windows
|
# Check if export script exists on Windows
|
||||||
if ! ssh ${ORACLE_SOURCE_USER}@${ORACLE_SOURCE_HOST} "if exist D:\\oracle-export-scripts\\00-MASTER-EXPORT-WSL.bat (echo EXISTS)" | grep -q "EXISTS"; then
|
if ! ssh ${ORACLE_SOURCE_USER}@${ORACLE_SOURCE_HOST} "if exist D:\\oracle-export-scripts\\00-MASTER-EXPORT-WSL.bat (echo EXISTS)" | grep -q "EXISTS"; then
|
||||||
echo "ERROR: Export script not found on Windows server"
|
echo "ERROR: Export script not found on Windows server"
|
||||||
echo "Expected path: D:\\oracle-export-scripts\\00-MASTER-EXPORT-WSL.bat"
|
echo "Expected path: D:\\oracle-export-scripts\\00-MASTER-EXPORT-WSL.bat"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Execute Windows batch script
|
# Execute Windows batch script
|
||||||
echo "Running export on Windows (this may take several minutes)..."
|
echo "Running export on Windows (this may take several minutes)..."
|
||||||
ssh ${ORACLE_SOURCE_USER}@${ORACLE_SOURCE_HOST} 'cmd /c "D:\oracle-export-scripts\00-MASTER-EXPORT-WSL.bat"'
|
ssh ${ORACLE_SOURCE_USER}@${ORACLE_SOURCE_HOST} 'cmd /c "D:\oracle-export-scripts\00-MASTER-EXPORT-WSL.bat"'
|
||||||
|
|
||||||
# Set remote export path for transfer
|
# Set remote export path for transfer
|
||||||
REMOTE_EXPORT_PATH="D:\\oracle-export"
|
REMOTE_EXPORT_PATH="D:\\oracle-export"
|
||||||
|
|
||||||
else
|
else
|
||||||
# Linux/Unix export
|
# Linux/Unix export
|
||||||
echo "Executing Linux export via SSH..."
|
echo "Executing Linux export via SSH..."
|
||||||
|
|
||||||
# Check if export script exists
|
# Check if export script exists
|
||||||
if ! ssh ${ORACLE_SOURCE_USER}@${ORACLE_SOURCE_HOST} "test -f /tmp/export-scripts/00-MASTER-EXPORT-ALL.sh && echo EXISTS" | grep -q "EXISTS"; then
|
if ! ssh ${ORACLE_SOURCE_USER}@${ORACLE_SOURCE_HOST} "test -f /tmp/export-scripts/00-MASTER-EXPORT-ALL.sh && echo EXISTS" | grep -q "EXISTS"; then
|
||||||
echo "ERROR: Export script not found on Linux server"
|
echo "ERROR: Export script not found on Linux server"
|
||||||
echo "Expected path: /tmp/export-scripts/00-MASTER-EXPORT-ALL.sh"
|
echo "Expected path: /tmp/export-scripts/00-MASTER-EXPORT-ALL.sh"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Execute Linux export script
|
# Execute Linux export script
|
||||||
echo "Running export on Linux (this may take several minutes)..."
|
echo "Running export on Linux (this may take several minutes)..."
|
||||||
ssh ${ORACLE_SOURCE_USER}@${ORACLE_SOURCE_HOST} "cd /tmp/export-scripts && bash ./00-MASTER-EXPORT-ALL.sh"
|
ssh ${ORACLE_SOURCE_USER}@${ORACLE_SOURCE_HOST} "cd /tmp/export-scripts && bash ./00-MASTER-EXPORT-ALL.sh"
|
||||||
|
|
||||||
# Set remote export path for transfer
|
# Set remote export path for transfer
|
||||||
REMOTE_EXPORT_PATH="/tmp/oracle-export"
|
REMOTE_EXPORT_PATH="/tmp/oracle-export"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "✓ Export completed on source server"
|
echo "✓ Export completed on source server"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Next: Run 03-transfer-to-oracle21c.sh to copy files"
|
echo "Next: Run 03-transfer-to-oracle21c.sh to copy files"
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# UPGRADE IN-PLACE (Complete guided workflow)
|
# UPGRADE IN-PLACE (Complete guided workflow)
|
||||||
################################################################################
|
################################################################################
|
||||||
elif [ "$EXPORT_MODE" = "INPLACE" ]; then
|
elif [ "$EXPORT_MODE" = "INPLACE" ]; then
|
||||||
echo "🎯 Mod UPGRADE IN-PLACE - Ghidare completă"
|
echo "🎯 Mod UPGRADE IN-PLACE - Ghidare completă"
|
||||||
echo ""
|
echo ""
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo "📤 PASUL 1/5: EXPORT DIN ORACLE VECHI"
|
echo "📤 PASUL 1/5: EXPORT DIN ORACLE VECHI"
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# Detectare unde să execute comenzile
|
# Detectare unde să execute comenzile
|
||||||
if [ "$ORACLE_SOURCE_OS" = "Windows" ]; then
|
if [ "$ORACLE_SOURCE_OS" = "Windows" ]; then
|
||||||
print_warning "⚠️ IMPORTANT: Execută comenzile de mai jos pe WINDOWS (unde e Oracle vechi)"
|
print_warning "⚠️ IMPORTANT: Execută comenzile de mai jos pe WINDOWS (unde e Oracle vechi)"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Deschide Command Prompt (cmd) CA ADMINISTRATOR și rulează:"
|
echo "Deschide Command Prompt (cmd) CA ADMINISTRATOR și rulează:"
|
||||||
echo ""
|
echo ""
|
||||||
echo "REM ==================================================="
|
echo "REM ==================================================="
|
||||||
echo "REM Export CONTAFIN_ORACLE"
|
echo "REM Export CONTAFIN_ORACLE"
|
||||||
echo "REM ==================================================="
|
echo "REM ==================================================="
|
||||||
echo "cd /d $EXPORT_DIR"
|
echo "cd /d $EXPORT_DIR"
|
||||||
echo "mkdir %CD% 2>nul"
|
echo "mkdir %CD% 2>nul"
|
||||||
echo ""
|
echo ""
|
||||||
echo "exp system/${OLD_ORACLE_PASS}@localhost:${OLD_ORACLE_PORT}/${OLD_ORACLE_SID} ^"
|
echo "exp system/${OLD_ORACLE_PASS}@localhost:${OLD_ORACLE_PORT}/${OLD_ORACLE_SID} ^"
|
||||||
echo " FILE=CONTAFIN_ORACLE_%DATE:~-4%%DATE:~3,2%%DATE:~0,2%.dmp ^"
|
echo " FILE=CONTAFIN_ORACLE_%DATE:~-4%%DATE:~3,2%%DATE:~0,2%.dmp ^"
|
||||||
echo " OWNER=CONTAFIN_ORACLE ^"
|
echo " OWNER=CONTAFIN_ORACLE ^"
|
||||||
echo " LOG=contafin_export.log ^"
|
echo " LOG=contafin_export.log ^"
|
||||||
echo " CONSISTENT=Y"
|
echo " CONSISTENT=Y"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
if [ -n "$SCHEMA2_NAME" ] && [ "$SCHEMA2_NAME" != "none" ]; then
|
if [ -n "$SCHEMA2_NAME" ] && [ "$SCHEMA2_NAME" != "none" ]; then
|
||||||
echo "REM ==================================================="
|
echo "REM ==================================================="
|
||||||
echo "REM Export $SCHEMA2_NAME"
|
echo "REM Export $SCHEMA2_NAME"
|
||||||
echo "REM ==================================================="
|
echo "REM ==================================================="
|
||||||
echo "exp system/${OLD_ORACLE_PASS}@localhost:${OLD_ORACLE_PORT}/${OLD_ORACLE_SID} ^"
|
echo "exp system/${OLD_ORACLE_PASS}@localhost:${OLD_ORACLE_PORT}/${OLD_ORACLE_SID} ^"
|
||||||
echo " FILE=${SCHEMA2_NAME}_%DATE:~-4%%DATE:~3,2%%DATE:~0,2%.dmp ^"
|
echo " FILE=${SCHEMA2_NAME}_%DATE:~-4%%DATE:~3,2%%DATE:~0,2%.dmp ^"
|
||||||
echo " OWNER=$SCHEMA2_NAME ^"
|
echo " OWNER=$SCHEMA2_NAME ^"
|
||||||
echo " LOG=${SCHEMA2_NAME,,}_export.log ^"
|
echo " LOG=${SCHEMA2_NAME,,}_export.log ^"
|
||||||
echo " CONSISTENT=Y"
|
echo " CONSISTENT=Y"
|
||||||
echo ""
|
echo ""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "REM Verificare fișiere create"
|
echo "REM Verificare fișiere create"
|
||||||
echo "dir *.dmp"
|
echo "dir *.dmp"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
else
|
else
|
||||||
# Linux
|
# Linux
|
||||||
print_warning "⚠️ IMPORTANT: Execută comenzile de mai jos pe LINUX (unde e Oracle vechi)"
|
print_warning "⚠️ IMPORTANT: Execută comenzile de mai jos pe LINUX (unde e Oracle vechi)"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Deschide terminal și rulează:"
|
echo "Deschide terminal și rulează:"
|
||||||
echo ""
|
echo ""
|
||||||
echo "# ================================================"
|
echo "# ================================================"
|
||||||
echo "# Export CONTAFIN_ORACLE"
|
echo "# Export CONTAFIN_ORACLE"
|
||||||
echo "# ================================================"
|
echo "# ================================================"
|
||||||
echo "mkdir -p $EXPORT_DIR"
|
echo "mkdir -p $EXPORT_DIR"
|
||||||
echo "cd $EXPORT_DIR"
|
echo "cd $EXPORT_DIR"
|
||||||
echo ""
|
echo ""
|
||||||
echo "exp system/${OLD_ORACLE_PASS}@localhost:${OLD_ORACLE_PORT}/${OLD_ORACLE_SID} \\"
|
echo "exp system/${OLD_ORACLE_PASS}@localhost:${OLD_ORACLE_PORT}/${OLD_ORACLE_SID} \\"
|
||||||
echo " FILE=CONTAFIN_ORACLE_\$(date +%Y%m%d).dmp \\"
|
echo " FILE=CONTAFIN_ORACLE_\$(date +%Y%m%d).dmp \\"
|
||||||
echo " OWNER=CONTAFIN_ORACLE \\"
|
echo " OWNER=CONTAFIN_ORACLE \\"
|
||||||
echo " LOG=contafin_export.log \\"
|
echo " LOG=contafin_export.log \\"
|
||||||
echo " CONSISTENT=Y"
|
echo " CONSISTENT=Y"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
if [ -n "$SCHEMA2_NAME" ] && [ "$SCHEMA2_NAME" != "none" ]; then
|
if [ -n "$SCHEMA2_NAME" ] && [ "$SCHEMA2_NAME" != "none" ]; then
|
||||||
echo "# ================================================"
|
echo "# ================================================"
|
||||||
echo "# Export $SCHEMA2_NAME"
|
echo "# Export $SCHEMA2_NAME"
|
||||||
echo "# ================================================"
|
echo "# ================================================"
|
||||||
echo "exp system/${OLD_ORACLE_PASS}@localhost:${OLD_ORACLE_PORT}/${OLD_ORACLE_SID} \\"
|
echo "exp system/${OLD_ORACLE_PASS}@localhost:${OLD_ORACLE_PORT}/${OLD_ORACLE_SID} \\"
|
||||||
echo " FILE=${SCHEMA2_NAME}_\$(date +%Y%m%d).dmp \\"
|
echo " FILE=${SCHEMA2_NAME}_\$(date +%Y%m%d).dmp \\"
|
||||||
echo " OWNER=$SCHEMA2_NAME \\"
|
echo " OWNER=$SCHEMA2_NAME \\"
|
||||||
echo " LOG=${SCHEMA2_NAME,,}_export.log \\"
|
echo " LOG=${SCHEMA2_NAME,,}_export.log \\"
|
||||||
echo " CONSISTENT=Y"
|
echo " CONSISTENT=Y"
|
||||||
echo ""
|
echo ""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "# Verificare fișiere create"
|
echo "# Verificare fișiere create"
|
||||||
echo "ls -lh *.dmp"
|
echo "ls -lh *.dmp"
|
||||||
echo ""
|
echo ""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo ""
|
echo ""
|
||||||
read -p "✅ Apasă ENTER când ai terminat exportul și ai verificat fișierele DMP..." WAIT_EXPORT
|
read -p "✅ Apasă ENTER când ai terminat exportul și ai verificat fișierele DMP..." WAIT_EXPORT
|
||||||
|
|
||||||
# Verificare existență fișiere (dacă directorul e accesibil)
|
# Verificare existență fișiere (dacă directorul e accesibil)
|
||||||
if [ -d "$EXPORT_DIR" ]; then
|
if [ -d "$EXPORT_DIR" ]; then
|
||||||
echo ""
|
echo ""
|
||||||
echo "Verificare fișiere în $EXPORT_DIR..."
|
echo "Verificare fișiere în $EXPORT_DIR..."
|
||||||
if [ -f "$EXPORT_DIR"/CONTAFIN_ORACLE*.dmp ]; then
|
if [ -f "$EXPORT_DIR"/CONTAFIN_ORACLE*.dmp ]; then
|
||||||
print_success "✅ Fișier CONTAFIN găsit!"
|
print_success "✅ Fișier CONTAFIN găsit!"
|
||||||
ls -lh "$EXPORT_DIR"/CONTAFIN_ORACLE*.dmp
|
ls -lh "$EXPORT_DIR"/CONTAFIN_ORACLE*.dmp
|
||||||
else
|
else
|
||||||
print_warning "⚠️ Nu găsesc fișier CONTAFIN în $EXPORT_DIR"
|
print_warning "⚠️ Nu găsesc fișier CONTAFIN în $EXPORT_DIR"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo "⏸️ PASUL 2/5: OPRIRE ORACLE VECHI"
|
echo "⏸️ PASUL 2/5: OPRIRE ORACLE VECHI"
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
if [ "$ORACLE_SOURCE_OS" = "Windows" ]; then
|
if [ "$ORACLE_SOURCE_OS" = "Windows" ]; then
|
||||||
echo "Pe WINDOWS, deschide Command Prompt CA ADMINISTRATOR și rulează:"
|
echo "Pe WINDOWS, deschide Command Prompt CA ADMINISTRATOR și rulează:"
|
||||||
echo ""
|
echo ""
|
||||||
echo "REM ==================================================="
|
echo "REM ==================================================="
|
||||||
echo "REM Oprire servicii Oracle vechi"
|
echo "REM Oprire servicii Oracle vechi"
|
||||||
echo "REM ==================================================="
|
echo "REM ==================================================="
|
||||||
echo "net stop OracleServiceXE"
|
echo "net stop OracleServiceXE"
|
||||||
echo "net stop OracleXETNSListener"
|
echo "net stop OracleXETNSListener"
|
||||||
echo ""
|
echo ""
|
||||||
echo "REM Opțional: Dezactivează serviciile (să nu pornească automat)"
|
echo "REM Opțional: Dezactivează serviciile (să nu pornească automat)"
|
||||||
echo "sc config OracleServiceXE start= disabled"
|
echo "sc config OracleServiceXE start= disabled"
|
||||||
echo "sc config OracleXETNSListener start= disabled"
|
echo "sc config OracleXETNSListener start= disabled"
|
||||||
echo ""
|
echo ""
|
||||||
echo "REM Verificare servicii oprite"
|
echo "REM Verificare servicii oprite"
|
||||||
echo "sc query OracleServiceXE"
|
echo "sc query OracleServiceXE"
|
||||||
echo ""
|
echo ""
|
||||||
else
|
else
|
||||||
echo "Pe LINUX, deschide terminal și rulează:"
|
echo "Pe LINUX, deschide terminal și rulează:"
|
||||||
echo ""
|
echo ""
|
||||||
echo "# ==================================================="
|
echo "# ==================================================="
|
||||||
echo "# Oprire servicii Oracle vechi"
|
echo "# Oprire servicii Oracle vechi"
|
||||||
echo "# ==================================================="
|
echo "# ==================================================="
|
||||||
echo "sudo systemctl stop oracle-xe"
|
echo "sudo systemctl stop oracle-xe"
|
||||||
echo "sudo systemctl disable oracle-xe"
|
echo "sudo systemctl disable oracle-xe"
|
||||||
echo ""
|
echo ""
|
||||||
echo "# Verificare serviciu oprit"
|
echo "# Verificare serviciu oprit"
|
||||||
echo "sudo systemctl status oracle-xe"
|
echo "sudo systemctl status oracle-xe"
|
||||||
echo ""
|
echo ""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
read -p "✅ Apasă ENTER când ai oprit serviciile Oracle vechi..." WAIT_STOP
|
read -p "✅ Apasă ENTER când ai oprit serviciile Oracle vechi..." WAIT_STOP
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
print_success "✅ Export complet! Oracle vechi oprit!"
|
print_success "✅ Export complet! Oracle vechi oprit!"
|
||||||
echo ""
|
echo ""
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo "📝 PASUL 3/5: INSTALARE ORACLE 21c XE"
|
echo "📝 PASUL 3/5: INSTALARE ORACLE 21c XE"
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo ""
|
echo ""
|
||||||
echo "Următorul pas va fi instalarea Oracle 21c XE."
|
echo "Următorul pas va fi instalarea Oracle 21c XE."
|
||||||
echo ""
|
echo ""
|
||||||
echo "Opțiuni:"
|
echo "Opțiuni:"
|
||||||
if [ "$ORACLE_SOURCE_OS" = "Windows" ]; then
|
if [ "$ORACLE_SOURCE_OS" = "Windows" ]; then
|
||||||
echo " 1. Download Oracle XE 21c pentru Windows de la:"
|
echo " 1. Download Oracle XE 21c pentru Windows de la:"
|
||||||
echo " https://www.oracle.com/database/technologies/xe-downloads.html"
|
echo " https://www.oracle.com/database/technologies/xe-downloads.html"
|
||||||
echo " 2. Instalare normală (va folosi același port 1521)"
|
echo " 2. Instalare normală (va folosi același port 1521)"
|
||||||
echo " 3. Apoi continuă cu scripturile de import"
|
echo " 3. Apoi continuă cu scripturile de import"
|
||||||
else
|
else
|
||||||
echo " 1. Instalare cu scriptul 00-install-oracle21c-xe.sh (pentru LXC/Docker)"
|
echo " 1. Instalare cu scriptul 00-install-oracle21c-xe.sh (pentru LXC/Docker)"
|
||||||
echo " 2. SAU instalare manuală Oracle XE 21c pe Linux"
|
echo " 2. SAU instalare manuală Oracle XE 21c pe Linux"
|
||||||
echo " 3. Apoi continuă cu scripturile de import"
|
echo " 3. Apoi continuă cu scripturile de import"
|
||||||
fi
|
fi
|
||||||
echo ""
|
echo ""
|
||||||
echo "Next: Continuă cu pasul 1 (setup) din master script"
|
echo "Next: Continuă cu pasul 1 (setup) din master script"
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# MANUAL EXPORT (User instructions)
|
# MANUAL EXPORT (User instructions)
|
||||||
################################################################################
|
################################################################################
|
||||||
elif [ "$EXPORT_MODE" = "MANUAL" ]; then
|
elif [ "$EXPORT_MODE" = "MANUAL" ]; then
|
||||||
echo "📋 Mod MANUAL - Export ghidat"
|
echo "📋 Mod MANUAL - Export ghidat"
|
||||||
echo ""
|
echo ""
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo "INSTRUCȚIUNI EXPORT MANUAL"
|
echo "INSTRUCȚIUNI EXPORT MANUAL"
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo ""
|
echo ""
|
||||||
echo "Trebuie să exporți manual următoarele scheme:"
|
echo "Trebuie să exporți manual următoarele scheme:"
|
||||||
echo ""
|
echo ""
|
||||||
echo "1. Schema CONTAFIN_ORACLE:"
|
echo "1. Schema CONTAFIN_ORACLE:"
|
||||||
echo " exp user/pass@db FILE=CONTAFIN_ORACLE_${TIMESTAMP}.dmp OWNER=CONTAFIN_ORACLE LOG=contafin_export.log CONSISTENT=Y"
|
echo " exp user/pass@db FILE=CONTAFIN_ORACLE_${TIMESTAMP}.dmp OWNER=CONTAFIN_ORACLE LOG=contafin_export.log CONSISTENT=Y"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
if [ -n "$SCHEMA2_NAME" ] && [ "$SCHEMA2_NAME" != "none" ]; then
|
if [ -n "$SCHEMA2_NAME" ] && [ "$SCHEMA2_NAME" != "none" ]; then
|
||||||
echo "2. Schema $SCHEMA2_NAME:"
|
echo "2. Schema $SCHEMA2_NAME:"
|
||||||
echo " exp user/pass@db FILE=${SCHEMA2_NAME}_${TIMESTAMP}.dmp OWNER=$SCHEMA2_NAME LOG=${SCHEMA2_NAME,,}_export.log CONSISTENT=Y"
|
echo " exp user/pass@db FILE=${SCHEMA2_NAME}_${TIMESTAMP}.dmp OWNER=$SCHEMA2_NAME LOG=${SCHEMA2_NAME,,}_export.log CONSISTENT=Y"
|
||||||
echo ""
|
echo ""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "3. SYS Objects (dacă e nevoie):"
|
echo "3. SYS Objects (dacă e nevoie):"
|
||||||
echo " exp system/pass@db FILE=SYS_OBJECTS_${TIMESTAMP}.dmp OWNER=SYS TABLES=(...) LOG=sys_export.log"
|
echo " exp system/pass@db FILE=SYS_OBJECTS_${TIMESTAMP}.dmp OWNER=SYS TABLES=(...) LOG=sys_export.log"
|
||||||
echo ""
|
echo ""
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo ""
|
echo ""
|
||||||
echo "După export, copiază fișierele DMP în:"
|
echo "După export, copiază fișierele DMP în:"
|
||||||
echo " 📁 $EXPORT_DIR"
|
echo " 📁 $EXPORT_DIR"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Apoi continuă cu următorul script."
|
echo "Apoi continuă cu următorul script."
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
read -p "✓ Apasă ENTER când ai terminat exportul și ai copiat fișierele..." WAIT_INPUT
|
read -p "✓ Apasă ENTER când ai terminat exportul și ai copiat fișierele..." WAIT_INPUT
|
||||||
|
|
||||||
# Verify exported files exist
|
# Verify exported files exist
|
||||||
echo ""
|
echo ""
|
||||||
echo "Verificare fișiere exportate..."
|
echo "Verificare fișiere exportate..."
|
||||||
|
|
||||||
if [ ! -f "$EXPORT_DIR"/CONTAFIN_ORACLE*.dmp ]; then
|
if [ ! -f "$EXPORT_DIR"/CONTAFIN_ORACLE*.dmp ]; then
|
||||||
echo "❌ ERROR: Nu găsesc fișierul CONTAFIN_ORACLE*.dmp în $EXPORT_DIR"
|
echo "❌ ERROR: Nu găsesc fișierul CONTAFIN_ORACLE*.dmp în $EXPORT_DIR"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Verifică că ai copiat fișierele corect!"
|
echo "Verifică că ai copiat fișierele corect!"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$SCHEMA2_NAME" ] && [ "$SCHEMA2_NAME" != "none" ]; then
|
if [ -n "$SCHEMA2_NAME" ] && [ "$SCHEMA2_NAME" != "none" ]; then
|
||||||
if [ ! -f "$EXPORT_DIR/${SCHEMA2_NAME}"*.dmp ]; then
|
if [ ! -f "$EXPORT_DIR/${SCHEMA2_NAME}"*.dmp ]; then
|
||||||
echo "⚠️ WARNING: Nu găsesc fișierul ${SCHEMA2_NAME}*.dmp"
|
echo "⚠️ WARNING: Nu găsesc fișierul ${SCHEMA2_NAME}*.dmp"
|
||||||
read -p "Continui fără schema secundară? (y/n): " CONTINUE
|
read -p "Continui fără schema secundară? (y/n): " CONTINUE
|
||||||
if [ "$CONTINUE" != "y" ]; then
|
if [ "$CONTINUE" != "y" ]; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "✓ Fișiere verificate cu succes"
|
echo "✓ Fișiere verificate cu succes"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Export directory: $EXPORT_DIR"
|
echo "Export directory: $EXPORT_DIR"
|
||||||
ls -lh "$EXPORT_DIR"/*.dmp 2>/dev/null || echo "No DMP files found"
|
ls -lh "$EXPORT_DIR"/*.dmp 2>/dev/null || echo "No DMP files found"
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# LOCAL MIGRATION (Same server, different ports)
|
# LOCAL MIGRATION (Same server, different ports)
|
||||||
################################################################################
|
################################################################################
|
||||||
elif [ "$EXPORT_MODE" = "LOCAL" ]; then
|
elif [ "$EXPORT_MODE" = "LOCAL" ]; then
|
||||||
echo "🏠 Mod LOCAL - Migrare pe același server"
|
echo "🏠 Mod LOCAL - Migrare pe același server"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# Validate local configuration
|
# Validate local configuration
|
||||||
if [ -z "$ORACLE_SOURCE_PORT" ] || [ -z "$ORACLE_DEST_PORT" ]; then
|
if [ -z "$ORACLE_SOURCE_PORT" ] || [ -z "$ORACLE_DEST_PORT" ]; then
|
||||||
echo "ERROR: Port configuration incomplete for local migration"
|
echo "ERROR: Port configuration incomplete for local migration"
|
||||||
echo " Source port: $ORACLE_SOURCE_PORT"
|
echo " Source port: $ORACLE_SOURCE_PORT"
|
||||||
echo " Dest port: $ORACLE_DEST_PORT"
|
echo " Dest port: $ORACLE_DEST_PORT"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$ORACLE_SOURCE_PORT" = "$ORACLE_DEST_PORT" ]; then
|
if [ "$ORACLE_SOURCE_PORT" = "$ORACLE_DEST_PORT" ]; then
|
||||||
echo "ERROR: Source and destination ports must be different!"
|
echo "ERROR: Source and destination ports must be different!"
|
||||||
echo " Both are set to: $ORACLE_SOURCE_PORT"
|
echo " Both are set to: $ORACLE_SOURCE_PORT"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Local Migration Configuration:"
|
echo "Local Migration Configuration:"
|
||||||
echo " Oracle Source: localhost:$ORACLE_SOURCE_PORT/$ORACLE_SOURCE_SID"
|
echo " Oracle Source: localhost:$ORACLE_SOURCE_PORT/$ORACLE_SOURCE_SID"
|
||||||
echo " Oracle Dest: localhost:$ORACLE_DEST_PORT/$ORACLE_DEST_SID"
|
echo " Oracle Dest: localhost:$ORACLE_DEST_PORT/$ORACLE_DEST_SID"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# Check if source Oracle is running
|
# Check if source Oracle is running
|
||||||
if ! nc -z localhost "$ORACLE_SOURCE_PORT" 2>/dev/null; then
|
if ! nc -z localhost "$ORACLE_SOURCE_PORT" 2>/dev/null; then
|
||||||
echo "ERROR: Oracle source not running on port $ORACLE_SOURCE_PORT"
|
echo "ERROR: Oracle source not running on port $ORACLE_SOURCE_PORT"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
echo "✓ Oracle source is running on port $ORACLE_SOURCE_PORT"
|
echo "✓ Oracle source is running on port $ORACLE_SOURCE_PORT"
|
||||||
|
|
||||||
# Check if destination Oracle is running
|
# Check if destination Oracle is running
|
||||||
if ! nc -z localhost "$ORACLE_DEST_PORT" 2>/dev/null; then
|
if ! nc -z localhost "$ORACLE_DEST_PORT" 2>/dev/null; then
|
||||||
echo "ERROR: Oracle destination not running on port $ORACLE_DEST_PORT"
|
echo "ERROR: Oracle destination not running on port $ORACLE_DEST_PORT"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
echo "✓ Oracle destination is running on port $ORACLE_DEST_PORT"
|
echo "✓ Oracle destination is running on port $ORACLE_DEST_PORT"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# Perform local export
|
# Perform local export
|
||||||
echo "Starting local export..."
|
echo "Starting local export..."
|
||||||
mkdir -p "$EXPORT_DIR"
|
mkdir -p "$EXPORT_DIR"
|
||||||
|
|
||||||
# Export CONTAFIN schema
|
# Export CONTAFIN schema
|
||||||
echo "Exporting CONTAFIN_ORACLE..."
|
echo "Exporting CONTAFIN_ORACLE..."
|
||||||
exp system/${ORACLE_SOURCE_PASS}@localhost:${ORACLE_SOURCE_PORT}/${ORACLE_SOURCE_SID} \
|
exp system/${ORACLE_SOURCE_PASS}@localhost:${ORACLE_SOURCE_PORT}/${ORACLE_SOURCE_SID} \
|
||||||
FILE="${EXPORT_DIR}/CONTAFIN_ORACLE_${TIMESTAMP}.dmp" \
|
FILE="${EXPORT_DIR}/CONTAFIN_ORACLE_${TIMESTAMP}.dmp" \
|
||||||
OWNER=CONTAFIN_ORACLE \
|
OWNER=CONTAFIN_ORACLE \
|
||||||
LOG="${EXPORT_DIR}/contafin_export.log" \
|
LOG="${EXPORT_DIR}/contafin_export.log" \
|
||||||
CONSISTENT=Y
|
CONSISTENT=Y
|
||||||
|
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
echo "ERROR: CONTAFIN export failed. Check log: ${EXPORT_DIR}/contafin_export.log"
|
echo "ERROR: CONTAFIN export failed. Check log: ${EXPORT_DIR}/contafin_export.log"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
echo "✓ CONTAFIN export completed"
|
echo "✓ CONTAFIN export completed"
|
||||||
|
|
||||||
# Export secondary schema if exists
|
# Export secondary schema if exists
|
||||||
if [ -n "$SCHEMA2_NAME" ] && [ "$SCHEMA2_NAME" != "none" ]; then
|
if [ -n "$SCHEMA2_NAME" ] && [ "$SCHEMA2_NAME" != "none" ]; then
|
||||||
echo "Exporting $SCHEMA2_NAME..."
|
echo "Exporting $SCHEMA2_NAME..."
|
||||||
exp system/${ORACLE_SOURCE_PASS}@localhost:${ORACLE_SOURCE_PORT}/${ORACLE_SOURCE_SID} \
|
exp system/${ORACLE_SOURCE_PASS}@localhost:${ORACLE_SOURCE_PORT}/${ORACLE_SOURCE_SID} \
|
||||||
FILE="${EXPORT_DIR}/${SCHEMA2_NAME}_${TIMESTAMP}.dmp" \
|
FILE="${EXPORT_DIR}/${SCHEMA2_NAME}_${TIMESTAMP}.dmp" \
|
||||||
OWNER="$SCHEMA2_NAME" \
|
OWNER="$SCHEMA2_NAME" \
|
||||||
LOG="${EXPORT_DIR}/${SCHEMA2_NAME,,}_export.log" \
|
LOG="${EXPORT_DIR}/${SCHEMA2_NAME,,}_export.log" \
|
||||||
CONSISTENT=Y
|
CONSISTENT=Y
|
||||||
|
|
||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
echo "✓ $SCHEMA2_NAME export completed"
|
echo "✓ $SCHEMA2_NAME export completed"
|
||||||
else
|
else
|
||||||
echo "⚠️ WARNING: $SCHEMA2_NAME export failed"
|
echo "⚠️ WARNING: $SCHEMA2_NAME export failed"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "✓ Local export completed"
|
echo "✓ Local export completed"
|
||||||
echo "Files saved to: $EXPORT_DIR"
|
echo "Files saved to: $EXPORT_DIR"
|
||||||
ls -lh "$EXPORT_DIR"/*.dmp
|
ls -lh "$EXPORT_DIR"/*.dmp
|
||||||
|
|
||||||
else
|
else
|
||||||
echo "ERROR: Invalid EXPORT_MODE: $EXPORT_MODE"
|
echo "ERROR: Invalid EXPORT_MODE: $EXPORT_MODE"
|
||||||
echo "Valid modes: AUTO, MANUAL, LOCAL"
|
echo "Valid modes: AUTO, MANUAL, LOCAL"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo "✓ EXPORT PHASE COMPLETED"
|
echo "✓ EXPORT PHASE COMPLETED"
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo ""
|
echo ""
|
||||||
echo "Exported files location: $EXPORT_DIR"
|
echo "Exported files location: $EXPORT_DIR"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Next step: 03-transfer-to-oracle21c.sh (if needed)"
|
echo "Next step: 03-transfer-to-oracle21c.sh (if needed)"
|
||||||
echo ""
|
echo ""
|
||||||
|
|||||||
@@ -1,74 +1,74 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
#==============================================================================
|
#==============================================================================
|
||||||
# Script: 03-transfer-to-oracle21c.sh
|
# Script: 03-transfer-to-oracle21c.sh
|
||||||
# Descriere: Transfer fișiere DMP de pe WSL către Oracle 21c (Docker)
|
# Descriere: Transfer fișiere DMP de pe WSL către Oracle 21c (Docker)
|
||||||
# Data: 30 Septembrie 2025
|
# Data: 30 Septembrie 2025
|
||||||
# Rulare: bash 03-transfer-to-oracle21c.sh
|
# Rulare: bash 03-transfer-to-oracle21c.sh
|
||||||
#==============================================================================
|
#==============================================================================
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo "TRANSFER FISIERE CATRE ORACLE 21c"
|
echo "TRANSFER FISIERE CATRE ORACLE 21c"
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# Configurare
|
# Configurare
|
||||||
PROXMOX_HOST="root@10.0.20.201"
|
PROXMOX_HOST="root@10.0.20.201"
|
||||||
SOURCE_DIR="/mnt/e/ORACLE_EXPORT/dumps"
|
SOURCE_DIR="/mnt/e/ORACLE_EXPORT/dumps"
|
||||||
DEST_DIR="/tmp/oracle-import"
|
DEST_DIR="/tmp/oracle-import"
|
||||||
|
|
||||||
echo "[1/4] Verificare fișiere locale..."
|
echo "[1/4] Verificare fișiere locale..."
|
||||||
if [ ! -d "$SOURCE_DIR" ]; then
|
if [ ! -d "$SOURCE_DIR" ]; then
|
||||||
echo "ERROR: Director $SOURCE_DIR nu există!"
|
echo "ERROR: Director $SOURCE_DIR nu există!"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
DMP_FILES=$(ls $SOURCE_DIR/*.dmp 2>/dev/null | wc -l)
|
DMP_FILES=$(ls $SOURCE_DIR/*.dmp 2>/dev/null | wc -l)
|
||||||
if [ $DMP_FILES -eq 0 ]; then
|
if [ $DMP_FILES -eq 0 ]; then
|
||||||
echo "ERROR: Nu există fișiere *.dmp în $SOURCE_DIR"
|
echo "ERROR: Nu există fișiere *.dmp în $SOURCE_DIR"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Găsite $DMP_FILES fișiere DMP:"
|
echo "Găsite $DMP_FILES fișiere DMP:"
|
||||||
ls -lh $SOURCE_DIR/*.dmp
|
ls -lh $SOURCE_DIR/*.dmp
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
echo "[2/4] Creare director pe Proxmox..."
|
echo "[2/4] Creare director pe Proxmox..."
|
||||||
ssh $PROXMOX_HOST "mkdir -p $DEST_DIR"
|
ssh $PROXMOX_HOST "mkdir -p $DEST_DIR"
|
||||||
echo "✓ Director $DEST_DIR creat pe Proxmox"
|
echo "✓ Director $DEST_DIR creat pe Proxmox"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
echo "[3/4] Transfer fișiere către Proxmox..."
|
echo "[3/4] Transfer fișiere către Proxmox..."
|
||||||
echo "Durată estimată: 5-15 minute (depinde de dimensiune și rețea)"
|
echo "Durată estimată: 5-15 minute (depinde de dimensiune și rețea)"
|
||||||
scp $SOURCE_DIR/*.dmp $PROXMOX_HOST:$DEST_DIR/
|
scp $SOURCE_DIR/*.dmp $PROXMOX_HOST:$DEST_DIR/
|
||||||
scp $SOURCE_DIR/SYS_OBJECTS.sql $PROXMOX_HOST:$DEST_DIR/ 2>/dev/null || echo "WARN: SYS_OBJECTS.sql nu există"
|
scp $SOURCE_DIR/SYS_OBJECTS.sql $PROXMOX_HOST:$DEST_DIR/ 2>/dev/null || echo "WARN: SYS_OBJECTS.sql nu există"
|
||||||
echo "✓ Fișiere transferate"
|
echo "✓ Fișiere transferate"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
echo "[4/4] Copiere în container Docker..."
|
echo "[4/4] Copiere în container Docker..."
|
||||||
ssh $PROXMOX_HOST <<'ENDSSH'
|
ssh $PROXMOX_HOST <<'ENDSSH'
|
||||||
pct exec 108 -- bash -c '
|
pct exec 108 -- bash -c '
|
||||||
docker cp /tmp/oracle-import/CONTAFIN_ORACLE_*.dmp oracle-xe:/tmp/ 2>/dev/null || \
|
docker cp /tmp/oracle-import/CONTAFIN_ORACLE_*.dmp oracle-xe:/tmp/ 2>/dev/null || \
|
||||||
docker cp /tmp/oracle-import/CONTAFIN_ORACLE*.dmp oracle-xe:/tmp/
|
docker cp /tmp/oracle-import/CONTAFIN_ORACLE*.dmp oracle-xe:/tmp/
|
||||||
|
|
||||||
docker cp /tmp/oracle-import/MARIUSM_AUTO_*.dmp oracle-xe:/tmp/ 2>/dev/null || \
|
docker cp /tmp/oracle-import/MARIUSM_AUTO_*.dmp oracle-xe:/tmp/ 2>/dev/null || \
|
||||||
docker cp /tmp/oracle-import/MARIUSM_AUTO*.dmp oracle-xe:/tmp/
|
docker cp /tmp/oracle-import/MARIUSM_AUTO*.dmp oracle-xe:/tmp/
|
||||||
|
|
||||||
docker cp /tmp/oracle-import/SYS_OBJECTS.sql oracle-xe:/tmp/ 2>/dev/null || true
|
docker cp /tmp/oracle-import/SYS_OBJECTS.sql oracle-xe:/tmp/ 2>/dev/null || true
|
||||||
|
|
||||||
echo "Fișiere în container:"
|
echo "Fișiere în container:"
|
||||||
docker exec oracle-xe ls -lh /tmp/*.dmp /tmp/SYS_OBJECTS.sql 2>/dev/null || docker exec oracle-xe ls -lh /tmp/*.dmp
|
docker exec oracle-xe ls -lh /tmp/*.dmp /tmp/SYS_OBJECTS.sql 2>/dev/null || docker exec oracle-xe ls -lh /tmp/*.dmp
|
||||||
'
|
'
|
||||||
ENDSSH
|
ENDSSH
|
||||||
echo "✓ Fișiere copiate în container oracle-xe"
|
echo "✓ Fișiere copiate în container oracle-xe"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo "✅ TRANSFER COMPLET!"
|
echo "✅ TRANSFER COMPLET!"
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo ""
|
echo ""
|
||||||
echo "Fișierele sunt acum în container oracle-xe:/tmp/"
|
echo "Fișierele sunt acum în container oracle-xe:/tmp/"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Următorul pas: 04-import-to-oracle21c.sh"
|
echo "Următorul pas: 04-import-to-oracle21c.sh"
|
||||||
echo ""
|
echo ""
|
||||||
|
|||||||
@@ -1,173 +1,173 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
#==============================================================================
|
#==============================================================================
|
||||||
# Script: 04-import-to-oracle21c.sh
|
# Script: 04-import-to-oracle21c.sh
|
||||||
# Descriere: Import SYS objects + CONTAFIN_ORACLE + schema secundara în Oracle 21c
|
# Descriere: Import SYS objects + CONTAFIN_ORACLE + schema secundara în Oracle 21c
|
||||||
# Data: 30 Septembrie 2025
|
# Data: 30 Septembrie 2025
|
||||||
# Rulare: bash 04-import-to-oracle21c.sh
|
# Rulare: bash 04-import-to-oracle21c.sh
|
||||||
#==============================================================================
|
#==============================================================================
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo "IMPORT IN ORACLE 21c XE - PDB ROA"
|
echo "IMPORT IN ORACLE 21c XE - PDB ROA"
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
ORACLE_PWD="OraclePass123"
|
ORACLE_PWD="OraclePass123"
|
||||||
PDB_CONNECT="sys/${ORACLE_PWD}@localhost:1521/roa as sysdba"
|
PDB_CONNECT="sys/${ORACLE_PWD}@localhost:1521/roa as sysdba"
|
||||||
|
|
||||||
# Detectare schema secundara (din variabila exportata de 01-setup sau master)
|
# Detectare schema secundara (din variabila exportata de 01-setup sau master)
|
||||||
if [ -z "$SCHEMA2_NAME" ]; then
|
if [ -z "$SCHEMA2_NAME" ]; then
|
||||||
SCHEMA2_NAME="MARIUSM_AUTO"
|
SCHEMA2_NAME="MARIUSM_AUTO"
|
||||||
echo "Schema secundara (default): MARIUSM_AUTO"
|
echo "Schema secundara (default): MARIUSM_AUTO"
|
||||||
else
|
else
|
||||||
echo "Schema secundara (custom): $SCHEMA2_NAME"
|
echo "Schema secundara (custom): $SCHEMA2_NAME"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "[1/5] Import SYS objects custom..."
|
echo "[1/5] Import SYS objects custom..."
|
||||||
ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe sqlplus -s ${PDB_CONNECT}" <<'EOF'
|
ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe sqlplus -s ${PDB_CONNECT}" <<'EOF'
|
||||||
SET SERVEROUTPUT ON
|
SET SERVEROUTPUT ON
|
||||||
WHENEVER SQLERROR CONTINUE
|
WHENEVER SQLERROR CONTINUE
|
||||||
|
|
||||||
-- Verificare conexiune PDB ROA
|
-- Verificare conexiune PDB ROA
|
||||||
SELECT 'Connected to: ' || name || ' (CDB=' || cdb || ')' FROM v$database;
|
SELECT 'Connected to: ' || name || ' (CDB=' || cdb || ')' FROM v$database;
|
||||||
|
|
||||||
-- Import SYS objects
|
-- Import SYS objects
|
||||||
@/tmp/SYS_OBJECTS.sql
|
@/tmp/SYS_OBJECTS.sql
|
||||||
|
|
||||||
-- Verificare obiecte create
|
-- Verificare obiecte create
|
||||||
SELECT object_name, object_type, status
|
SELECT object_name, object_type, status
|
||||||
FROM dba_objects
|
FROM dba_objects
|
||||||
WHERE owner='SYS'
|
WHERE owner='SYS'
|
||||||
AND object_name IN ('AUTH_PACK','NEWSCHEMA','NEWSCHEMAJOB','NEWSCHEMAPROGRESS','VAUTH_SERII','AUTH_SERII','AUTH_DETALII')
|
AND object_name IN ('AUTH_PACK','NEWSCHEMA','NEWSCHEMAJOB','NEWSCHEMAPROGRESS','VAUTH_SERII','AUTH_SERII','AUTH_DETALII')
|
||||||
ORDER BY object_type, object_name;
|
ORDER BY object_type, object_name;
|
||||||
|
|
||||||
EXIT;
|
EXIT;
|
||||||
EOF
|
EOF
|
||||||
echo "✓ SYS objects importat"
|
echo "✓ SYS objects importat"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
echo "[2/5] Grant-uri SYS → CONTAFIN_ORACLE..."
|
echo "[2/5] Grant-uri SYS → CONTAFIN_ORACLE..."
|
||||||
ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe sqlplus -s ${PDB_CONNECT}" <<'EOF'
|
ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe sqlplus -s ${PDB_CONNECT}" <<'EOF'
|
||||||
WHENEVER SQLERROR CONTINUE
|
WHENEVER SQLERROR CONTINUE
|
||||||
|
|
||||||
GRANT SELECT ON SYS.AUTH_SERII TO CONTAFIN_ORACLE;
|
GRANT SELECT ON SYS.AUTH_SERII TO CONTAFIN_ORACLE;
|
||||||
GRANT SELECT ON SYS.AUTH_DETALII TO CONTAFIN_ORACLE;
|
GRANT SELECT ON SYS.AUTH_DETALII TO CONTAFIN_ORACLE;
|
||||||
GRANT SELECT ON SYS.VAUTH_SERII TO CONTAFIN_ORACLE;
|
GRANT SELECT ON SYS.VAUTH_SERII TO CONTAFIN_ORACLE;
|
||||||
GRANT EXECUTE ON SYS.AUTH_PACK TO CONTAFIN_ORACLE;
|
GRANT EXECUTE ON SYS.AUTH_PACK TO CONTAFIN_ORACLE;
|
||||||
GRANT EXECUTE ON SYS.NEWSCHEMA TO CONTAFIN_ORACLE;
|
GRANT EXECUTE ON SYS.NEWSCHEMA TO CONTAFIN_ORACLE;
|
||||||
GRANT EXECUTE ON SYS.NEWSCHEMAJOB TO CONTAFIN_ORACLE;
|
GRANT EXECUTE ON SYS.NEWSCHEMAJOB TO CONTAFIN_ORACLE;
|
||||||
GRANT EXECUTE ON SYS.NEWSCHEMAPROGRESS TO CONTAFIN_ORACLE;
|
GRANT EXECUTE ON SYS.NEWSCHEMAPROGRESS TO CONTAFIN_ORACLE;
|
||||||
GRANT EXECUTE ON SYS.UPDATESQLPLUS TO CONTAFIN_ORACLE;
|
GRANT EXECUTE ON SYS.UPDATESQLPLUS TO CONTAFIN_ORACLE;
|
||||||
GRANT EXECUTE ON SYS.EXECUTESCRIPTOS TO CONTAFIN_ORACLE;
|
GRANT EXECUTE ON SYS.EXECUTESCRIPTOS TO CONTAFIN_ORACLE;
|
||||||
|
|
||||||
EXIT;
|
EXIT;
|
||||||
EOF
|
EOF
|
||||||
echo "✓ Grant-uri SYS acordate"
|
echo "✓ Grant-uri SYS acordate"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
echo "[3/5] Import CONTAFIN_ORACLE..."
|
echo "[3/5] Import CONTAFIN_ORACLE..."
|
||||||
echo "Durată estimată: 10-15 minute"
|
echo "Durată estimată: 10-15 minute"
|
||||||
ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe bash -c '
|
ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe bash -c '
|
||||||
CONTAFIN_DMP=\$(ls /tmp/CONTAFIN_ORACLE*.dmp | head -1)
|
CONTAFIN_DMP=\$(ls /tmp/CONTAFIN_ORACLE*.dmp | head -1)
|
||||||
imp system/${ORACLE_PWD}@localhost:1521/roa \
|
imp system/${ORACLE_PWD}@localhost:1521/roa \
|
||||||
FILE=\$CONTAFIN_DMP \
|
FILE=\$CONTAFIN_DMP \
|
||||||
LOG=/tmp/contafin_import.log \
|
LOG=/tmp/contafin_import.log \
|
||||||
FROMUSER=CONTAFIN_ORACLE \
|
FROMUSER=CONTAFIN_ORACLE \
|
||||||
TOUSER=CONTAFIN_ORACLE \
|
TOUSER=CONTAFIN_ORACLE \
|
||||||
IGNORE=Y \
|
IGNORE=Y \
|
||||||
COMMIT=Y \
|
COMMIT=Y \
|
||||||
BUFFER=10485760 \
|
BUFFER=10485760 \
|
||||||
FEEDBACK=10000
|
FEEDBACK=10000
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "Verificare obiecte importate:"
|
echo "Verificare obiecte importate:"
|
||||||
sqlplus -s system/${ORACLE_PWD}@localhost:1521/roa <<EOSQL
|
sqlplus -s system/${ORACLE_PWD}@localhost:1521/roa <<EOSQL
|
||||||
SET PAGESIZE 50
|
SET PAGESIZE 50
|
||||||
SELECT object_type, COUNT(*) as total
|
SELECT object_type, COUNT(*) as total
|
||||||
FROM dba_objects
|
FROM dba_objects
|
||||||
WHERE owner='"'CONTAFIN_ORACLE'"'
|
WHERE owner='"'CONTAFIN_ORACLE'"'
|
||||||
GROUP BY object_type
|
GROUP BY object_type
|
||||||
ORDER BY object_type;
|
ORDER BY object_type;
|
||||||
EXIT;
|
EXIT;
|
||||||
EOSQL
|
EOSQL
|
||||||
'"
|
'"
|
||||||
echo "✓ CONTAFIN_ORACLE importat"
|
echo "✓ CONTAFIN_ORACLE importat"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
echo "[4/5] Import ${SCHEMA2_NAME}..."
|
echo "[4/5] Import ${SCHEMA2_NAME}..."
|
||||||
if [ "$SCHEMA2_NAME" = "MARIUSM_AUTO" ]; then
|
if [ "$SCHEMA2_NAME" = "MARIUSM_AUTO" ]; then
|
||||||
echo "Durată estimată: 45-90 minute (707 tabele!)"
|
echo "Durată estimată: 45-90 minute (707 tabele!)"
|
||||||
else
|
else
|
||||||
echo "Durată estimată: variabilă (depinde de dimensiune DMP)"
|
echo "Durată estimată: variabilă (depinde de dimensiune DMP)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Determinare fisier DMP (MARIUSM_AUTO*.dmp sau schema custom)
|
# Determinare fisier DMP (MARIUSM_AUTO*.dmp sau schema custom)
|
||||||
if [ "$SCHEMA2_NAME" = "MARIUSM_AUTO" ]; then
|
if [ "$SCHEMA2_NAME" = "MARIUSM_AUTO" ]; then
|
||||||
DMP_PATTERN="MARIUSM_AUTO*.dmp"
|
DMP_PATTERN="MARIUSM_AUTO*.dmp"
|
||||||
FROMUSER="MARIUSM_AUTO"
|
FROMUSER="MARIUSM_AUTO"
|
||||||
else
|
else
|
||||||
# Pentru schema custom, cautam fisierul specificat in SCHEMA2_TEMPLATE
|
# Pentru schema custom, cautam fisierul specificat in SCHEMA2_TEMPLATE
|
||||||
DMP_PATTERN="${SCHEMA2_TEMPLATE:-*${SCHEMA2_NAME}*.dmp}"
|
DMP_PATTERN="${SCHEMA2_TEMPLATE:-*${SCHEMA2_NAME}*.dmp}"
|
||||||
FROMUSER="${SCHEMA2_NAME}"
|
FROMUSER="${SCHEMA2_NAME}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe bash -c '
|
ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe bash -c '
|
||||||
SCHEMA2_DMP=\$(ls /tmp/${DMP_PATTERN} | head -1)
|
SCHEMA2_DMP=\$(ls /tmp/${DMP_PATTERN} | head -1)
|
||||||
if [ -z \"\$SCHEMA2_DMP\" ]; then
|
if [ -z \"\$SCHEMA2_DMP\" ]; then
|
||||||
echo \"ERROR: Nu gasesc fisier DMP pentru ${SCHEMA2_NAME}!\"
|
echo \"ERROR: Nu gasesc fisier DMP pentru ${SCHEMA2_NAME}!\"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo \"Import DMP: \$SCHEMA2_DMP\"
|
echo \"Import DMP: \$SCHEMA2_DMP\"
|
||||||
imp system/${ORACLE_PWD}@localhost:1521/roa \
|
imp system/${ORACLE_PWD}@localhost:1521/roa \
|
||||||
FILE=\$SCHEMA2_DMP \
|
FILE=\$SCHEMA2_DMP \
|
||||||
LOG=/tmp/${SCHEMA2_NAME}_import.log \
|
LOG=/tmp/${SCHEMA2_NAME}_import.log \
|
||||||
FROMUSER=${FROMUSER} \
|
FROMUSER=${FROMUSER} \
|
||||||
TOUSER=${SCHEMA2_NAME} \
|
TOUSER=${SCHEMA2_NAME} \
|
||||||
IGNORE=Y \
|
IGNORE=Y \
|
||||||
COMMIT=Y \
|
COMMIT=Y \
|
||||||
BUFFER=10485760 \
|
BUFFER=10485760 \
|
||||||
FEEDBACK=10000
|
FEEDBACK=10000
|
||||||
|
|
||||||
echo \"\"
|
echo \"\"
|
||||||
echo \"Verificare obiecte importate:\"
|
echo \"Verificare obiecte importate:\"
|
||||||
sqlplus -s system/${ORACLE_PWD}@localhost:1521/roa <<EOSQL
|
sqlplus -s system/${ORACLE_PWD}@localhost:1521/roa <<EOSQL
|
||||||
SET PAGESIZE 50
|
SET PAGESIZE 50
|
||||||
SELECT object_type, COUNT(*) as total
|
SELECT object_type, COUNT(*) as total
|
||||||
FROM dba_objects
|
FROM dba_objects
|
||||||
WHERE owner='"'${SCHEMA2_NAME}'"'
|
WHERE owner='"'${SCHEMA2_NAME}'"'
|
||||||
GROUP BY object_type
|
GROUP BY object_type
|
||||||
ORDER BY object_type;
|
ORDER BY object_type;
|
||||||
EXIT;
|
EXIT;
|
||||||
EOSQL
|
EOSQL
|
||||||
'"
|
'"
|
||||||
echo "✓ ${SCHEMA2_NAME} importat"
|
echo "✓ ${SCHEMA2_NAME} importat"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
echo "[5/5] Verificare finală import..."
|
echo "[5/5] Verificare finală import..."
|
||||||
ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe sqlplus -s ${PDB_CONNECT}" <<EOF
|
ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe sqlplus -s ${PDB_CONNECT}" <<EOF
|
||||||
SET PAGESIZE 50
|
SET PAGESIZE 50
|
||||||
|
|
||||||
SELECT owner, COUNT(*) as total_objects,
|
SELECT owner, COUNT(*) as total_objects,
|
||||||
SUM(CASE WHEN status='VALID' THEN 1 ELSE 0 END) as valid,
|
SUM(CASE WHEN status='VALID' THEN 1 ELSE 0 END) as valid,
|
||||||
SUM(CASE WHEN status='INVALID' THEN 1 ELSE 0 END) as invalid
|
SUM(CASE WHEN status='INVALID' THEN 1 ELSE 0 END) as invalid
|
||||||
FROM dba_objects
|
FROM dba_objects
|
||||||
WHERE owner IN ('CONTAFIN_ORACLE','${SCHEMA2_NAME}')
|
WHERE owner IN ('CONTAFIN_ORACLE','${SCHEMA2_NAME}')
|
||||||
GROUP BY owner
|
GROUP BY owner
|
||||||
ORDER BY owner;
|
ORDER BY owner;
|
||||||
|
|
||||||
EXIT;
|
EXIT;
|
||||||
EOF
|
EOF
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo "✅ IMPORT COMPLET!"
|
echo "✅ IMPORT COMPLET!"
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo ""
|
echo ""
|
||||||
echo "Log-uri import:"
|
echo "Log-uri import:"
|
||||||
echo " - /tmp/contafin_import.log"
|
echo " - /tmp/contafin_import.log"
|
||||||
echo " - /tmp/${SCHEMA2_NAME}_import.log"
|
echo " - /tmp/${SCHEMA2_NAME}_import.log"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Următorul pas: 05-create-synonyms-grants.sh"
|
echo "Următorul pas: 05-create-synonyms-grants.sh"
|
||||||
echo ""
|
echo ""
|
||||||
|
|||||||
@@ -1,132 +1,132 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
#==============================================================================
|
#==============================================================================
|
||||||
# Script: 05-create-synonyms-grants.sh
|
# Script: 05-create-synonyms-grants.sh
|
||||||
# Descriere: Creare sinonime publice (53) + grant-uri către PUBLIC (147)
|
# Descriere: Creare sinonime publice (53) + grant-uri către PUBLIC (147)
|
||||||
# Data: 30 Septembrie 2025
|
# Data: 30 Septembrie 2025
|
||||||
# Rulare: bash 05-create-synonyms-grants.sh
|
# Rulare: bash 05-create-synonyms-grants.sh
|
||||||
#==============================================================================
|
#==============================================================================
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo "CREARE SINONIME PUBLICE + GRANT-URI"
|
echo "CREARE SINONIME PUBLICE + GRANT-URI"
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
ORACLE_PWD="OraclePass123"
|
ORACLE_PWD="OraclePass123"
|
||||||
PDB_CONNECT="sys/${ORACLE_PWD}@localhost:1521/roa as sysdba"
|
PDB_CONNECT="sys/${ORACLE_PWD}@localhost:1521/roa as sysdba"
|
||||||
|
|
||||||
echo "[1/3] Generare script sinonime publice..."
|
echo "[1/3] Generare script sinonime publice..."
|
||||||
ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe bash -c 'cat > /tmp/create_synonyms.sql <<\"EOFSCRIPT\"
|
ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe bash -c 'cat > /tmp/create_synonyms.sql <<\"EOFSCRIPT\"
|
||||||
-- Creare 53 sinonime publice (50 CONTAFIN + 3 SYS)
|
-- Creare 53 sinonime publice (50 CONTAFIN + 3 SYS)
|
||||||
|
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_ATAS_ATASAMENTE FOR CONTAFIN_ORACLE.ATAS_ATASAMENTE;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_ATAS_ATASAMENTE FOR CONTAFIN_ORACLE.ATAS_ATASAMENTE;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_ATAS_REFERINTE FOR CONTAFIN_ORACLE.ATAS_REFERINTE;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_ATAS_REFERINTE FOR CONTAFIN_ORACLE.ATAS_REFERINTE;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_CURS_ACTUALIZARI FOR CONTAFIN_ORACLE.CURS_ACTUALIZARI;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_CURS_ACTUALIZARI FOR CONTAFIN_ORACLE.CURS_ACTUALIZARI;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_CURS_COTATII FOR CONTAFIN_ORACLE.CURS_COTATII;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_CURS_COTATII FOR CONTAFIN_ORACLE.CURS_COTATII;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_DEF_GRUP FOR CONTAFIN_ORACLE.DEF_GRUP;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_DEF_GRUP FOR CONTAFIN_ORACLE.DEF_GRUP;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_DEF_GRUP_DREPT FOR CONTAFIN_ORACLE.DEF_GRUP_DREPT;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_DEF_GRUP_DREPT FOR CONTAFIN_ORACLE.DEF_GRUP_DREPT;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_DEF_PROGRAME FOR CONTAFIN_ORACLE.DEF_PROGRAME;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_DEF_PROGRAME FOR CONTAFIN_ORACLE.DEF_PROGRAME;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_HELPCONT FOR CONTAFIN_ORACLE.HELPCONT;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_HELPCONT FOR CONTAFIN_ORACLE.HELPCONT;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_LUNILEAN FOR CONTAFIN_ORACLE.LUNILEAN;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_LUNILEAN FOR CONTAFIN_ORACLE.LUNILEAN;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_CETATENII FOR CONTAFIN_ORACLE.NOM_CETATENII;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_CETATENII FOR CONTAFIN_ORACLE.NOM_CETATENII;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_CODURI_CAEN FOR CONTAFIN_ORACLE.NOM_CODURI_CAEN;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_CODURI_CAEN FOR CONTAFIN_ORACLE.NOM_CODURI_CAEN;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_FIRME FOR CONTAFIN_ORACLE.NOM_FIRME;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_FIRME FOR CONTAFIN_ORACLE.NOM_FIRME;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_FORME_JURIDICE FOR CONTAFIN_ORACLE.NOM_FORME_JURIDICE;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_FORME_JURIDICE FOR CONTAFIN_ORACLE.NOM_FORME_JURIDICE;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_FORME_ORGANIZARE FOR CONTAFIN_ORACLE.NOM_FORME_ORGANIZARE;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_FORME_ORGANIZARE FOR CONTAFIN_ORACLE.NOM_FORME_ORGANIZARE;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_FORME_PROPRIETATE FOR CONTAFIN_ORACLE.NOM_FORME_PROPRIETATE;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_FORME_PROPRIETATE FOR CONTAFIN_ORACLE.NOM_FORME_PROPRIETATE;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_JUDETE FOR CONTAFIN_ORACLE.NOM_JUDETE;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_JUDETE FOR CONTAFIN_ORACLE.NOM_JUDETE;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_LOCALITATI FOR CONTAFIN_ORACLE.NOM_LOCALITATI;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_LOCALITATI FOR CONTAFIN_ORACLE.NOM_LOCALITATI;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_PROGRAME FOR CONTAFIN_ORACLE.NOM_PROGRAME;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_PROGRAME FOR CONTAFIN_ORACLE.NOM_PROGRAME;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_TARI FOR CONTAFIN_ORACLE.NOM_TARI;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_TARI FOR CONTAFIN_ORACLE.NOM_TARI;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_TIPAPATRID FOR CONTAFIN_ORACLE.NOM_TIPAPATRID;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_TIPAPATRID FOR CONTAFIN_ORACLE.NOM_TIPAPATRID;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_TIP_ARTERA FOR CONTAFIN_ORACLE.NOM_TIP_ARTERA;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_TIP_ARTERA FOR CONTAFIN_ORACLE.NOM_TIP_ARTERA;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_TIP_SOCIETATE FOR CONTAFIN_ORACLE.NOM_TIP_SOCIETATE;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_TIP_SOCIETATE FOR CONTAFIN_ORACLE.NOM_TIP_SOCIETATE;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_VALUTE_ISO FOR CONTAFIN_ORACLE.NOM_VALUTE_ISO;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_VALUTE_ISO FOR CONTAFIN_ORACLE.NOM_VALUTE_ISO;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_OPTIUNI_PROGRAME FOR CONTAFIN_ORACLE.OPTIUNI_PROGRAME;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_OPTIUNI_PROGRAME FOR CONTAFIN_ORACLE.OPTIUNI_PROGRAME;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_PACK_DEF_CO FOR CONTAFIN_ORACLE.PACK_DEF_CO;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_PACK_DEF_CO FOR CONTAFIN_ORACLE.PACK_DEF_CO;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_PACK_DREPTURI FOR CONTAFIN_ORACLE.PACK_DREPTURI;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_PACK_DREPTURI FOR CONTAFIN_ORACLE.PACK_DREPTURI;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_SAL_ACTUALIZARE_COR FOR CONTAFIN_ORACLE.SAL_ACTUALIZARE_COR;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_SAL_ACTUALIZARE_COR FOR CONTAFIN_ORACLE.SAL_ACTUALIZARE_COR;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_SAL_COR FOR CONTAFIN_ORACLE.SAL_COR;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_SAL_COR FOR CONTAFIN_ORACLE.SAL_COR;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_SAL_NOM_DURATA_MUNCA FOR CONTAFIN_ORACLE.SAL_NOM_DURATA_MUNCA;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_SAL_NOM_DURATA_MUNCA FOR CONTAFIN_ORACLE.SAL_NOM_DURATA_MUNCA;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_SAL_NOM_INTERVALE_MUNCA FOR CONTAFIN_ORACLE.SAL_NOM_INTERVALE_MUNCA;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_SAL_NOM_INTERVALE_MUNCA FOR CONTAFIN_ORACLE.SAL_NOM_INTERVALE_MUNCA;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_SAL_NOM_REPARTIZARE_MUNCA FOR CONTAFIN_ORACLE.SAL_NOM_REPARTIZARE_MUNCA;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_SAL_NOM_REPARTIZARE_MUNCA FOR CONTAFIN_ORACLE.SAL_NOM_REPARTIZARE_MUNCA;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_SAL_NOM_STARI_CTR FOR CONTAFIN_ORACLE.SAL_NOM_STARI_CTR;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_SAL_NOM_STARI_CTR FOR CONTAFIN_ORACLE.SAL_NOM_STARI_CTR;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_SAL_NOM_TEMEI FOR CONTAFIN_ORACLE.SAL_NOM_TEMEI;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_SAL_NOM_TEMEI FOR CONTAFIN_ORACLE.SAL_NOM_TEMEI;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_SAL_NOM_TIPAUTORIZATIE FOR CONTAFIN_ORACLE.SAL_NOM_TIPAUTORIZATIE;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_SAL_NOM_TIPAUTORIZATIE FOR CONTAFIN_ORACLE.SAL_NOM_TIPAUTORIZATIE;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_SAL_NOM_TIP_NORME FOR CONTAFIN_ORACLE.SAL_NOM_TIP_NORME;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_SAL_NOM_TIP_NORME FOR CONTAFIN_ORACLE.SAL_NOM_TIP_NORME;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_SAL_NOM_TIP_SPOR FOR CONTAFIN_ORACLE.SAL_NOM_TIP_SPOR;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_SAL_NOM_TIP_SPOR FOR CONTAFIN_ORACLE.SAL_NOM_TIP_SPOR;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_UTILIZATORI FOR CONTAFIN_ORACLE.UTILIZATORI;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_UTILIZATORI FOR CONTAFIN_ORACLE.UTILIZATORI;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_VDEF_PROGRAME FOR CONTAFIN_ORACLE.VDEF_PROGRAME;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_VDEF_PROGRAME FOR CONTAFIN_ORACLE.VDEF_PROGRAME;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_VDEF_UTIL_FIRME FOR CONTAFIN_ORACLE.VDEF_UTIL_FIRME;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_VDEF_UTIL_FIRME FOR CONTAFIN_ORACLE.VDEF_UTIL_FIRME;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_VDEF_UTIL_GRUP FOR CONTAFIN_ORACLE.VDEF_UTIL_GRUP;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_VDEF_UTIL_GRUP FOR CONTAFIN_ORACLE.VDEF_UTIL_GRUP;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_VDEF_UTIL_OBIECTE FOR CONTAFIN_ORACLE.VDEF_UTIL_OBIECTE;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_VDEF_UTIL_OBIECTE FOR CONTAFIN_ORACLE.VDEF_UTIL_OBIECTE;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_VDEF_UTIL_PROGRAME FOR CONTAFIN_ORACLE.VDEF_UTIL_PROGRAME;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_VDEF_UTIL_PROGRAME FOR CONTAFIN_ORACLE.VDEF_UTIL_PROGRAME;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_V_NOM_FIRME FOR CONTAFIN_ORACLE.V_NOM_FIRME;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_V_NOM_FIRME FOR CONTAFIN_ORACLE.V_NOM_FIRME;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_VNOM_JUDETE FOR CONTAFIN_ORACLE.VNOM_JUDETE;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_VNOM_JUDETE FOR CONTAFIN_ORACLE.VNOM_JUDETE;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_VNOM_LOCALITATI FOR CONTAFIN_ORACLE.VNOM_LOCALITATI;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_VNOM_LOCALITATI FOR CONTAFIN_ORACLE.VNOM_LOCALITATI;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_VNOM_TARI FOR CONTAFIN_ORACLE.VNOM_TARI;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_VNOM_TARI FOR CONTAFIN_ORACLE.VNOM_TARI;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_VNOM_TIP_ARTERA FOR CONTAFIN_ORACLE.VNOM_TIP_ARTERA;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_VNOM_TIP_ARTERA FOR CONTAFIN_ORACLE.VNOM_TIP_ARTERA;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_VNOM_UM_ISO FOR CONTAFIN_ORACLE.VNOM_UM_ISO;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_VNOM_UM_ISO FOR CONTAFIN_ORACLE.VNOM_UM_ISO;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_VNOM_VALUTE_ISO FOR CONTAFIN_ORACLE.VNOM_VALUTE_ISO;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_VNOM_VALUTE_ISO FOR CONTAFIN_ORACLE.VNOM_VALUTE_ISO;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_VUTILIZATORI FOR CONTAFIN_ORACLE.VUTILIZATORI;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_VUTILIZATORI FOR CONTAFIN_ORACLE.VUTILIZATORI;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_NEWSCHEMA FOR SYS.NEWSCHEMA;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_NEWSCHEMA FOR SYS.NEWSCHEMA;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_NEWSCHEMAJOB FOR SYS.NEWSCHEMAJOB;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_NEWSCHEMAJOB FOR SYS.NEWSCHEMAJOB;
|
||||||
CREATE OR REPLACE PUBLIC SYNONYM SYN_NEWSCHEMAPROGRESS FOR SYS.NEWSCHEMAPROGRESS;
|
CREATE OR REPLACE PUBLIC SYNONYM SYN_NEWSCHEMAPROGRESS FOR SYS.NEWSCHEMAPROGRESS;
|
||||||
|
|
||||||
PROMPT Sinonime publice create!
|
PROMPT Sinonime publice create!
|
||||||
EXIT;
|
EXIT;
|
||||||
EOFSCRIPT
|
EOFSCRIPT
|
||||||
'"
|
'"
|
||||||
echo "✓ Script sinonime generat"
|
echo "✓ Script sinonime generat"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
echo "[2/3] Creare sinonime publice (53 total)..."
|
echo "[2/3] Creare sinonime publice (53 total)..."
|
||||||
ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe sqlplus -s ${PDB_CONNECT} @/tmp/create_synonyms.sql"
|
ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe sqlplus -s ${PDB_CONNECT} @/tmp/create_synonyms.sql"
|
||||||
echo "✓ Sinonime create"
|
echo "✓ Sinonime create"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
echo "[3/3] Acordare grant-uri către PUBLIC (147 total)..."
|
echo "[3/3] Acordare grant-uri către PUBLIC (147 total)..."
|
||||||
ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe sqlplus -s ${PDB_CONNECT}" <<'EOF'
|
ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe sqlplus -s ${PDB_CONNECT}" <<'EOF'
|
||||||
WHENEVER SQLERROR CONTINUE
|
WHENEVER SQLERROR CONTINUE
|
||||||
|
|
||||||
-- Grant-uri CONTAFIN_ORACLE → PUBLIC (sample complet în documentație)
|
-- Grant-uri CONTAFIN_ORACLE → PUBLIC (sample complet în documentație)
|
||||||
GRANT REFERENCES ON CONTAFIN_ORACLE.ATAS_ATASAMENTE TO PUBLIC;
|
GRANT REFERENCES ON CONTAFIN_ORACLE.ATAS_ATASAMENTE TO PUBLIC;
|
||||||
GRANT SELECT ON CONTAFIN_ORACLE.ATAS_ATASAMENTE TO PUBLIC;
|
GRANT SELECT ON CONTAFIN_ORACLE.ATAS_ATASAMENTE TO PUBLIC;
|
||||||
GRANT EXECUTE ON CONTAFIN_ORACLE.PACK_DREPTURI TO PUBLIC;
|
GRANT EXECUTE ON CONTAFIN_ORACLE.PACK_DREPTURI TO PUBLIC;
|
||||||
GRANT EXECUTE ON CONTAFIN_ORACLE.PACK_UTILS TO PUBLIC;
|
GRANT EXECUTE ON CONTAFIN_ORACLE.PACK_UTILS TO PUBLIC;
|
||||||
GRANT EXECUTE ON CONTAFIN_ORACLE.PACK_UPDATE TO PUBLIC;
|
GRANT EXECUTE ON CONTAFIN_ORACLE.PACK_UPDATE TO PUBLIC;
|
||||||
GRANT SELECT ON CONTAFIN_ORACLE.NOM_FIRME TO PUBLIC;
|
GRANT SELECT ON CONTAFIN_ORACLE.NOM_FIRME TO PUBLIC;
|
||||||
GRANT SELECT ON CONTAFIN_ORACLE.UTILIZATORI TO PUBLIC;
|
GRANT SELECT ON CONTAFIN_ORACLE.UTILIZATORI TO PUBLIC;
|
||||||
-- ... (147 grant-uri total - vezi scriptul complet în documentație)
|
-- ... (147 grant-uri total - vezi scriptul complet în documentație)
|
||||||
|
|
||||||
PROMPT Grant-uri către PUBLIC acordate!
|
PROMPT Grant-uri către PUBLIC acordate!
|
||||||
EXIT;
|
EXIT;
|
||||||
EOF
|
EOF
|
||||||
echo "✓ Grant-uri acordate"
|
echo "✓ Grant-uri acordate"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
echo "Verificare finală..."
|
echo "Verificare finală..."
|
||||||
ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe sqlplus -s ${PDB_CONNECT}" <<'EOF'
|
ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe sqlplus -s ${PDB_CONNECT}" <<'EOF'
|
||||||
SET PAGESIZE 20
|
SET PAGESIZE 20
|
||||||
|
|
||||||
-- Verificare sinonime
|
-- Verificare sinonime
|
||||||
SELECT COUNT(*) as "Sinonime SYN_*"
|
SELECT COUNT(*) as "Sinonime SYN_*"
|
||||||
FROM dba_synonyms
|
FROM dba_synonyms
|
||||||
WHERE owner='PUBLIC' AND synonym_name LIKE 'SYN_%';
|
WHERE owner='PUBLIC' AND synonym_name LIKE 'SYN_%';
|
||||||
|
|
||||||
-- Verificare grant-uri
|
-- Verificare grant-uri
|
||||||
SELECT COUNT(*) as "Grant-uri to PUBLIC"
|
SELECT COUNT(*) as "Grant-uri to PUBLIC"
|
||||||
FROM dba_tab_privs
|
FROM dba_tab_privs
|
||||||
WHERE grantee='PUBLIC' AND grantor='CONTAFIN_ORACLE';
|
WHERE grantee='PUBLIC' AND grantor='CONTAFIN_ORACLE';
|
||||||
|
|
||||||
EXIT;
|
EXIT;
|
||||||
EOF
|
EOF
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo "✅ SINONIME + GRANT-URI COMPLETE!"
|
echo "✅ SINONIME + GRANT-URI COMPLETE!"
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo ""
|
echo ""
|
||||||
echo "Următorul pas: 06-finalize-migration.sh"
|
echo "Următorul pas: 06-finalize-migration.sh"
|
||||||
echo ""
|
echo ""
|
||||||
|
|||||||
@@ -1,162 +1,162 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
#==============================================================================
|
#==============================================================================
|
||||||
# Script: 06-finalize-migration.sh
|
# Script: 06-finalize-migration.sh
|
||||||
# Descriere: Recompilare obiecte invalide + verificare finală migrare
|
# Descriere: Recompilare obiecte invalide + verificare finală migrare
|
||||||
# Data: 30 Septembrie 2025
|
# Data: 30 Septembrie 2025
|
||||||
# Rulare: bash 06-finalize-migration.sh
|
# Rulare: bash 06-finalize-migration.sh
|
||||||
#==============================================================================
|
#==============================================================================
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo "FINALIZARE MIGRARE ORACLE 21c"
|
echo "FINALIZARE MIGRARE ORACLE 21c"
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
ORACLE_PWD="OraclePass123"
|
ORACLE_PWD="OraclePass123"
|
||||||
PDB_CONNECT="sys/${ORACLE_PWD}@localhost:1521/roa as sysdba"
|
PDB_CONNECT="sys/${ORACLE_PWD}@localhost:1521/roa as sysdba"
|
||||||
|
|
||||||
# Detectare schema secundara
|
# Detectare schema secundara
|
||||||
if [ -z "$SCHEMA2_NAME" ]; then
|
if [ -z "$SCHEMA2_NAME" ]; then
|
||||||
SCHEMA2_NAME="MARIUSM_AUTO"
|
SCHEMA2_NAME="MARIUSM_AUTO"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "[1/2] Recompilare obiecte invalide..."
|
echo "[1/2] Recompilare obiecte invalide..."
|
||||||
echo "Durată estimată: 5-10 minute"
|
echo "Durată estimată: 5-10 minute"
|
||||||
ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe sqlplus -s ${PDB_CONNECT}" <<EOF
|
ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe sqlplus -s ${PDB_CONNECT}" <<EOF
|
||||||
SET SERVEROUTPUT ON
|
SET SERVEROUTPUT ON
|
||||||
WHENEVER SQLERROR CONTINUE
|
WHENEVER SQLERROR CONTINUE
|
||||||
|
|
||||||
BEGIN
|
BEGIN
|
||||||
DBMS_OUTPUT.PUT_LINE('Recompilare CONTAFIN_ORACLE...');
|
DBMS_OUTPUT.PUT_LINE('Recompilare CONTAFIN_ORACLE...');
|
||||||
DBMS_UTILITY.compile_schema('CONTAFIN_ORACLE', compile_all => FALSE);
|
DBMS_UTILITY.compile_schema('CONTAFIN_ORACLE', compile_all => FALSE);
|
||||||
|
|
||||||
DBMS_OUTPUT.PUT_LINE('Recompilare ${SCHEMA2_NAME}...');
|
DBMS_OUTPUT.PUT_LINE('Recompilare ${SCHEMA2_NAME}...');
|
||||||
DBMS_UTILITY.compile_schema('${SCHEMA2_NAME}', compile_all => FALSE);
|
DBMS_UTILITY.compile_schema('${SCHEMA2_NAME}', compile_all => FALSE);
|
||||||
|
|
||||||
DBMS_OUTPUT.PUT_LINE('Recompilare completă!');
|
DBMS_OUTPUT.PUT_LINE('Recompilare completă!');
|
||||||
END;
|
END;
|
||||||
/
|
/
|
||||||
|
|
||||||
EXIT;
|
EXIT;
|
||||||
EOF
|
EOF
|
||||||
echo "✓ Obiecte recompilate"
|
echo "✓ Obiecte recompilate"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
echo "[2/2] Verificare completă migrare..."
|
echo "[2/2] Verificare completă migrare..."
|
||||||
ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe sqlplus -s ${PDB_CONNECT}" <<EOF
|
ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe sqlplus -s ${PDB_CONNECT}" <<EOF
|
||||||
SET PAGESIZE 100 FEEDBACK ON
|
SET PAGESIZE 100 FEEDBACK ON
|
||||||
|
|
||||||
PROMPT ==========================================
|
PROMPT ==========================================
|
||||||
PROMPT VERIFICARE COMPLETA MIGRARE ORACLE 21c
|
PROMPT VERIFICARE COMPLETA MIGRARE ORACLE 21c
|
||||||
PROMPT ==========================================
|
PROMPT ==========================================
|
||||||
PROMPT
|
PROMPT
|
||||||
|
|
||||||
PROMPT 1. Conexiune PDB ROA:
|
PROMPT 1. Conexiune PDB ROA:
|
||||||
SELECT 'Connected to: ' || name || ' (CDB=' || cdb || ')' as info FROM v$database;
|
SELECT 'Connected to: ' || name || ' (CDB=' || cdb || ')' as info FROM v$database;
|
||||||
PROMPT
|
PROMPT
|
||||||
|
|
||||||
PROMPT 2. Tablespace ROA:
|
PROMPT 2. Tablespace ROA:
|
||||||
SELECT tablespace_name, status, contents,
|
SELECT tablespace_name, status, contents,
|
||||||
ROUND(SUM(bytes)/1024/1024/1024,2) as size_gb
|
ROUND(SUM(bytes)/1024/1024/1024,2) as size_gb
|
||||||
FROM dba_data_files
|
FROM dba_data_files
|
||||||
WHERE tablespace_name='ROA'
|
WHERE tablespace_name='ROA'
|
||||||
GROUP BY tablespace_name, status, contents;
|
GROUP BY tablespace_name, status, contents;
|
||||||
PROMPT
|
PROMPT
|
||||||
|
|
||||||
PROMPT 3. Utilizatori:
|
PROMPT 3. Utilizatori:
|
||||||
SELECT username, default_tablespace, account_status
|
SELECT username, default_tablespace, account_status
|
||||||
FROM dba_users
|
FROM dba_users
|
||||||
WHERE username IN ('CONTAFIN_ORACLE','${SCHEMA2_NAME}')
|
WHERE username IN ('CONTAFIN_ORACLE','${SCHEMA2_NAME}')
|
||||||
ORDER BY username;
|
ORDER BY username;
|
||||||
PROMPT
|
PROMPT
|
||||||
|
|
||||||
PROMPT 4. Obiecte totale:
|
PROMPT 4. Obiecte totale:
|
||||||
SELECT owner, COUNT(*) as total_objects,
|
SELECT owner, COUNT(*) as total_objects,
|
||||||
SUM(CASE WHEN status='VALID' THEN 1 ELSE 0 END) as valid_objects,
|
SUM(CASE WHEN status='VALID' THEN 1 ELSE 0 END) as valid_objects,
|
||||||
SUM(CASE WHEN status='INVALID' THEN 1 ELSE 0 END) as invalid_objects,
|
SUM(CASE WHEN status='INVALID' THEN 1 ELSE 0 END) as invalid_objects,
|
||||||
ROUND(SUM(CASE WHEN status='VALID' THEN 1 ELSE 0 END) * 100.0 / COUNT(*), 2) || '%' as pct_valid
|
ROUND(SUM(CASE WHEN status='VALID' THEN 1 ELSE 0 END) * 100.0 / COUNT(*), 2) || '%' as pct_valid
|
||||||
FROM dba_objects
|
FROM dba_objects
|
||||||
WHERE owner IN ('CONTAFIN_ORACLE','${SCHEMA2_NAME}')
|
WHERE owner IN ('CONTAFIN_ORACLE','${SCHEMA2_NAME}')
|
||||||
GROUP BY owner
|
GROUP BY owner
|
||||||
ORDER BY owner;
|
ORDER BY owner;
|
||||||
PROMPT
|
PROMPT
|
||||||
|
|
||||||
PROMPT 5. Tabele:
|
PROMPT 5. Tabele:
|
||||||
SELECT owner, COUNT(*) as table_count
|
SELECT owner, COUNT(*) as table_count
|
||||||
FROM dba_tables
|
FROM dba_tables
|
||||||
WHERE owner IN ('CONTAFIN_ORACLE','${SCHEMA2_NAME}')
|
WHERE owner IN ('CONTAFIN_ORACLE','${SCHEMA2_NAME}')
|
||||||
GROUP BY owner
|
GROUP BY owner
|
||||||
ORDER BY owner;
|
ORDER BY owner;
|
||||||
PROMPT
|
PROMPT
|
||||||
|
|
||||||
PROMPT 6. Obiecte SYS custom:
|
PROMPT 6. Obiecte SYS custom:
|
||||||
SELECT object_name, object_type, status
|
SELECT object_name, object_type, status
|
||||||
FROM dba_objects
|
FROM dba_objects
|
||||||
WHERE owner='SYS'
|
WHERE owner='SYS'
|
||||||
AND object_name IN ('AUTH_PACK','NEWSCHEMA','NEWSCHEMAJOB','VAUTH_SERII','AUTH_SERII')
|
AND object_name IN ('AUTH_PACK','NEWSCHEMA','NEWSCHEMAJOB','VAUTH_SERII','AUTH_SERII')
|
||||||
ORDER BY object_type, object_name;
|
ORDER BY object_type, object_name;
|
||||||
PROMPT
|
PROMPT
|
||||||
|
|
||||||
PROMPT 7. Sinonime publice:
|
PROMPT 7. Sinonime publice:
|
||||||
SELECT COUNT(*) as "Sinonime SYN_*"
|
SELECT COUNT(*) as "Sinonime SYN_*"
|
||||||
FROM dba_synonyms
|
FROM dba_synonyms
|
||||||
WHERE owner='PUBLIC' AND synonym_name LIKE 'SYN_%';
|
WHERE owner='PUBLIC' AND synonym_name LIKE 'SYN_%';
|
||||||
PROMPT
|
PROMPT
|
||||||
|
|
||||||
PROMPT 8. Grant-uri PUBLIC:
|
PROMPT 8. Grant-uri PUBLIC:
|
||||||
SELECT COUNT(*) as "Grants to PUBLIC"
|
SELECT COUNT(*) as "Grants to PUBLIC"
|
||||||
FROM dba_tab_privs
|
FROM dba_tab_privs
|
||||||
WHERE grantee='PUBLIC' AND grantor='CONTAFIN_ORACLE';
|
WHERE grantee='PUBLIC' AND grantor='CONTAFIN_ORACLE';
|
||||||
PROMPT
|
PROMPT
|
||||||
|
|
||||||
PROMPT 9. Grant-uri SYS:
|
PROMPT 9. Grant-uri SYS:
|
||||||
SELECT COUNT(*) as "Grants from SYS"
|
SELECT COUNT(*) as "Grants from SYS"
|
||||||
FROM dba_tab_privs
|
FROM dba_tab_privs
|
||||||
WHERE grantee='CONTAFIN_ORACLE' AND grantor='SYS';
|
WHERE grantee='CONTAFIN_ORACLE' AND grantor='SYS';
|
||||||
PROMPT
|
PROMPT
|
||||||
|
|
||||||
PROMPT 10. Test funcțional - Sinonim public:
|
PROMPT 10. Test funcțional - Sinonim public:
|
||||||
DECLARE
|
DECLARE
|
||||||
v_count NUMBER;
|
v_count NUMBER;
|
||||||
BEGIN
|
BEGIN
|
||||||
SELECT COUNT(*) INTO v_count FROM dba_synonyms
|
SELECT COUNT(*) INTO v_count FROM dba_synonyms
|
||||||
WHERE synonym_name='SYN_PACK_DREPTURI' AND owner='PUBLIC';
|
WHERE synonym_name='SYN_PACK_DREPTURI' AND owner='PUBLIC';
|
||||||
|
|
||||||
IF v_count > 0 THEN
|
IF v_count > 0 THEN
|
||||||
DBMS_OUTPUT.PUT_LINE('✓ SYN_PACK_DREPTURI exists and is accessible');
|
DBMS_OUTPUT.PUT_LINE('✓ SYN_PACK_DREPTURI exists and is accessible');
|
||||||
ELSE
|
ELSE
|
||||||
DBMS_OUTPUT.PUT_LINE('✗ SYN_PACK_DREPTURI NOT FOUND!');
|
DBMS_OUTPUT.PUT_LINE('✗ SYN_PACK_DREPTURI NOT FOUND!');
|
||||||
END IF;
|
END IF;
|
||||||
END;
|
END;
|
||||||
/
|
/
|
||||||
|
|
||||||
PROMPT
|
PROMPT
|
||||||
PROMPT ==========================================
|
PROMPT ==========================================
|
||||||
PROMPT VERIFICARE COMPLETA!
|
PROMPT VERIFICARE COMPLETA!
|
||||||
PROMPT ==========================================
|
PROMPT ==========================================
|
||||||
|
|
||||||
EXIT;
|
EXIT;
|
||||||
EOF
|
EOF
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo "✅ MIGRARE FINALIZATA CU SUCCES!"
|
echo "✅ MIGRARE FINALIZATA CU SUCCES!"
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo ""
|
echo ""
|
||||||
echo "Rezumat:"
|
echo "Rezumat:"
|
||||||
echo " ✓ PDB ROA creat"
|
echo " ✓ PDB ROA creat"
|
||||||
echo " ✓ Tablespace ROA (20GB)"
|
echo " ✓ Tablespace ROA (20GB)"
|
||||||
echo " ✓ Utilizatori: CONTAFIN_ORACLE, MARIUSM_AUTO"
|
echo " ✓ Utilizatori: CONTAFIN_ORACLE, MARIUSM_AUTO"
|
||||||
echo " ✓ Obiecte importate: ~4,000"
|
echo " ✓ Obiecte importate: ~4,000"
|
||||||
echo " ✓ Sinonime publice: 53"
|
echo " ✓ Sinonime publice: 53"
|
||||||
echo " ✓ Grant-uri PUBLIC: 147"
|
echo " ✓ Grant-uri PUBLIC: 147"
|
||||||
echo " ✓ Obiecte recompilate"
|
echo " ✓ Obiecte recompilate"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Test conexiune:"
|
echo "Test conexiune:"
|
||||||
echo " sqlplus CONTAFIN_ORACLE/${ORACLE_PWD}@10.0.20.201:1521/roa"
|
echo " sqlplus CONTAFIN_ORACLE/${ORACLE_PWD}@10.0.20.201:1521/roa"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Log-uri disponibile:"
|
echo "Log-uri disponibile:"
|
||||||
echo " - docker exec oracle-xe cat /tmp/contafin_import.log"
|
echo " - docker exec oracle-xe cat /tmp/contafin_import.log"
|
||||||
echo " - docker exec oracle-xe cat /tmp/mariusm_import.log"
|
echo " - docker exec oracle-xe cat /tmp/mariusm_import.log"
|
||||||
echo ""
|
echo ""
|
||||||
|
|||||||
@@ -1,212 +1,212 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
# Clone VM 300 (Windows 11 Template) for Oracle Testing
|
# Clone VM 300 (Windows 11 Template) for Oracle Testing
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
#
|
#
|
||||||
# Purpose: Create a test VM for Oracle installation testing
|
# Purpose: Create a test VM for Oracle installation testing
|
||||||
#
|
#
|
||||||
# Usage:
|
# Usage:
|
||||||
# ./clone-vm300.sh [TARGET_VMID] [TARGET_NAME]
|
# ./clone-vm300.sh [TARGET_VMID] [TARGET_NAME]
|
||||||
#
|
#
|
||||||
# Examples:
|
# Examples:
|
||||||
# ./clone-vm300.sh # Creates VM 301 named oracle-test-301
|
# ./clone-vm300.sh # Creates VM 301 named oracle-test-301
|
||||||
# ./clone-vm300.sh 305 # Creates VM 305 named oracle-test-305
|
# ./clone-vm300.sh 305 # Creates VM 305 named oracle-test-305
|
||||||
# ./clone-vm300.sh 310 roa-prod # Creates VM 310 named roa-prod
|
# ./clone-vm300.sh 310 roa-prod # Creates VM 310 named roa-prod
|
||||||
#
|
#
|
||||||
# Prerequisites:
|
# Prerequisites:
|
||||||
# - Run on Proxmox host (pvemini, pve1, or pveelite)
|
# - Run on Proxmox host (pvemini, pve1, or pveelite)
|
||||||
# - VM 300 exists as Windows 11 template
|
# - VM 300 exists as Windows 11 template
|
||||||
# - Sufficient storage space (~50GB per clone)
|
# - Sufficient storage space (~50GB per clone)
|
||||||
#
|
#
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# Configuration
|
# Configuration
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
|
|
||||||
SOURCE_VMID=300
|
SOURCE_VMID=300
|
||||||
TARGET_VMID=${1:-301}
|
TARGET_VMID=${1:-301}
|
||||||
TARGET_NAME=${2:-"oracle-test-${TARGET_VMID}"}
|
TARGET_NAME=${2:-"oracle-test-${TARGET_VMID}"}
|
||||||
|
|
||||||
# Storage for new VM (change if needed)
|
# Storage for new VM (change if needed)
|
||||||
TARGET_STORAGE="local-zfs"
|
TARGET_STORAGE="local-zfs"
|
||||||
|
|
||||||
# Node where to create the VM (empty = same as source)
|
# Node where to create the VM (empty = same as source)
|
||||||
TARGET_NODE=""
|
TARGET_NODE=""
|
||||||
|
|
||||||
# Full clone (true) or linked clone (false)
|
# Full clone (true) or linked clone (false)
|
||||||
FULL_CLONE=true
|
FULL_CLONE=true
|
||||||
|
|
||||||
# Start VM after creation
|
# Start VM after creation
|
||||||
AUTO_START=true
|
AUTO_START=true
|
||||||
|
|
||||||
# Description for the new VM
|
# Description for the new VM
|
||||||
DESCRIPTION="Oracle 21c Test VM - Created $(date '+%Y-%m-%d %H:%M')"
|
DESCRIPTION="Oracle 21c Test VM - Created $(date '+%Y-%m-%d %H:%M')"
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# Validation
|
# Validation
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
|
|
||||||
echo "=============================================="
|
echo "=============================================="
|
||||||
echo "Proxmox VM Clone Script"
|
echo "Proxmox VM Clone Script"
|
||||||
echo "=============================================="
|
echo "=============================================="
|
||||||
echo ""
|
echo ""
|
||||||
echo "Source VM: $SOURCE_VMID"
|
echo "Source VM: $SOURCE_VMID"
|
||||||
echo "Target VM: $TARGET_VMID"
|
echo "Target VM: $TARGET_VMID"
|
||||||
echo "Target Name: $TARGET_NAME"
|
echo "Target Name: $TARGET_NAME"
|
||||||
echo "Full Clone: $FULL_CLONE"
|
echo "Full Clone: $FULL_CLONE"
|
||||||
echo "Auto Start: $AUTO_START"
|
echo "Auto Start: $AUTO_START"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# Check if running on Proxmox
|
# Check if running on Proxmox
|
||||||
if ! command -v qm &> /dev/null; then
|
if ! command -v qm &> /dev/null; then
|
||||||
echo "ERROR: This script must be run on a Proxmox host"
|
echo "ERROR: This script must be run on a Proxmox host"
|
||||||
echo " (qm command not found)"
|
echo " (qm command not found)"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check if source VM exists
|
# Check if source VM exists
|
||||||
if ! qm status $SOURCE_VMID &> /dev/null; then
|
if ! qm status $SOURCE_VMID &> /dev/null; then
|
||||||
echo "ERROR: Source VM $SOURCE_VMID does not exist"
|
echo "ERROR: Source VM $SOURCE_VMID does not exist"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check if target VMID is already in use
|
# Check if target VMID is already in use
|
||||||
if qm status $TARGET_VMID &> /dev/null 2>&1; then
|
if qm status $TARGET_VMID &> /dev/null 2>&1; then
|
||||||
echo "ERROR: Target VMID $TARGET_VMID already exists"
|
echo "ERROR: Target VMID $TARGET_VMID already exists"
|
||||||
echo " Choose a different VMID or remove existing VM:"
|
echo " Choose a different VMID or remove existing VM:"
|
||||||
echo " qm destroy $TARGET_VMID"
|
echo " qm destroy $TARGET_VMID"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Confirm before proceeding
|
# Confirm before proceeding
|
||||||
read -p "Proceed with cloning? [y/N] " -n 1 -r
|
read -p "Proceed with cloning? [y/N] " -n 1 -r
|
||||||
echo
|
echo
|
||||||
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
||||||
echo "Aborted."
|
echo "Aborted."
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# Clone VM
|
# Clone VM
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "Creating clone..."
|
echo "Creating clone..."
|
||||||
|
|
||||||
CLONE_CMD="qm clone $SOURCE_VMID $TARGET_VMID --name $TARGET_NAME"
|
CLONE_CMD="qm clone $SOURCE_VMID $TARGET_VMID --name $TARGET_NAME"
|
||||||
|
|
||||||
if [ "$FULL_CLONE" = true ]; then
|
if [ "$FULL_CLONE" = true ]; then
|
||||||
CLONE_CMD="$CLONE_CMD --full"
|
CLONE_CMD="$CLONE_CMD --full"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$TARGET_STORAGE" ]; then
|
if [ -n "$TARGET_STORAGE" ]; then
|
||||||
CLONE_CMD="$CLONE_CMD --storage $TARGET_STORAGE"
|
CLONE_CMD="$CLONE_CMD --storage $TARGET_STORAGE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$TARGET_NODE" ]; then
|
if [ -n "$TARGET_NODE" ]; then
|
||||||
CLONE_CMD="$CLONE_CMD --target $TARGET_NODE"
|
CLONE_CMD="$CLONE_CMD --target $TARGET_NODE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Running: $CLONE_CMD"
|
echo "Running: $CLONE_CMD"
|
||||||
eval $CLONE_CMD
|
eval $CLONE_CMD
|
||||||
|
|
||||||
echo "Clone created successfully"
|
echo "Clone created successfully"
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# Configure VM
|
# Configure VM
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "Configuring VM..."
|
echo "Configuring VM..."
|
||||||
|
|
||||||
# Set description
|
# Set description
|
||||||
qm set $TARGET_VMID --description "$DESCRIPTION"
|
qm set $TARGET_VMID --description "$DESCRIPTION"
|
||||||
|
|
||||||
# Optionally increase resources for Oracle
|
# Optionally increase resources for Oracle
|
||||||
# qm set $TARGET_VMID --memory 8192 --cores 4
|
# qm set $TARGET_VMID --memory 8192 --cores 4
|
||||||
|
|
||||||
echo "VM configured"
|
echo "VM configured"
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# Start VM
|
# Start VM
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
|
|
||||||
if [ "$AUTO_START" = true ]; then
|
if [ "$AUTO_START" = true ]; then
|
||||||
echo ""
|
echo ""
|
||||||
echo "Starting VM..."
|
echo "Starting VM..."
|
||||||
qm start $TARGET_VMID
|
qm start $TARGET_VMID
|
||||||
|
|
||||||
# Wait for VM to start
|
# Wait for VM to start
|
||||||
sleep 5
|
sleep 5
|
||||||
|
|
||||||
# Check status
|
# Check status
|
||||||
STATUS=$(qm status $TARGET_VMID | awk '{print $2}')
|
STATUS=$(qm status $TARGET_VMID | awk '{print $2}')
|
||||||
echo "VM Status: $STATUS"
|
echo "VM Status: $STATUS"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# Output Summary
|
# Output Summary
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "=============================================="
|
echo "=============================================="
|
||||||
echo "VM Clone Complete"
|
echo "VM Clone Complete"
|
||||||
echo "=============================================="
|
echo "=============================================="
|
||||||
echo ""
|
echo ""
|
||||||
echo "VMID: $TARGET_VMID"
|
echo "VMID: $TARGET_VMID"
|
||||||
echo "Name: $TARGET_NAME"
|
echo "Name: $TARGET_NAME"
|
||||||
echo "Status: $(qm status $TARGET_VMID | awk '{print $2}')"
|
echo "Status: $(qm status $TARGET_VMID | awk '{print $2}')"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Console URL: https://$(hostname -I | awk '{print $1}'):8006/#v1:0:=qemu%2F${TARGET_VMID}:4::::::"
|
echo "Console URL: https://$(hostname -I | awk '{print $1}'):8006/#v1:0:=qemu%2F${TARGET_VMID}:4::::::"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Next steps:"
|
echo "Next steps:"
|
||||||
echo " 1. Connect to VM console"
|
echo " 1. Connect to VM console"
|
||||||
echo " 2. Complete Windows OOBE if needed"
|
echo " 2. Complete Windows OOBE if needed"
|
||||||
echo " 3. Install Oracle 21c XE or SE"
|
echo " 3. Install Oracle 21c XE or SE"
|
||||||
echo " 4. Run ROA setup scripts"
|
echo " 4. Run ROA setup scripts"
|
||||||
echo ""
|
echo ""
|
||||||
echo "To delete this VM when done:"
|
echo "To delete this VM when done:"
|
||||||
echo " qm stop $TARGET_VMID"
|
echo " qm stop $TARGET_VMID"
|
||||||
echo " qm destroy $TARGET_VMID"
|
echo " qm destroy $TARGET_VMID"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# Helper Commands
|
# Helper Commands
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
|
|
||||||
# Print helpful commands
|
# Print helpful commands
|
||||||
cat << 'COMMANDS'
|
cat << 'COMMANDS'
|
||||||
# Useful Proxmox commands:
|
# Useful Proxmox commands:
|
||||||
|
|
||||||
# List all VMs
|
# List all VMs
|
||||||
qm list
|
qm list
|
||||||
|
|
||||||
# VM status
|
# VM status
|
||||||
qm status TARGET_VMID
|
qm status TARGET_VMID
|
||||||
|
|
||||||
# Start/Stop/Restart VM
|
# Start/Stop/Restart VM
|
||||||
qm start TARGET_VMID
|
qm start TARGET_VMID
|
||||||
qm stop TARGET_VMID
|
qm stop TARGET_VMID
|
||||||
qm restart TARGET_VMID
|
qm restart TARGET_VMID
|
||||||
|
|
||||||
# Access VM console
|
# Access VM console
|
||||||
qm terminal TARGET_VMID
|
qm terminal TARGET_VMID
|
||||||
|
|
||||||
# Clone with different storage
|
# Clone with different storage
|
||||||
qm clone 300 TARGET_VMID --name NAME --full --storage local-lvm
|
qm clone 300 TARGET_VMID --name NAME --full --storage local-lvm
|
||||||
|
|
||||||
# Snapshot before testing
|
# Snapshot before testing
|
||||||
qm snapshot TARGET_VMID snap-before-oracle --description "Before Oracle install"
|
qm snapshot TARGET_VMID snap-before-oracle --description "Before Oracle install"
|
||||||
|
|
||||||
# Rollback to snapshot
|
# Rollback to snapshot
|
||||||
qm rollback TARGET_VMID snap-before-oracle
|
qm rollback TARGET_VMID snap-before-oracle
|
||||||
|
|
||||||
# Delete VM
|
# Delete VM
|
||||||
qm stop TARGET_VMID && qm destroy TARGET_VMID
|
qm stop TARGET_VMID && qm destroy TARGET_VMID
|
||||||
|
|
||||||
COMMANDS
|
COMMANDS
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
|||||||
@@ -1,79 +1,79 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# Export CONTAFIN_ORACLE și FIRMANOUA, arhive separate tar.gz
|
# Export CONTAFIN_ORACLE și FIRMANOUA, arhive separate tar.gz
|
||||||
# Rulează din LXC 108: ./export-roa2.sh [18|21]
|
# Rulează din LXC 108: ./export-roa2.sh [18|21]
|
||||||
# 18 = Oracle 18c (compatibil 11g/18c/19c) | 21 = Oracle 21c (default)
|
# 18 = Oracle 18c (compatibil 11g/18c/19c) | 21 = Oracle 21c (default)
|
||||||
#
|
#
|
||||||
# Exemple:
|
# Exemple:
|
||||||
# ./export-roa2.sh 18 # Export din Oracle 18c pe port 1522
|
# ./export-roa2.sh 18 # Export din Oracle 18c pe port 1522
|
||||||
# ./export-roa2.sh 21 # Export din Oracle 21c PDB roa2 pe port 1521
|
# ./export-roa2.sh 21 # Export din Oracle 21c PDB roa2 pe port 1521
|
||||||
# ./export-roa2.sh # Default: Oracle 21c
|
# ./export-roa2.sh # Default: Oracle 21c
|
||||||
|
|
||||||
DATE=$(date +%Y%m%d_%H%M%S)
|
DATE=$(date +%Y%m%d_%H%M%S)
|
||||||
SCHEMAS="CONTAFIN_ORACLE FIRMANOUA"
|
SCHEMAS="CONTAFIN_ORACLE FIRMANOUA"
|
||||||
ORACLE_VER=${1:-21}
|
ORACLE_VER=${1:-21}
|
||||||
|
|
||||||
if [ "$ORACLE_VER" == "18" ]; then
|
if [ "$ORACLE_VER" == "18" ]; then
|
||||||
CONTAINER="oracle18-xe"
|
CONTAINER="oracle18-xe"
|
||||||
PORT="1521" # Port intern container (extern e 1522)
|
PORT="1521" # Port intern container (extern e 1522)
|
||||||
SERVICE="XEPDB1" # Oracle 18c PDB (nu CDB!)
|
SERVICE="XEPDB1" # Oracle 18c PDB (nu CDB!)
|
||||||
DMPDIR="/opt/oracle18/oradata/dmpdir" # Volum separat pentru 18c
|
DMPDIR="/opt/oracle18/oradata/dmpdir" # Volum separat pentru 18c
|
||||||
SUFFIX="_v11.2"
|
SUFFIX="_v11.2"
|
||||||
VERSION="11.2"
|
VERSION="11.2"
|
||||||
echo "=== Export Oracle 18c PDB XEPDB1 (compatibil 11g/18c/19c) - $DATE ==="
|
echo "=== Export Oracle 18c PDB XEPDB1 (compatibil 11g/18c/19c) - $DATE ==="
|
||||||
else
|
else
|
||||||
CONTAINER="oracle-xe"
|
CONTAINER="oracle-xe"
|
||||||
PORT="1521"
|
PORT="1521"
|
||||||
SERVICE="roa2" # Oracle 21c PDB roa2
|
SERVICE="roa2" # Oracle 21c PDB roa2
|
||||||
DMPDIR="/opt/oracle/oradata/dmpdir" # Volum pentru 21c
|
DMPDIR="/opt/oracle/oradata/dmpdir" # Volum pentru 21c
|
||||||
SUFFIX="_v19"
|
SUFFIX="_v19"
|
||||||
VERSION="19"
|
VERSION="19"
|
||||||
echo "=== Export Oracle 21c PDB roa2 - $DATE ==="
|
echo "=== Export Oracle 21c PDB roa2 - $DATE ==="
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Verifică că containerul Docker rulează
|
# Verifică că containerul Docker rulează
|
||||||
if ! docker ps --format '{{.Names}}' | grep -q "^${CONTAINER}$"; then
|
if ! docker ps --format '{{.Names}}' | grep -q "^${CONTAINER}$"; then
|
||||||
echo "EROARE: Containerul $CONTAINER nu rulează!"
|
echo "EROARE: Containerul $CONTAINER nu rulează!"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Pornește-l cu: docker start $CONTAINER"
|
echo "Pornește-l cu: docker start $CONTAINER"
|
||||||
echo "Apoi așteaptă ~60s pentru startup Oracle."
|
echo "Apoi așteaptă ~60s pentru startup Oracle."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Verifică că baza de date Oracle e OPEN
|
# Verifică că baza de date Oracle e OPEN
|
||||||
DB_STATUS=$(docker exec $CONTAINER bash -c "echo 'SELECT status FROM v\$instance;' | sqlplus -s / as sysdba" 2>/dev/null | grep -E "OPEN|MOUNTED")
|
DB_STATUS=$(docker exec $CONTAINER bash -c "echo 'SELECT status FROM v\$instance;' | sqlplus -s / as sysdba" 2>/dev/null | grep -E "OPEN|MOUNTED")
|
||||||
if [ -z "$DB_STATUS" ]; then
|
if [ -z "$DB_STATUS" ]; then
|
||||||
echo "EROARE: Baza de date Oracle nu e disponibilă!"
|
echo "EROARE: Baza de date Oracle nu e disponibilă!"
|
||||||
echo "Containerul rulează dar Oracle nu e OPEN."
|
echo "Containerul rulează dar Oracle nu e OPEN."
|
||||||
echo "Verifică: docker logs $CONTAINER --tail 20"
|
echo "Verifică: docker logs $CONTAINER --tail 20"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
echo "Oracle status: $DB_STATUS"
|
echo "Oracle status: $DB_STATUS"
|
||||||
|
|
||||||
# Verifică că DMPDIR există
|
# Verifică că DMPDIR există
|
||||||
if [ ! -d "$DMPDIR" ]; then
|
if [ ! -d "$DMPDIR" ]; then
|
||||||
echo "EROARE: Director $DMPDIR nu există!"
|
echo "EROARE: Director $DMPDIR nu există!"
|
||||||
echo "Creează-l cu: mkdir -p $DMPDIR && chmod 777 $DMPDIR"
|
echo "Creează-l cu: mkdir -p $DMPDIR && chmod 777 $DMPDIR"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd $DMPDIR
|
cd $DMPDIR
|
||||||
|
|
||||||
for SCHEMA in $SCHEMAS; do
|
for SCHEMA in $SCHEMAS; do
|
||||||
echo "Exporting $SCHEMA from $CONTAINER..."
|
echo "Exporting $SCHEMA from $CONTAINER..."
|
||||||
docker exec $CONTAINER expdp system/romfastsoft@localhost:$PORT/$SERVICE \
|
docker exec $CONTAINER expdp system/romfastsoft@localhost:$PORT/$SERVICE \
|
||||||
SCHEMAS=$SCHEMA \
|
SCHEMAS=$SCHEMA \
|
||||||
DIRECTORY=DMPDIR \
|
DIRECTORY=DMPDIR \
|
||||||
DUMPFILE=${SCHEMA}_${DATE}.dmp \
|
DUMPFILE=${SCHEMA}_${DATE}.dmp \
|
||||||
LOGFILE=${SCHEMA}_${DATE}.log \
|
LOGFILE=${SCHEMA}_${DATE}.log \
|
||||||
VERSION=$VERSION \
|
VERSION=$VERSION \
|
||||||
EXCLUDE=STATISTICS
|
EXCLUDE=STATISTICS
|
||||||
|
|
||||||
# Arhivare individuală
|
# Arhivare individuală
|
||||||
ARCHIVE="${SCHEMA}${SUFFIX}_${DATE}.tar.gz"
|
ARCHIVE="${SCHEMA}${SUFFIX}_${DATE}.tar.gz"
|
||||||
echo "Creating archive: $ARCHIVE"
|
echo "Creating archive: $ARCHIVE"
|
||||||
tar -czvf "$ARCHIVE" ${SCHEMA}_${DATE}.dmp ${SCHEMA}_${DATE}.log
|
tar -czvf "$ARCHIVE" ${SCHEMA}_${DATE}.dmp ${SCHEMA}_${DATE}.log
|
||||||
rm -f ${SCHEMA}_${DATE}.dmp ${SCHEMA}_${DATE}.log
|
rm -f ${SCHEMA}_${DATE}.dmp ${SCHEMA}_${DATE}.log
|
||||||
done
|
done
|
||||||
|
|
||||||
echo "=== Done! ==="
|
echo "=== Done! ==="
|
||||||
ls -lh $DMPDIR/*_${DATE}.tar.gz
|
ls -lh $DMPDIR/*_${DATE}.tar.gz
|
||||||
|
|||||||
@@ -1,23 +1,23 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
# fix-sqlnet.sh - Startup script pentru Oracle 18c XE
|
# fix-sqlnet.sh - Startup script pentru Oracle 18c XE
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
# Scop: Restaurează sqlnet.ora cu suport pentru clienți vechi (Instant Client 11g)
|
# Scop: Restaurează sqlnet.ora cu suport pentru clienți vechi (Instant Client 11g)
|
||||||
# la fiecare pornire a containerului Docker.
|
# la fiecare pornire a containerului Docker.
|
||||||
#
|
#
|
||||||
# Locație în container: /opt/oracle/scripts/startup/fix-sqlnet.sh
|
# Locație în container: /opt/oracle/scripts/startup/fix-sqlnet.sh
|
||||||
# Executat automat de: gvenzl/oracle-xe la pornirea containerului
|
# Executat automat de: gvenzl/oracle-xe la pornirea containerului
|
||||||
#
|
#
|
||||||
# Problema rezolvată: ORA-28040: No matching authentication protocol
|
# Problema rezolvată: ORA-28040: No matching authentication protocol
|
||||||
# Cauză: Oracle 18c implicit nu acceptă autentificare de la clienți 11g
|
# Cauză: Oracle 18c implicit nu acceptă autentificare de la clienți 11g
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
|
|
||||||
CONFIG_SOURCE="/opt/oracle/oradata/dbconfig/sqlnet.ora"
|
CONFIG_SOURCE="/opt/oracle/oradata/dbconfig/sqlnet.ora"
|
||||||
CONFIG_DEST="/opt/oracle/product/18c/dbhomeXE/network/admin/sqlnet.ora"
|
CONFIG_DEST="/opt/oracle/product/18c/dbhomeXE/network/admin/sqlnet.ora"
|
||||||
|
|
||||||
if [ -f "$CONFIG_SOURCE" ]; then
|
if [ -f "$CONFIG_SOURCE" ]; then
|
||||||
cp "$CONFIG_SOURCE" "$CONFIG_DEST"
|
cp "$CONFIG_SOURCE" "$CONFIG_DEST"
|
||||||
echo "[fix-sqlnet.sh] Copied custom sqlnet.ora with old auth protocol support"
|
echo "[fix-sqlnet.sh] Copied custom sqlnet.ora with old auth protocol support"
|
||||||
else
|
else
|
||||||
echo "[fix-sqlnet.sh] WARNING: $CONFIG_SOURCE not found, using default sqlnet.ora"
|
echo "[fix-sqlnet.sh] WARNING: $CONFIG_SOURCE not found, using default sqlnet.ora"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -1,31 +1,31 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# Script pentru a finaliza un task (commit + push)
|
# Script pentru a finaliza un task (commit + push)
|
||||||
|
|
||||||
PROJECT_DIR="/workspace/romfastsql"
|
PROJECT_DIR="/workspace/romfastsql"
|
||||||
cd "$PROJECT_DIR" || exit 1
|
cd "$PROJECT_DIR" || exit 1
|
||||||
|
|
||||||
BRANCH=$(git branch --show-current)
|
BRANCH=$(git branch --show-current)
|
||||||
|
|
||||||
if [ "$BRANCH" = "main" ]; then
|
if [ "$BRANCH" = "main" ]; then
|
||||||
echo "❌ Ești pe main! Nu face commit direct pe main."
|
echo "❌ Ești pe main! Nu face commit direct pe main."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "📋 Status curent:"
|
echo "📋 Status curent:"
|
||||||
git status --short
|
git status --short
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
read -p "Mesaj commit: " COMMIT_MSG
|
read -p "Mesaj commit: " COMMIT_MSG
|
||||||
|
|
||||||
if [ -z "$COMMIT_MSG" ]; then
|
if [ -z "$COMMIT_MSG" ]; then
|
||||||
echo "❌ Trebuie să dai un mesaj pentru commit"
|
echo "❌ Trebuie să dai un mesaj pentru commit"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
git add .
|
git add .
|
||||||
git commit -m "$COMMIT_MSG"
|
git commit -m "$COMMIT_MSG"
|
||||||
git push -u origin "$BRANCH"
|
git push -u origin "$BRANCH"
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "✅ Done! Branch-ul $BRANCH a fost push-uit."
|
echo "✅ Done! Branch-ul $BRANCH a fost push-uit."
|
||||||
echo "🔗 Creează Pull Request în Gitea: https://gitea.romfast.ro/romfast/romfastsql/compare/main...$BRANCH"
|
echo "🔗 Creează Pull Request în Gitea: https://gitea.romfast.ro/romfast/romfastsql/compare/main...$BRANCH"
|
||||||
|
|||||||
@@ -1,26 +1,26 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# Script pentru a începe un task nou cu branch
|
# Script pentru a începe un task nou cu branch
|
||||||
|
|
||||||
if [ -z "$1" ]; then
|
if [ -z "$1" ]; then
|
||||||
echo "Utilizare: ~/new-task.sh <nume-branch>"
|
echo "Utilizare: ~/new-task.sh <nume-branch>"
|
||||||
echo "Exemplu: ~/new-task.sh fix/rezolva-bug"
|
echo "Exemplu: ~/new-task.sh fix/rezolva-bug"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
BRANCH_NAME="$1"
|
BRANCH_NAME="$1"
|
||||||
PROJECT_DIR="/workspace/romfastsql"
|
PROJECT_DIR="/workspace/romfastsql"
|
||||||
|
|
||||||
cd "$PROJECT_DIR" || exit 1
|
cd "$PROJECT_DIR" || exit 1
|
||||||
|
|
||||||
# Actualizează main
|
# Actualizează main
|
||||||
echo "📥 Actualizez main..."
|
echo "📥 Actualizez main..."
|
||||||
git checkout main
|
git checkout main
|
||||||
git pull origin main
|
git pull origin main
|
||||||
|
|
||||||
# Creează branch nou
|
# Creează branch nou
|
||||||
echo "🌿 Creez branch: $BRANCH_NAME"
|
echo "🌿 Creez branch: $BRANCH_NAME"
|
||||||
git checkout -b "$BRANCH_NAME"
|
git checkout -b "$BRANCH_NAME"
|
||||||
|
|
||||||
echo "✅ Gata! Ești pe branch-ul: $BRANCH_NAME"
|
echo "✅ Gata! Ești pe branch-ul: $BRANCH_NAME"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Pornește Claude cu: source ~/.nvm/nvm.sh && claude"
|
echo "Pornește Claude cu: source ~/.nvm/nvm.sh && claude"
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# Start or attach to Claude agent tmux session
|
# Start or attach to Claude agent tmux session
|
||||||
|
|
||||||
SESSION_NAME="agent"
|
SESSION_NAME="agent"
|
||||||
|
|
||||||
# Load nvm
|
# Load nvm
|
||||||
export NVM_DIR="$HOME/.nvm"
|
export NVM_DIR="$HOME/.nvm"
|
||||||
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
|
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
|
||||||
|
|
||||||
# Check if session exists
|
# Check if session exists
|
||||||
if tmux has-session -t $SESSION_NAME 2>/dev/null; then
|
if tmux has-session -t $SESSION_NAME 2>/dev/null; then
|
||||||
echo "Attaching to existing session: $SESSION_NAME"
|
echo "Attaching to existing session: $SESSION_NAME"
|
||||||
tmux attach-session -t $SESSION_NAME
|
tmux attach-session -t $SESSION_NAME
|
||||||
else
|
else
|
||||||
echo "Creating new session: $SESSION_NAME"
|
echo "Creating new session: $SESSION_NAME"
|
||||||
tmux new-session -s $SESSION_NAME -c /workspace
|
tmux new-session -s $SESSION_NAME -c /workspace
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -1,104 +1,104 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# Script all-in-one pentru workflow cu selecție proiect
|
# Script all-in-one pentru workflow cu selecție proiect
|
||||||
|
|
||||||
WORKSPACE="/workspace"
|
WORKSPACE="/workspace"
|
||||||
source ~/.nvm/nvm.sh
|
source ~/.nvm/nvm.sh
|
||||||
|
|
||||||
echo "🚀 Claude Workflow"
|
echo "🚀 Claude Workflow"
|
||||||
echo "=================="
|
echo "=================="
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# Listează proiectele (directoare cu .git)
|
# Listează proiectele (directoare cu .git)
|
||||||
echo "📁 Proiecte disponibile:"
|
echo "📁 Proiecte disponibile:"
|
||||||
echo ""
|
echo ""
|
||||||
projects=()
|
projects=()
|
||||||
i=1
|
i=1
|
||||||
for dir in "$WORKSPACE"/*/; do
|
for dir in "$WORKSPACE"/*/; do
|
||||||
if [ -d "$dir/.git" ]; then
|
if [ -d "$dir/.git" ]; then
|
||||||
name=$(basename "$dir")
|
name=$(basename "$dir")
|
||||||
projects+=("$dir")
|
projects+=("$dir")
|
||||||
echo " $i) $name"
|
echo " $i) $name"
|
||||||
((i++))
|
((i++))
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ ${#projects[@]} -eq 0 ]; then
|
if [ ${#projects[@]} -eq 0 ]; then
|
||||||
echo "❌ Nu am găsit proiecte Git în $WORKSPACE"
|
echo "❌ Nu am găsit proiecte Git în $WORKSPACE"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
read -p "Alege proiect [1-$((i-1))]: " proj_choice
|
read -p "Alege proiect [1-$((i-1))]: " proj_choice
|
||||||
|
|
||||||
if [ -z "$proj_choice" ] || [ "$proj_choice" -lt 1 ] || [ "$proj_choice" -gt ${#projects[@]} ]; then
|
if [ -z "$proj_choice" ] || [ "$proj_choice" -lt 1 ] || [ "$proj_choice" -gt ${#projects[@]} ]; then
|
||||||
echo "❌ Selecție invalidă"
|
echo "❌ Selecție invalidă"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
PROJECT_DIR="${projects[$((proj_choice-1))]}"
|
PROJECT_DIR="${projects[$((proj_choice-1))]}"
|
||||||
PROJECT_NAME=$(basename "$PROJECT_DIR")
|
PROJECT_NAME=$(basename "$PROJECT_DIR")
|
||||||
|
|
||||||
cd "$PROJECT_DIR" || exit 1
|
cd "$PROJECT_DIR" || exit 1
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "📂 Proiect: $PROJECT_NAME"
|
echo "📂 Proiect: $PROJECT_NAME"
|
||||||
echo "🌿 Branch curent: $(git branch --show-current)"
|
echo "🌿 Branch curent: $(git branch --show-current)"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Ce vrei să faci?"
|
echo "Ce vrei să faci?"
|
||||||
echo " 1) Începe task nou (branch nou)"
|
echo " 1) Începe task nou (branch nou)"
|
||||||
echo " 2) Continuă task existent"
|
echo " 2) Continuă task existent"
|
||||||
echo " 3) Finalizează task (commit + push)"
|
echo " 3) Finalizează task (commit + push)"
|
||||||
echo " 4) Vezi branch-uri"
|
echo " 4) Vezi branch-uri"
|
||||||
echo " 5) Pornește Claude pe branch-ul curent"
|
echo " 5) Pornește Claude pe branch-ul curent"
|
||||||
echo ""
|
echo ""
|
||||||
read -p "Alege [1-5]: " choice
|
read -p "Alege [1-5]: " choice
|
||||||
|
|
||||||
case $choice in
|
case $choice in
|
||||||
1)
|
1)
|
||||||
read -p "Nume branch (ex: fix/bug-login): " BRANCH_NAME
|
read -p "Nume branch (ex: fix/bug-login): " BRANCH_NAME
|
||||||
git checkout main 2>/dev/null || git checkout master
|
git checkout main 2>/dev/null || git checkout master
|
||||||
git pull
|
git pull
|
||||||
git checkout -b "$BRANCH_NAME"
|
git checkout -b "$BRANCH_NAME"
|
||||||
echo "✅ Branch creat: $BRANCH_NAME"
|
echo "✅ Branch creat: $BRANCH_NAME"
|
||||||
echo "Pornesc Claude..."
|
echo "Pornesc Claude..."
|
||||||
claude
|
claude
|
||||||
;;
|
;;
|
||||||
2)
|
2)
|
||||||
echo "Branch-uri locale:"
|
echo "Branch-uri locale:"
|
||||||
git branch
|
git branch
|
||||||
echo ""
|
echo ""
|
||||||
read -p "Nume branch: " BRANCH_NAME
|
read -p "Nume branch: " BRANCH_NAME
|
||||||
git checkout "$BRANCH_NAME"
|
git checkout "$BRANCH_NAME"
|
||||||
echo "Pornesc Claude..."
|
echo "Pornesc Claude..."
|
||||||
claude
|
claude
|
||||||
;;
|
;;
|
||||||
3)
|
3)
|
||||||
BRANCH=$(git branch --show-current)
|
BRANCH=$(git branch --show-current)
|
||||||
if [ "$BRANCH" = "main" ] || [ "$BRANCH" = "master" ]; then
|
if [ "$BRANCH" = "main" ] || [ "$BRANCH" = "master" ]; then
|
||||||
echo "❌ Ești pe $BRANCH! Nu face commit direct aici."
|
echo "❌ Ești pe $BRANCH! Nu face commit direct aici."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
echo "📋 Status:"
|
echo "📋 Status:"
|
||||||
git status --short
|
git status --short
|
||||||
echo ""
|
echo ""
|
||||||
read -p "Mesaj commit: " COMMIT_MSG
|
read -p "Mesaj commit: " COMMIT_MSG
|
||||||
if [ -n "$COMMIT_MSG" ]; then
|
if [ -n "$COMMIT_MSG" ]; then
|
||||||
git add .
|
git add .
|
||||||
git commit -m "$COMMIT_MSG"
|
git commit -m "$COMMIT_MSG"
|
||||||
git push -u origin "$BRANCH"
|
git push -u origin "$BRANCH"
|
||||||
echo "✅ Push făcut pe $BRANCH"
|
echo "✅ Push făcut pe $BRANCH"
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
4)
|
4)
|
||||||
echo "Branch curent: $(git branch --show-current)"
|
echo "Branch curent: $(git branch --show-current)"
|
||||||
echo ""
|
echo ""
|
||||||
git branch -a
|
git branch -a
|
||||||
;;
|
;;
|
||||||
5)
|
5)
|
||||||
echo "Pornesc Claude pe $(git branch --show-current)..."
|
echo "Pornesc Claude pe $(git branch --show-current)..."
|
||||||
claude
|
claude
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Opțiune invalidă"
|
echo "Opțiune invalidă"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|||||||
Reference in New Issue
Block a user