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