暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片
Oracle 固定SQL执行计划v1.5
1503
11页
117次
2019-08-02
5墨值下载
云和恩墨 成就所托 www.enmotech.com
I
实力成就稳健
技术创造价值
文章目录
第一章 数据库执行计划固定变更 ...................................................................................... 1
1.1 变更前期准备 .......................................................................................................... 1
1.2 变更实施过程 .......................................................................................................... 1
1.2.1 定位 SQL 执行计划异常过程 .......................................................................... 1
1.2.2 写出想要的执行计划的 sql,找出 sql_idplan_hash_value ....................... 7
1.2.3 数据库执行计划固化后检查 .......................................................................... 8
1.2.4 回退过程 .......................................................................................................... 9
1.3 变更完成跟进 .......................................................................................................... 9
云和恩墨 成就所托 www.enmotech.com
1
实力成就稳健
技术创造价值
第一章
数据库执行计划固定变更
1.1
变更前期准备
1. 查找性能变差 SQL 所有执行计划,找出最优的执行计划。
2. 对于性能变差的 SQL,需要立即处理,无需停止相关应用。
1.2
变更实施过程
1.2.1
定位
SQL
执行计划异常过程
a) 检查当前等待事件及异常 sql
select sql_id,event ,count(*) from v$session where wait_class<>'Idle' group by sql_id,event
order by 3 desc;
Idle 的等待事件也不要过滤掉,比如 SQL 开启并行后的等待事件 PX Deq: Execution Msg
select sql_id,event ,count(*) from v$session group by sql_id,event order by 3 desc;
通过抓取的 TOP SQL_ID,再 、物 、逻 、返
数等来初步判断该 SQL_ID 的执行计划是否是最高效的。
抓取 top sql 的办法很多,还可以通过 ashawraddm v$类系视图来判断,下面的
一种获取系统等待的 SQL 也可以参考:
select
a.sid, a.username, a.terminal,
a.machine, a.module, a.event,
a.status, b.spid, c.sql_id,
云和恩墨 成就所托 www.enmotech.com
2
实力成就稳健
技术创造价值
to_char(LAST_CALL_ET) as seconds, c.last_active_time
from v$session a, v$process b, v$sqlarea c
where a.paddr = b.addr(+) and a.sql_hash_value = c.hash_value(+)
and a.sql_address = c.address(+) and a.type = 'USER'
and a.event not like 'SQL*Net%'
order by c.sql_id, a.machine
/
b) 检查异常 SQL 当前执行信息:
select sql_id,sql_profile
executions,plan_hash_value,
elapsed_time / DECODE(executions, 0, 1, EXECUTIONS) / 1000 elasp_time_ms,
buffer_gets / DECODE(executions, 0, 1, EXECUTIONS),
disk_reads / DECODE(executions, 0, 1, EXECUTIONS),
cpu_time / DECODE(executions, 0, 1, EXECUTIONS)/1000 cpu_time_ms,
last_load_time,last_active_time,
sql_text,child_number
from v$sql
where SQL_ID IN ('&sql_id');
检查 SQL 每次执行时间是否过长,逻辑读,物理读是否很大?建议对 elasped_time
cpu_time 时间粒度取 ms,不 s,因 SQL,业
ms 到几十 ms,如果用 s 作为单位则不利于判断 SQL 的性能变化
c) 查看异常 SQL 历史执行计划:
如果查看某个 SQL 的历史性能,需要考虑的视图是 DBA_HIST_SQLSTAT 视图,如下查看
某个 SQL 的历史执行信息:
of 11
5墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。