1-表空间告警
告警指标
表空间使用率超90%。
应急步骤
1.登陆数据库。使用达梦客户端工具manager或者使
用disql命令登陆。
2.检查数据库表空间使用率情况。通过以下SQL语句
查询:
恒丰银行办公类集中式数据库应急预案管理
select
t1.NAME tablespace_name,
t2.FREE_SIZE*SF_GET_PAGE_SIZE()/1024/1024||‘M’ free_space,
t2.TOTAL_SIZE*SF_GET_PAGE_SIZE()/1024/1024||‘M’
total_space ,
t2.FREE_SIZE*100/t2.total_size “%FREE”,
round((t2.total_size-t2.free_size)*100/t2.total_size) “%USED”,
t2.path,
t2.auto_extend,
t2.max_size
from
vDATAFILE t2
where
t1.ID=t2.GROUP_ID
order by “%FREE” desc ;
3.给使用率超过90%的表空间增加数据文件或扩大单
个数据文件大小。例如:通过上面2的sql发现TEST表空
间使用率超过90%,则给该表空间增加数据文件或扩大对应
数据文件的大小。
(1)增加数据文件,例如原来只有一个数据文件,现多
增加一个或多个数据文件,文件大小根据实际情况设置:
alter tablespace “TEST” add datafile ‘TEST01.dbf’ size 10240 autoextend on maxsize 30720;
(2)扩大单个数据文件的大小,例如原数据文件单个最
大20G,现扩大为30G一个:
alter tablespace “TEST” datafile ‘TEST.dbf’ autoextend on maxsize 30720;
恒丰银行办公类集中式数据库应急预案管理
2-数据库长事务告警
告警指标
SQL语句执行时间过长。
应急步骤
1.登陆数据库。使用达梦客户端工具manager或者使
用disql命令登陆。
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; --执行时间超2s,可以自定义该时间
3.记录该长事务sql语句。将长事务语句记录在txt
等文件以便后续优化。
恒丰银行办公类集中式数据库应急预案管理
4.关闭该长事务。
在数据库里面执行SQL语句:sp_close_session(sess_id);
5.优化相关长事务SQL语句。
3-整体业务速度慢,主机持续有CPU高
告警指标
执行如下语句,查看数据库服务进程,发现数据库主机
CPU使用率高。
top -p 数据库服务进程
应急步骤
1.确认数据库状态:
—确认数据库进程正常。
ps –ef|grep dmserver
—然后通过以下语句查询数据库状态:
select instance_name,status$ from vinstance;
2.检查数据库当前会话,是否有运行中的异常SQL。如
果有大量执行效率低的SQL,与应用确认是否可以限流、可
以强制终止。
3.查询所有会话:
select
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
vsessions
where
state=‘ACTIVE’;
4.查询执行效率慢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
VSESSIONS
WHERE
STATE = 'ACTIVE'
)
WHERE
Y\_EXETIME >= 2;--执行时间超2s,可以自定义该时间
5.终止异常会话:
恒丰银行办公类集中式数据库应急预案管理
在数据库里面执行SQL语句:sp\_close\_session(sess\_id);
6.分析SQL执行计划,看是否有优化空间。将优化建
议反馈应用、项目组进行紧急处理。
7.观察数据库活动会话是否正常。
4-整体业务速度慢,主机CPU不高
告警指标
整体业务速度慢,但执行“top -p 数据库服务进程”,
发现数据库主机CPU使用率不高。
应急步骤
1.确认数据库状态:
\---确认数据库进程正常:
ps –ef|grep dmserver
\---然后通过以下语句查询数据库状态:
select instance\_name,status from vinstance;
2.检查存储读写性能,检查网络传输速度。以下命令
供参考:
dd if=/dev/zero of=/home/test bs=8k count=1k oflag=dsync
3.检查数据库当前会话,是否有运行中的异常SQL。如
果有执行效率低的SQL,与应用确认是否可以限流、可以强
制终止。如果可以强制终止,执行下一步。
(1)查询所有会话:
select
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
vsessions
where
state=‘ACTIVE’;
(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
VSESSIONS
WHERE
STATE = 'ACTIVE'
恒丰银行办公类集中式数据库应急预案管理
)
WHERE
Y\_EXETIME >= 2;--执行时间超2s,可以自定义该时间
4.终止异常会话:
在数据库里面执行SQL语句:sp\_close\_session(sess\_id);
5.分析SQL执行计划,看是否有优化空间。将优化建
议反馈应用、项目组进行紧急处理。
6.观察数据库活动会话是否正常。
5- 数据库部分业务缓慢,CPU占用正常持续变化
告警指标
数据库部分业务缓慢,但执行“top -p 数据库服务进
程”,发现CPU占用正常持续变化。
应急步骤
1.检查存储读写性能,检查网络传输速度。以下命令
供参考:
dd if=/dev/zero of=/home/test bs=8k count=1k oflag=dsync
2.检查数据库当前会话,是否有运行中的异常SQL。查
询所有会话:
select
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
vsessions
where
state=‘ACTIVE’;
3.检查数据库执行SQL缓存信息,是否有异常SQL。
4.查看数据库topsql,是否有异常SQL:
select top 60 datediff(ss,last_send_time,sysdate)
TIME,sess_id,run_status,sql_text,AUTO_CMT,user_name,appname,CLNT_IP,trx_id from
vsessions order by TIME desc;
5.检查数据库SQL日志,通过关键字在SQL日志中查
找是否有异常SQL。
6.收集最近一天的SQL 日志,交由数据库技术人员进
行分析。
7.分析SQL执行计划,看是否有优化空间.将优化建议
反馈应用、项目组进行紧急处理。
8.观察数据库活动会话是否正常。
6- 已有连接可以正常工作,新连接无法建立
告警指标
应用程序访问数据库报“登录服务器失败”,但已有连
恒丰银行办公类集中式数据库应急预案管理
接可以正常工作。
应急步骤
1.检查数据库错误日志,确认是否有如下报错信息:
\---运行目录log 目录下,查看dm\_实例名\_年月.log 日志,是否有如下报错
main\_thread Reached the max session limit.
2.检查数据库当前会话数:
\---disql或客户端 使用SYSDBA用户登录数据库,执行查看总会话数
select count(\*) from vsessions;
3.检查数据库配置文件dm.ini中MAX_SESSIONS参数
值,当前会话数与MAX_SESSIONS参数值是否接近。
Cat dm.ini|grep MAX_SESSION
4.如接近,修改数据库dm.ini中MAX_SESSIONS参数
值,规范值为500-2000。
5.与应用确认窗口后,重启数据库实例。
6.检查参数值是否生效:
—disql或客户端 使用SYSDBA用户登录数据库
select * from vdm\_ini where para\_name=’MAX\_SESSIONS’;
7- 数据库数据文件存储可用空间不足
告警指标
执行df -lh发现数据文件存储使用率高。
应急步骤
1.检查文件系统使用率,确认数据库文件系统使用率
是否很高;
恒丰银行办公类集中式数据库应急预案管理
2.清理达梦数据目录。检查是否有非数据文件,若有,
和运维人员沟通确认文件是否可以删除;
3.和项目相关负责人沟通处理方法。讨论是否要采取
以下方案:1.关闭表空间自动扩展;2.增加存储;3.应用清
理数据;
4.恢复正常后检查数据库,应急处置结束。
8-部分业务无法执行提交操作
告警指标
部分业务无法执行提交操作,部分业务报错。
使用disql或客户端执行如下语句,无法进行commit
提交操作。
create table t1(a1 int);
insert into t1 values(1);
commit; ---提交失败
应急步骤
1.确认数据库状态。
\---确认数据库进程正常
ps –ef|grep dmserver
\---然后通过以下语句查询数据库状态:
select instance\_name,status from vinstance;
2.检查文件系统使用率,文件系统写满的情况下,会
导致事务提交失败,若文件系统使用率100%,转到5.7数据
库数据文件存储可用空间不足处理。
恒丰银行办公类集中式数据库应急预案管理
3.查看磁盘空间使用率:df -lh。
4.看表空间占用情况,表空间占用100%的情况下,会
导致事务提交失败,若表空间使用率100%,转到5.1数据库
表空间使用率高处理。
select
t1.NAME tablespace\_name,
t2.FREE\_SIZE\*SF\_GET\_PAGE\_SIZE()/1024/1024||'M' free\_space,
t2.TOTAL\_SIZE\*SF\_GET\_PAGE\_SIZE()/1024/1024||'M'
total\_space ,
t2.FREE\_SIZE\*100/t2.total\_size "%FREE",
round((t2.total\_size-t2.free\_size)\*100/t2.total\_size) "%USED",
t2.path,
t2.auto\_extend,
t2.max\_size
from
vTABLESPACE t1,
VDATAFILE t2
where
t1.ID=t2.GROUP\_ID
order by "%FREE" desc ;
5.查看文件系统是否只读,文件系统只读的情况下,
会导致事务提交失败。
6.若以上检查无法定位问题,请通知数据库工程师处
理。
7.恢复正常后执行检查。
恒丰银行办公类集中式数据库应急预案管理
9- 数据库主机活动会话数高
告警指标
执行如下语句,发现数据库主机活动会话数高,超过最
高会话数配置的90%:
select count(\*) from vsessions where state=‘ACTIVE’;
应急步骤
1.确认数据库状态;
—确认数据库进程正常。
ps –ef|grep dmserver
—然后通过以下语句查询数据库状态:
select instance_name,status$ from v$instance;
2.检查数据库当前会话,是否有运行中的异常SQL。可
以先查看所有会话来源,确认来源合法;
SELECT
SESS_ID
AS “会话 ID” ,
DECODE(STATE, ‘CREATE’, ‘创建’, ‘STARTUP’, ‘启动’, ‘IDLE’, '空闲
', ‘ACTIVE’, ‘活动’, ‘WAIT’, ‘等待’, ‘UNKNOWN’, ‘未知’) AS “会话状态” ,
CREATE_TIME
AS “会话创建时间” ,
TRX_ID
AS “事务 ID” ,
SQL_TEXT
AS “SQL” ,
USER_NAME
AS “当前用户” ,
CURR_SCH
AS “当前模式” ,
CLNT_TYPE
AS “连接类型” ,
DECODE(AUTO_CMT, ‘Y’, ‘是’, ‘N’, ‘否’)
AS “是否自动提交” ,
恒丰银行办公类集中式数据库应急预案管理
DECODE(DDL_AUTOCMT, ‘Y’, ‘是’, ‘N’, ‘否’)
AS “DDL 是否自动提交”,
APPNAME
AS “连接程序名” ,
CLNT_IP
AS “客户机 IP” ,
CLNT_HOST
AS “客户机名” ,
OSNAME
AS “客户机系统”
FROM
VSESSIONS;
3.查看当前锁阻塞,是否存在阻塞情况。与应用确认是
否可以终止异常锁头和异常会话;
select
tw.id as "事务ID" ,
tw.wait\_for\_id as "所等待的事务ID" ,
s.sess\_id as "会话ID" ,
ws.sess\_id as "所等待的会话ID",
s.sql\_text as "所执行的sql" ,
ws.sql\_text as "所等待的sql"
from
vtrxwait tw
left join vsessions ws
on
tw.wait_for_id=ws.trx_id;
4.终止异常会话;
SP_CLOSE_SESSION(); --根据 SESS_ID 杀掉会话
5.分析锁头会话SQL语句和运行中的异常SQL的执行
计划,看是否有优化空间;
–在异常sql前加explain执行,查看sql的执行计划
explain SQL_TEXT;
6.恢复正常后检查数据库是否还有过多的活动会话。
select count(*) from vsessions where state='ACTIVE';
恒丰银行办公类集中式数据库应急预案管理
10- 数据库主机服务器重启后,数据库实例没有正常启动
告警指标
数据库主机服务器重启后,数据库实例没有正常启动。
执行ps -ef|grep dms无相关进程,且数据库服务为停止状
态。
应急步骤
1.检查数据库错误日志,如果主机重启后没有错误信
息;
\--查看数据库是否有错误日志
tail -300f dm\_XXXXXX\_202211.log | grep ERROR
\--查看数据库是否有被异常关闭的日志
tail -300f dm\_XXXXXX\_202211.log | grep FATAL
2.数据库启动;
3.启动完成后,收集DM数据库信息。
\---确认数据库进程正常。
ps –ef|grep dmserver
\--查看日志是否有SYSTEM IS READY关键字,并切要注意查看到的关键字和启动时间匹配
tail -300f dm\_XXXXXX\_202211.log |grep 'SYSTEM IS READY'
\---然后通过以下语句查询数据库状态:
select instance\_name,status from v$instance;