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