1、打开sql跟踪日志,登录数据库执行以下脚本(详细情况请查看博客DM8 开启 sql跟踪日志)
sp_set_para_value(1,'SVR_LOG',1);
2、开启et,也就是可以查看下面的主要耗时慢的执行符
sp_set_para_value(1,'ENABLE_MONITOR',1);
sp_set_para_value(1,'MONITOR_SQL_EXEC',1);
sp_set_para_value(1,'MONITOR_TIME',1);
3、查询慢sql
--压测过程中执行以下sql,查询出慢sql
SELECT a.sess_id || ',' || a.SESS_SEQ sid,
a.user_name,
b.sql_id sql_id,
b.HASH_VALUE plan_hash_value,
datediff(ss, a.last_send_time,sysdate) last_ela,
a.sql_text sql_text
FROM V$SESSIONS a left join v$sqltext b
on a.SQL_TEXT=b.SQL_TEXT
WHERE a.STATE='ACTIVE' and a.user_name!='SYSDBA' order by last_ela desc;
根据上图中的sql_id:1510查询主要耗时在哪一步,如下图sql
--查询sql主要耗时在哪
select
a.*
from
V$SQL_NODE_HISTORY a
left join V$SQL_HISTORY b
on
a.exec_id = b.exec_id
where
b.sql_id='1510'
order by
a.exec_id
查询得出,主要耗时是218和219比较耗时
select * from V$SQL_NODE_NAME where "TYPE$" IN (218,219)
去sql定位
进行优化,创建条件组合索引
优化完成后关闭sql跟踪日志,登录数据库执行以下sql
sp_set_para_value(1,'SVR_LOG',0);
更多资讯请访问:首页 | 达梦云适配中心