added sga and pga diagnostics and db parameters
This commit is contained in:
parent
b1ffd59111
commit
68057dd986
@ -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
139
src/scripts/pga_diagnostics.sh
Executable 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
110
src/scripts/sga_diagnostics.sh
Executable 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
|
||||
"
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user