added sga and pga diagnostics and db parameters

This commit is contained in:
Zulqarnain 2024-11-29 04:59:34 -05:00
parent b1ffd59111
commit 68057dd986
4 changed files with 300 additions and 5 deletions

View File

@ -20,6 +20,17 @@
"type": "command",
"content": "output=$(/opt/ticket-ai/src/scripts/db_version_info.sh) && echo \"$output\""
},
{
"tag": "pga_diagnostics",
"type": "command",
"content": "output=$(/opt/ticket-ai/src/scripts/pga_diagnostics.sh) && echo \"$output\""
},
{
"tag": "sga_diagnostics",
"type": "command",
"content": "output=$(/opt/ticket-ai/src/scripts/sga_diagnostics.sh) && echo \"$output\""
},
{
"tag": "apex_usage",
"type": "command",
@ -45,6 +56,11 @@
"type": "command",
"content": "output=$(/opt/ticket-ai/src/scripts/topRedoSQL.sh) && echo \"$output\""
},
{
"tag": "dbparameters",
"type": "command",
"content": "output=$(/opt/ticket-ai/src/scripts/showdbparameter.sh) && echo \"$output\""
},
{
"tag": "top",
"type": "command",

139
src/scripts/pga_diagnostics.sh Executable file
View File

@ -0,0 +1,139 @@
#!/bin/bash
# High PGA-Consuming Sessions
echo "=== High PGA-Consuming Sessions and SQL Statements ==="
echo "This query shows sessions and SQL statements consuming the most PGA memory, with values in MB."
su - oracle -s /bin/bash -c "
sqlplus -s / as sysdba <<EOF
SET LINESIZE 200
COLUMN USERNAME FORMAT A20
COLUMN MODULE FORMAT A30
COLUMN PGA_ALLOC_MB FORMAT 99999.99
COLUMN PGA_USED_MB FORMAT 99999.99
COLUMN SQL_TEXT FORMAT A50
SELECT
s.SID,
s.SERIAL#,
s.USERNAME,
s.MODULE,
ROUND(p.PGA_ALLOC_MEM / 1024 / 1024, 2) AS PGA_ALLOC_MB,
ROUND(p.PGA_USED_MEM / 1024 / 1024, 2) AS PGA_USED_MB,
q.SQL_TEXT
FROM
V\\\$SESSION s
JOIN
V\\\$PROCESS p
ON
s.PADDR = p.ADDR
LEFT JOIN
V\\\$SQL q
ON
s.SQL_ID = q.SQL_ID
WHERE
p.PGA_ALLOC_MEM > (SELECT VALUE FROM V\\\$PGASTAT WHERE NAME = 'total PGA allocated') / 10
ORDER BY
p.PGA_ALLOC_MEM DESC;
EOF
"
# PGA Usage Overview
echo "=== PGA Usage Overview ==="
echo "This query provides a summary of current PGA usage statistics, with values in MB."
su - oracle -s /bin/bash -c "
sqlplus -s / as sysdba <<EOF
SET LINESIZE 200
COLUMN NAME FORMAT A40
COLUMN VALUE_MB FORMAT 999999.99
SELECT
NAME,
ROUND(VALUE / 1024 / 1024, 2) AS VALUE_MB
FROM
V\\\$PGASTAT
WHERE
NAME IN ('total PGA allocated', 'total PGA inuse',
'maximum PGA allocated', 'over allocation count');
EOF
"
# Sessions Using Temporary Tablespace
echo "=== Sessions Using Temporary Tablespace ==="
echo "This query identifies sessions that are spilling to temporary tablespaces, with values in MB."
su - oracle -s /bin/bash -c "
sqlplus -s / as sysdba <<EOF
SET LINESIZE 200
COLUMN USERNAME FORMAT A20
COLUMN TABLESPACE FORMAT A20
COLUMN TEMP_MB FORMAT 99999.99
SELECT
s.SID,
s.SERIAL#,
s.USERNAME,
tsu.TABLESPACE,
ROUND(tsu.BLOCKS * (SELECT VALUE FROM V\\\$PARAMETER WHERE NAME = 'db_block_size') / 1024 / 1024, 2) AS TEMP_MB
FROM
V\\\$SESSION s
JOIN
V\\\$TEMPSEG_USAGE tsu
ON
s.SID = tsu.SESSION_NUM
ORDER BY
TEMP_MB DESC;
EOF
"
# Active Sessions Using Large Work Areas
echo "=== Active Sessions Using Large Work Areas ==="
echo "This query lists sessions using significant PGA memory for sorts, hash joins, or other large work areas."
su - oracle -s /bin/bash -c "
sqlplus -s / as sysdba <<EOF
SET LINESIZE 200
COLUMN SID FORMAT 99999
COLUMN OPERATION_TYPE FORMAT A20
COLUMN WORK_AREA_SIZE_MB FORMAT 99999.99
COLUMN ACTUAL_MEM_USED_MB FORMAT 99999.99
COLUMN NUMBER_PASSES FORMAT 99999
SELECT
SID,
OPERATION_TYPE,
ROUND(WORK_AREA_SIZE / 1024 / 1024, 2) AS WORK_AREA_SIZE_MB,
ROUND(ACTUAL_MEM_USED / 1024 / 1024, 2) AS ACTUAL_MEM_USED_MB,
NUMBER_PASSES
FROM
V\\\$SQL_WORKAREA_ACTIVE
WHERE
ACTUAL_MEM_USED > 0
ORDER BY
ACTUAL_MEM_USED_MB DESC;
EOF
"
# Top Resource-Consuming SQL Statements
echo "=== Top Resource-Consuming SQL Statements ==="
echo "This query highlights the SQL statements with the highest disk reads, buffer gets, and elapsed times, all in MB."
su - oracle -s /bin/bash -c "
sqlplus -s / as sysdba <<EOF
SET LINESIZE 200
COLUMN SQL_ID FORMAT A15
COLUMN DISK_READS_MB FORMAT 99999.99
COLUMN BUFFER_GETS_MB FORMAT 999999.99
COLUMN ELAPSED_TIME_SEC FORMAT 99999.99
COLUMN SQL_TEXT FORMAT A50
SELECT
SQL_ID,
ROUND(DISK_READS / 1024 / 1024, 2) AS DISK_READS_MB,
ROUND(BUFFER_GETS / 1024 / 1024, 2) AS BUFFER_GETS_MB,
ROUND(ELAPSED_TIME / 1000000, 2) AS ELAPSED_TIME_SEC,
SQL_TEXT
FROM
V\\\$SQL
WHERE
DISK_READS > 100
ORDER BY
DISK_READS DESC FETCH FIRST 10 ROWS ONLY;
EOF
"

110
src/scripts/sga_diagnostics.sh Executable file
View File

@ -0,0 +1,110 @@
#!/bin/bash
# Overall SGA Usage
echo "=== Overall SGA Usage ==="
echo "This query shows the sizes of all major SGA components (e.g., buffer cache, shared pool, redo log) in MB."
su - oracle -s /bin/bash -c "
sqlplus -s / as sysdba <<EOF
SET LINESIZE 200
COLUMN NAME FORMAT A40
COLUMN VALUE_MB FORMAT 999999999.99
SELECT
NAME,
ROUND(BYTES / 1024 / 1024, 2) AS VALUE_MB
FROM
V\\\$SGAINFO;
EOF
"
# Shared Pool Usage
echo "=== Shared Pool Usage ==="
echo "This query provides details on the shared pool memory usage (session memory, UGA, shared pool) in MB."
su - oracle -s /bin/bash -c "
sqlplus -s / as sysdba <<EOF
SET LINESIZE 200
COLUMN NAME FORMAT A40
COLUMN VALUE_MB FORMAT 9999999.99
SELECT
NAME,
ROUND(VALUE / 1024 / 1024, 2) AS VALUE_MB
FROM
V\\\$SYSSTAT
WHERE
NAME LIKE 'session%memory%'
OR NAME LIKE 'session uga memory%'
OR NAME LIKE 'shared pool%';
EOF
"
# Buffer Cache Statistics
echo "=== Buffer Cache Statistics ==="
echo "This query shows buffer cache usage and performance metrics, including logical and physical reads."
su - oracle -s /bin/bash -c "
sqlplus -s / as sysdba <<EOF
SET LINESIZE 200
COLUMN NAME FORMAT A40
COLUMN VALUE FORMAT 9999999.99
SELECT
NAME,
ROUND(VALUE / 1024 / 1024, 2) AS VALUE_MB
FROM
V\\\$SYSSTAT
WHERE
NAME LIKE 'physical reads%'
OR NAME LIKE 'buffer%'
OR NAME LIKE 'cache%';
EOF
"
# Library Cache Usage
echo "=== Library Cache Usage ==="
echo "This query analyzes memory usage in the library cache, focusing on SQL and PL/SQL execution and reload rates."
su - oracle -s /bin/bash -c "
sqlplus -s / as sysdba <<EOF
SET LINESIZE 200
COLUMN NAMESPACE FORMAT A25
COLUMN GETS FORMAT 999999999
COLUMN PINS FORMAT 999999999
COLUMN RELOADS FORMAT 999999999
COLUMN PIN_HIT_RATIO FORMAT 999.99
SELECT
NAMESPACE,
ROUND(GETS / 1024 / 1024, 2) AS GETS_MB,
ROUND(PINS / 1024 / 1024, 2) AS PINS_MB,
ROUND(RELOADS / 1024 / 1024, 2) AS RELOADS_MB,
ROUND((PINS - RELOADS) / DECODE(PINS, 0, 1, PINS) * 100, 2) AS PIN_HIT_RATIO
FROM
V\\\$LIBRARYCACHE
ORDER BY
PINS DESC;
EOF
"
# Top SQL Area Memory Consumers
echo "=== Top SQL Area Memory Consumers ==="
echo "This query lists SQL statements that consume the most memory in the shared pool, with disk reads and buffer gets in MB."
su - oracle -s /bin/bash -c "
sqlplus -s / as sysdba <<EOF
SET LINESIZE 200
COLUMN SQL_TEXT FORMAT A80
COLUMN PARSE_CALLS FORMAT 9999999
COLUMN DISK_READS_MB FORMAT 9999999.99
COLUMN BUFFER_GETS_MB FORMAT 9999999.99
SELECT
SQL_TEXT,
PARSE_CALLS,
ROUND(DISK_READS / 1024 / 1024, 2) AS DISK_READS_MB,
ROUND(BUFFER_GETS / 1024 / 1024, 2) AS BUFFER_GETS_MB
FROM
V\\\$SQLAREA
WHERE
BUFFER_GETS > 10000
ORDER BY
BUFFER_GETS DESC FETCH FIRST 10 ROWS ONLY;
EOF
"

View File

@ -11,12 +11,42 @@ chown oracle $OUTPUT_FILE
su - oracle -s /bin/bash -c "
sqlplus -s / as sysdba <<EOF >> \"$OUTPUT_FILE\"
whenever sqlerror exit sql.sqlcode;
set echo on
set heading on
set linesize 150
set pagesize 100
show parameters;
-- Set SQL*Plus Formatting
SET LINESIZE 200
SET PAGESIZE 50
COLUMN parameter_name FORMAT A35
COLUMN current_value FORMAT A25
COLUMN is_default FORMAT A12
COLUMN is_sys_modifiable FORMAT A18
COLUMN description FORMAT A80
-- SQL Query for Important Parameters
SELECT
name AS parameter_name,
value AS current_value,
isdefault AS is_default,
issys_modifiable AS is_sys_modifiable,
description
FROM
v\\\$parameter
WHERE
name IN (
-- Memory Management
'sga_target', 'sga_max_size', 'pga_aggregate_target', 'memory_target',
'memory_max_target', 'db_cache_size', 'shared_pool_size', 'large_pool_size',
'log_buffer',
-- Sessions and Processes
'sessions', 'processes', 'transactions',
-- Cursors
'open_cursors', 'session_cached_cursors', 'cursor_sharing',
-- Redo and Logs
'log_checkpoint_interval', 'log_checkpoint_timeout', 'log_buffer',
-- Other Important Performance Parameters
'db_block_size', 'optimizer_mode', 'parallel_max_servers'
)
ORDER BY name;
exit;
EOF