Sql

get_pdb_details() {

  echo "Fetching PDB Details..." | tee -a $LOGFILE


  # Iterate over each CDB

  for ENV_FILE in /home/oracle/*.env; do

    echo "Sourcing environment file: $ENV_FILE" | tee -a $LOGFILE

    source "${ENV_FILE}"


    # Validate environment variables

    if [[ -z "$ORACLE_SID" || -z "$ORACLE_HOME" ]]; then

      echo "Environment variables not set in $ENV_FILE. Skipping..." | tee -a $LOGFILE

      continue

    fi


    # Check if CDB is running

    INSTANCE_STATUS=$(timeout 5 sqlplus -s / as sysdba <<EOF

SET HEAD OFF FEEDBACK OFF

SELECT instance_name FROM v\$instance WHERE status = 'OPEN';

EXIT;

EOF

)


    if [[ -z "$INSTANCE_STATUS" ]]; then

      echo "CDB $ORACLE_SID is not running. Skipping..." | tee -a $LOGFILE

      continue

    fi


    echo -e "\nProcessing CDB: $ORACLE_SID" | tee -a $LOGFILE


    # Fetch PDB names

    PDBS=$(timeout 5 sqlplus -s / as sysdba <<EOF

SET HEAD OFF FEED OFF

SELECT pdb_name FROM cdb_pdbs WHERE pdb_name != 'PDB\$SEED';

EXIT;

EOF

)


    # Fetch and display PDB details

    for PDB_NAME in $PDBS; do

      echo -e "\n--- PDB: $PDB_NAME ---" | tee -a $LOGFILE

      

      sqlplus -s / as sysdba <<EOF

        SET LINESIZE 150

        SET PAGESIZE 100

        COLUMN PARAMETER FORMAT A25

        COLUMN VALUE FORMAT A40

        COLUMN SIZE_IN_GB FORMAT 999.99


        ALTER SESSION SET CONTAINER = $PDB_NAME;


        PROMPT Parameter Details for PDB: $PDB_NAME

        SELECT 'unique_name' AS PARAMETER, VALUE FROM v\$parameter WHERE name = 'db_unique_name';

        SELECT 'Container Name' AS PARAMETER, SYS_CONTEXT('USERENV', 'CON_NAME') AS VALUE FROM dual;

        SELECT 'CPU Count' AS PARAMETER, VALUE FROM v\$parameter WHERE name = 'cpu_count';

        SELECT 'SGA Max Size' AS PARAMETER, VALUE FROM v\$parameter WHERE name = 'sga_max_size';

        SELECT 'SGA Target' AS PARAMETER, VALUE FROM v\$parameter WHERE name = 'sga_target';

        SELECT 'PGA Target' AS PARAMETER, VALUE FROM v\$parameter WHERE name = 'pga_aggregate_target';


        PROMPT Data File Size (in GB) for PDB: $PDB_NAME

        SELECT SUM(bytes) / 1024 / 1024 / 1024 AS size_in_gb FROM dba_data_files;


        EXIT;

EOF


    done

  done

}

Comments

Popular posts from this blog

Database growth

DBA Day-2 ve

Asm