Files
oracle/star/sql_plan_baselines.sql
T
2026-05-01 09:25:48 +02:00

72 lines
3.1 KiB
SQL

/*
* vplesnila 2025-05 - creation
* Based on Vishal Gupta script
* and other documents:
* - https://www.linkedin.com/pulse/efficiently-converting-sql-statements-sqlids-oracle-database-pandey-fwmff
* - https://franckpachot.medium.com/oracle-dba-sql-plan-baseline-sql-id-and-plan-hash-value-8ffa811a7c68
*
*
* Usage: @sql_plan_baselines.sql <where_clause>
* Examples:
* @sql_plan_baselines.sql "1=1"
* @sql_plan_baselines.sql "accepted='YES' and Last_Modified >(sysdate-1)"
* @sql_plan_baselines.sql "plan_hash_value=237994299"
* @sql_plan_baselines.sql "sql_id='g3gwhhx6r00qc'"
*/
COLUMN sql_id HEADING "SQL_ID" FORMAT a14
COLUMN sql_handle HEADING "SQL Handle" FORMAT a20
COLUMN plan_hash_value HEADING 'Plan|Hash Value' FORMAT 9999999999
COLUMN plan_name HEADING "Plan Name" FORMAT a30
COLUMN enabled HEADING "Ena|bled" FORMAT a4
COLUMN accepted HEADING "Accep|ted" FORMAT a5
COLUMN fixed HEADING "Fixed" FORMAT a5
COLUMN reproduced HEADING "Repro|duced" FORMAT a5
COLUMN autopurge HEADING "Auto|Purge" FORMAT a5
COLUMN optimizer_cost HEADING "Optimizer|Cost" FORMAT 99999999
COLUMN creator HEADING "Creator" FORMAT a13
COLUMN created HEADING "Created" FORMAT a19
COLUMN last_modified HEADING "LastModified" FORMAT a19
COLUMN last_executed HEADING "LastExecuted" FORMAT a19
COLUMN last_verified HEADING "LastVerified" FORMAT a19
COLUMN force_matching HEADING "Force|Match" FORMAT a5
COLUMN signature HEADING "Signature" FORMAT 999999999999999999999
COLUMN description HEADING "Description" FORMAT a50
BREAK ON name ON CATEGORY ON created ON last_modified ON type ON status ON force_matching ON signature ON description
select * from (
SELECT
dbms_sql_translator.sql_id(sql_text) sql_id
,(select
case
when instr(plan_table_output, ':') > 0 then to_number(substr(plan_table_output, instr(plan_table_output, ':', -1) + 1))
else to_number(plan_table_output)
end as last_value
from
(
select * from table(dbms_xplan.DISPLAY_SQL_PLAN_BASELINE(sql_handle,plan_name)) where plan_table_output like 'Plan hash value: %'
)
) plan_hash_value
, spb.sql_handle
, spb.plan_name
, spb.origin
, spb.enabled
, spb.accepted
, spb.fixed
, spb.reproduced
, spb.autopurge
, spb.optimizer_cost
, spb.creator
, to_char(spb.created,'YYYY-MM-DD HH24:MI:SS') created
, to_char(spb.last_modified,'YYYY-MM-DD HH24:MI:SS') last_modified
, to_char(spb.last_executed,'YYYY-MM-DD HH24:MI:SS') last_executed
, to_char(spb.last_verified,'YYYY-MM-DD HH24:MI:SS') last_verified
, spb.description
FROM dba_sql_plan_baselines spb
)
WHERE
&1
ORDER BY last_modified DESC
;