暂无图片
分享
Jason
2022-12-14
整体业务 SQL 速度慢,主机 CPU 使用率高

整体业务 SQL 速度慢,主机 CPU 使用率高

收藏
分享
2条回答
默认
最新
刘贵宾
  1. 确认数据库状态:
Copy##确认数据库进程正常。

ps –ef|grep dmserver

通过以下语句查询数据库状态:

Copyselect instance_name,status$ from v$instance;
  1. 检查数据库当前会话,是否有运行中的异常 SQL。如果有大量执行效率低的 SQL,确认是否可以限流、可以强制终止。如果可以强制终止,执行下一步。

(1)查询所有会话

Copyselect
sysdate,
SF_GET_SESSION_SQL(SESS_ID), --获取完整 sql
sess_id,
sess_seq,
sql_text,
state,
seq_no,
user_name,
trx_id,
create_time,
clnt_ip
from
v$sessions
where
state='ACTIVE';

(2)查询执行效率慢 sql

CopySELECT
*
FROM
(
SELECT
sess_id,
sql_text,
datediff (ss, last_recv_time, SYSDATE) Y_EXETIME,
SF_GET_SESSION_SQL (SESS_ID) fullsql,
clnt_ip
FROM
V$SESSIONS
WHERE
STATE = 'ACTIVE'
)
WHERE
Y_EXETIME >= 2;      --执行时间超 2s,可以自定义该时间
  1. 终止异常会话:

在数据库里面执行 SQL 语句:

Copysp_close_session(sess_id);
  1. 分析 SQL 执行计划,看是否有优化空间,进行 SQL 优化。
  2. 观察数据库活动会话是否正常。
暂无图片 评论
暂无图片 有用 0
暂无图片
Jason
问题已关闭: 问题已经得到解决
暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏