diff --git a/src/scripts/apexUsage.sh b/src/scripts/apexUsage.sh new file mode 100755 index 0000000..bb14feb --- /dev/null +++ b/src/scripts/apexUsage.sh @@ -0,0 +1,76 @@ +#!/bin/bash + +# File paths for output +OUTPUT_FILE="/tmp/apex_usage.tmp" +PDB_LIST_FILE="/tmp/pdb_list.tmp" +> "$OUTPUT_FILE" # Clear the output file before starting +touch $OUTPUT_FILE +chown oracle $OUTPUT_FILE + +# Function to execute the APEX usage query in a specific container +run_query() { + local container_name="$1" + su - oracle -s /bin/bash -c " + sqlplus -s / as sysdba <> \"$OUTPUT_FILE\" + whenever sqlerror exit sql.sqlcode; + set echo on + set heading on + SET UNDERLINE '=' + set feedback off + set linesize 150 + + -- Switch to the specified container + ALTER SESSION SET CONTAINER = $container_name; + + -- Print the container name for clarity + PROMPT APEX usage for container: $container_name; + + SELECT + OWNER, + SUM(BYTES) / (1024 * 1024) AS MB_USED + FROM + DBA_SEGMENTS + WHERE + OWNER LIKE 'APEX%' -- Replace with your APEX schema name + GROUP BY + OWNER; + + + exit; +EOF + " +} + +# Run the query for the CDB (root container) +# echo "Gathering APEX usage for CDB (root container)..." >> "$OUTPUT_FILE" +# run_query 'CDB\$ROOT' + +# Get a list of all PDBs, excluding PDB$SEED, and write to a temporary file +su - oracle -s /bin/bash -c " + sqlplus -s / as sysdba <<'EOF' + set heading off + set feedback off + set pagesize 0 + spool $PDB_LIST_FILE + SELECT NAME FROM v\$pdbs WHERE NAME NOT IN ('PDB\$SEED'); + spool off + exit; +EOF +" + +# Verify that the PDB_LIST_FILE was created and contains data +if [[ -f "$PDB_LIST_FILE" && -s "$PDB_LIST_FILE" ]]; then + # Read each valid PDB name from the temporary file + while IFS= read -r PDB; do + PDB=$(echo "$PDB" | xargs) # Trim any leading/trailing whitespace + if [[ -n "$PDB" ]]; then + echo "Gathering APEX usage for PDB: $PDB..." >> "$OUTPUT_FILE" + run_query "$PDB" + fi + done < "$PDB_LIST_FILE" +else + echo "No PDBs found or could not access v\$pdbs view" >> "$OUTPUT_FILE" +fi + +# Clean up the temporary file +rm -f "$PDB_LIST_FILE" diff --git a/src/scripts/tablespaceUsage.sh b/src/scripts/tablespaceUsage.sh index ccb7e78..06218e4 100755 --- a/src/scripts/tablespaceUsage.sh +++ b/src/scripts/tablespaceUsage.sh @@ -4,6 +4,8 @@ OUTPUT_FILE="/tmp/tablespace_usage.tmp" PDB_LIST_FILE="/tmp/pdb_list.tmp" > "$OUTPUT_FILE" # Clear the output file before starting +touch $OUTPUT_FILE +chown oracle $OUTPUT_FILE # Function to execute the tablespace usage query in a specific container run_query() { @@ -13,6 +15,8 @@ run_query() { whenever sqlerror exit sql.sqlcode; set echo off set heading on + SET UNDERLINE '=' + set feedback off set linesize 150 -- Switch to the specified container