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