#!/bin/bash # File paths for output OUTPUT_FILE="/tmp/apex_smtp_settings.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 SMTP Settings 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 SET PAGESIZE 100 COLUMN PARAMETER_NAME FORMAT A20 COLUMN PARAMETER_VALUE FORMAT A50 -- Switch to the specified container ALTER SESSION SET CONTAINER = $container_name; -- Print the container name for clarity PROMPT APEX SMTP Settings for container: $container_name; SELECT 'SMTP_HOST_ADDRESS' AS PARAMETER_NAME, APEX_INSTANCE_ADMIN.GET_PARAMETER('SMTP_HOST_ADDRESS') AS PARAMETER_VALUE FROM DUAL UNION ALL SELECT 'SMTP_PORT', APEX_INSTANCE_ADMIN.GET_PARAMETER('SMTP_HOST_PORT') FROM DUAL UNION ALL SELECT 'SMTP_USERNAME', APEX_INSTANCE_ADMIN.GET_PARAMETER('SMTP_USERNAME') FROM DUAL UNION ALL SELECT 'SMTP_PASSWORD' AS PARAMETER_NAME, CASE WHEN APEX_INSTANCE_ADMIN.GET_PARAMETER('SMTP_PASSWORD') IS NOT NULL THEN 'ABCDEFGHIJKLM' ELSE NULL END AS PARAMETER_VALUE FROM DUAL UNION ALL SELECT 'SMTP_TLS_MODE', APEX_INSTANCE_ADMIN.GET_PARAMETER('SMTP_TLS_MODE') FROM DUAL; exit; EOF " } # 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 <> "$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 cat "$OUTPUT_FILE" # Clean up the temporary file rm -f "$PDB_LIST_FILE"