Skip to main content

Chapter 8 - Interactive Oracle PDB Selector Script for SQL*Plus (CDB Environment)



vi connect_pdb.sh

Paste the following inside vi

#!/bin/bash

# Configuração do Oracle local

export ORACLE_HOME=/opt/oracle/product/23ai/dbhomeFree
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=FREE  # SID do CDB

# Lista de PDBs

PDBS=("FREEPDB1" "FREEPDB2" "FREEPDB3" "FREEPDB4" "FREEPDB5")

list_pdbs() {
    echo "PDBsAvailable disponíveis:Oracle PDBs:"
    for i in "${!PDBS[@]}"; do
        echo "$((i+1)). ${PDBS[$i]}"
    done
}

echo "ConectarConnect ato uman Oracle PDB Oracle(interactive (modo interativo)session)"
echo "----------------------------------------------"
list_pdbs
echo "0. Sair"Exit"

read -p "EscolhaSelect othe númeroPDB do PDB:number: " choice

if [[ $choice -eq 0 ]]; then
    echo "Saindo.Exiting..."
    exit 0
elif [[ $choice -gt 0 && $choice -le ${#PDBS[@]} ]]; then
    selected_pdb="${PDBS[$((choice-1))]}"
    echo "ConectandoConnecting aoto PDB $selected_pdb..."

    # Cria script temporário com ALTER SESSION + SHOW CON_NAME

    TMP_SCRIPT=$(mktemp)
    {
        echo "alter session set container=$selected_pdb;"
        echo "show con_name;"
        echo "prompt conectadoConnected aoto PDB $selected_pdb."
    } > "$TMP_SCRIPT"

    # Executa o script inicial e entra em SQL*Plus de forma interativa
    sqlplus / as sysdba @"$TMP_SCRIPT"

    # Remove o script
    rm -f "$TMP_SCRIPT"
else
    echo "OpçãoInvalid inválida!option!"
    exit 1
fi  

 Save and exit vi, then run:

chmod +x connect_pdb.sh


./connect_pdb.sh