注册
达梦数据库学习14:达梦数据库状态监控语句汇总
专栏/技术分享/ 文章详情 /

达梦数据库学习14:达梦数据库状态监控语句汇总

Hi70KG 2023/08/22 3498 1 0
摘要

达梦数据库状态监控语句汇总

整理了一些常用的监控语句,适合定时监控或者ansiable监控或者zabbix自定义监控,欢迎大家留言指正和补充

线程监控

记录当前系统中活动线程的信息

SELECT * FROM V$THREADS;

记录当前正在等待的线程信息

SELECT * FROM V$LATCHES;

会话监控

当前活动连接数量太大说明业务量太大或者重连机制存在缺陷。 --查询当前所有会话数 select count(*) from v$sessions; --查看当前数据库中活动会话 select count(*) from v$sessions where state='ACTIVE'; --查看当前非活动会话 select count(*) from v$sessions where state='IDLE'; --结束会话 sp_close_session(sessid); --v$session中查出来的session id

找出已执行超过 2 秒的活动 SQL

执行时间较长的sql(根据现场情况定义慢sql)

找出已执行超过2秒的活动SQL,根据执行计划等详细内容进一优化

select * 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;

锁查询

select o.name,l.* from v$lock l,sysobjects o where l.table_id=o.id and blocked=1

阻塞查询

with locks as( select o.name,l.*,s.sess_id,s.sql_text,s.clnt_ip,s.last_send_time from v$lock l,sysobjects o,v$sessions s where l.table_id=o.id and l.trx_id=s.trx_id ), lock_tr as ( select trx_id wt_trxid,row_idx blk_trxid from locks where blocked=1), res as( select sysdate stattime,t1.name,t1.sess_id wt_sessid,s.wt_trxid, t2.sess_id blk_sessid,s.blk_trxid,t2.clnt_ip,SF_GET_SESSION_SQL(t1.sess_id) fulsql, datediff(ss,t1.last_send_time,sysdate) ss,t1.sql_text wt_sql from lock_tr s,locks t1,locks t2 where t1.ltype='OBJECT' and t1.table_id<>0 and t2.ltype='OBJECT' and t2.table_id<>0 and s.wt_trxid=t1.trx_id and s.blk_trxid=t2.trx_id) select distinct wt_sql,clnt_ip,ss,wt_trxid,blk_trxid from res;

锁超时查询阻塞会话

--锁超时查询阻塞会话 select a.sess_id,a.sql_text ,a.state,a.trx_id from v$trxwait b ,v$sessions a where b.wait_for_id=a.trx_id; --释放会话 select * from V$SESSIONS where trx_id=? ; --事物号 sp_close_session(sess_id); --会话号

查询死锁涉及的事务信息

select dh.trx_id,sh.sess_id,wm_concat(top_sql_text) from V$DEADLOCK_HISTORY dh,V$SQL_HISTORY sh where dh.trx_id=sh.trx_id and dh.sess_id=sh.sess_id group by dh.trx_id,sh.sess_id;

占用内存较多的sql

通过此句确定使用内存较大的SQL进行针对性的优化。该查询只能查询当前活动STMT上的语句消耗情况,历史情况查询V$SQL_STAT_HISTORY,该视图上保留1w行SQLSTAT历史信息

SELECT "SESSID", MAX_MEM_USED||'KB',SQL_TXT FROM V$SQL_STAT order by MAX_MEM_USED DESC;

用于监控数据库中各个内存组件使用状况

select name 内存池名称, org_size /1024/1024 参数文件配置大小m, reserved_size/1024/1024 实际使用大小m from v$mem_pool order by reserved_size desc;

表空间监控

SELECT Upper(F.TABLESPACE_NAME) "表空间名", D.TOT_GROOTTE_MB "表空间大小(M)", D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)", To_char(Round(( D.TOT_GROOTTE_MB - F.TOTAL_BYTES ) / D.TOT_GROOTTE_MB * 100, 2), '990.99') || '%' "使用比", F.TOTAL_BYTES "空闲空间(M)", F.MAX_BYTES "最大块(M)" FROM (SELECT TABLESPACE_NAME, Round(Sum(BYTES) / ( 1024 * 1024 ), 2) TOTAL_BYTES, Round(Max(BYTES) / ( 1024 * 1024 ), 2) MAX_BYTES FROM SYS.DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) F, (SELECT DD.TABLESPACE_NAME, Round(Sum(DD.BYTES) / ( 1024 * 1024 ), 2) TOT_GROOTTE_MB FROM SYS.DBA_DATA_FILES DD GROUP BY DD.TABLESPACE_NAME) D WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME ORDER BY 2 desc;

达梦社区技术https://eco.dameng.com

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服