某个SQL_ID的执行计划状态及绑定
select SQL_PLAN_HASH_VALUE,round(avg(RUN_MINS),2) as avg_run_mins,count(*) from
(
SELECT T.SQL_ID,T.SQL_EXEC_ID,CAST(MAX(T.SAMPLE_TIME) AS DATE) EXEC_END_TIME,
T.SQL_EXEC_START as EXEC_START_TIME,ROUND((CAST(MAX(T.SAMPLE_TIME) AS DATE) - T.SQL_EXEC_START) * 1440,2) RUN_MINS,T.SQL_PLAN_HASH_VALUE, T.MODULE
from dba_hist_active_sess_history T
WHERE T.SQL_ID ='5w91hk4nmcmrx' AND T.SAMPLE_TIME > SYSDATE - 36
GROUP BY T.SQL_ID,T.SQL_EXEC_ID, T.SQL_EXEC_START, T.SQL_PLAN_HASH_VALUE, T.MODULE
ORDER BY EXEC_END_TIME DESC )
group by SQL_PLAN_HASH_VALUE
order by 2 desc;
--计划是否在内存
select sql_text,sql_id,hash_value,child_number,plan_hash_value,to_char(LAST_ACTIVE_TIME,'hh24:mi:ss') time
from v$sql a where sql_id='26kqp5puukbh8' and plan_hash_value='3059001790';
--①从库缓存载入
declare
l_plans_loaded pls_integer;
begin
l_plans_loaded:=dbms_spm.load_plans_from_cursor_cache(sql_id=>'26kqp5puukbh8' ,plan_hase_value=>'3059001790');
end;
/
select * from dba_sql_plan_baseline where origin=’MANUAL-LOAD’ order by created desc;
--固定执行计划,将该基线转为fixed
declare
i natural;
begin
i:=dbms_spm.alter_sql_plan_baseline(
‘sql_handle的值’,’plan_name的值’,attribute_name=>’FIXED’,attribute_value=>’YES’);
dbms_output.putline(i);
end;
/
select * from dba_sql_plan_baseline where origin=’MANUAL-LOAD’ order by created desc;--看fixed、accepted
select * from table(dbms_xplan.displany_sql_plan_baseline(‘sql_handle的值’,plan_name=>’plan_name的值’,format=>’ADVANCED’))
--删除方法
declare
v_text pls_integer;
begin
v_text:=dbms_spm.drop_sql_plan_baseline(sql_id=>'26kqp5puukbh8' ,plan_hase_value=>null);
dbms_output.putline(v_text);
end;
/
--②从awr载入
select * from dba_hist_sql_plan a where sql_id='26kqp5puukbh8' and plan_hash_value='3059001790' order by timestamp desc;--看期望的执行计划在什么时间
select * from dba_hist_ash_snapshot where begin_interval_time='时间值' order by begin_interval_time desc;--依据时间找快照id
select * owner,name,id,created,statement_count from dba_sqlnet order by created;--看已有的dba_sqlset,没有时创建
begin
dbms_sqltune.create_sqlset(‘sqlset名’,’SQL Tuning Set for loading plan into SQL Plan Baseline’);
end;/--创建sqlset
--指定快照号从awr中将执行计划load到sqlset,再select看dba_sqlset
declare
cur sys_refcursor;
begin
open cur for
select vaue(P) from table(dbms_sqltune.select_workload_repository(begin_snap=>起始snap_id, end_snap=>结束snap_id, base_filter=>’sql_id=''老执行计划的起始sql_id’’’,attribute_list=>’ALL’)) P;
dbms_sqltune.load_sqlset(sqlset_name=>’sqlset名’,populate_cursor=>cur);
close cur;
end;/
select * from table(dbms_sqltune.select_sqlset(sqlset_name=>’sqlset名’));--load后看sqlset值
--从sqlset中载入基线
declare
i pls_integer;
begin
i:=dbms_spm.load_plans_from_sqlset(
sqlset_name=>‘sqlset_name的值’,basic_filter=>’plan_hash_vale=’’plan_hash_value的值’’’);
end;
/
select * from dba_sql_plan_baseline where origin=’MANUAL-LOAD’ order by created desc;--创建后的信息
--固定执行计划,将该基线转为fixed
declare
i natural;
begin
i:=dbms_spm.alter_sql_plan_baseline(
‘sql_handle的值’,’plan_name的值’,attribute_name=>’FIXED’,attribute_value=>’YES’);
dbms_output.putline(i);
end;
/
select * from dba_sql_plan_baseline where origin=’MANUAL-LOAD’ order by created desc;--看fixed、accepted
select * from table(dbms_xplan.displany_sql_plan_baseline(‘sql_handle的值’,plan_name=>’plan_name的值’,format=>’ADVANCED’))
--清除缓存中的执行计划,让db重新解析生成
select sql_text,address,hash_value from v$sqlarea where sql_text like ‘sql语句’;
exec sys.dbms_shared_pool.purge(‘address的值,hash_value的值’,’c’); --清除缓存中sql执行计划
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
Oracle DataGuard高可用性解决方案详解
孙莹
450次阅读
2025-03-26 23:27:33
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
429次阅读
2025-04-15 17:24:06
墨天轮个人数说知识点合集
JiekeXu
375次阅读
2025-04-01 15:56:03
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
363次阅读
2025-04-08 09:12:48
Oracle SQL 执行计划分析与优化指南
Digital Observer
346次阅读
2025-04-01 11:08:44
Oracle 19c RAC更换IP实战,运维必看!
szrsu
312次阅读
2025-04-08 23:57:08
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
301次阅读
2025-04-15 14:48:05
风口浪尖!诚通证券扩容采购Oracle 793万...
Roger的数据库专栏
299次阅读
2025-03-24 09:42:53
切换Oracle归档路径后,不能正常删除原归档路径上的归档文件
dbaking
292次阅读
2025-03-19 14:41:51
oracle定时任务常用攻略
virvle
290次阅读
2025-03-25 16:05:19