0
点赞
收藏
分享

微信扫一扫

数据库长时间卡顿优化

半夜放水 2022-01-26 阅读 86

最近在学习DBA相关的知识,也跟领导申请多参与一下相关的工作。非常幸运,没多久,就碰到一个数据库长时间卡住的问题。
先描述一下问题吧,oracle数据库,同一个服务器中安装了两个数据库实例,其中与我有关的那个数据库连续两天(也可能是多天,但是没人反馈)在半夜22:00左右开始出现卡死的情况,数据库可以使用,但是速度超慢。
把处理方案先写下来,没时间看细节的小伙伴可以直接拿走。

  1. **关闭call dbms_space.auto_space_advisor_job_proc ( )相关定时任务(公司领导做的解决方案)
  2. 增加redo日志大小跟数量**

接下来开始说分析过程。
第一天晚上出的时候,知道消息时间比较晚,这个数据库连接时会用websphare中间层进行连接,所以考虑可能时出现大量并发,导致连接池占用没有释放,造成了等待。
设置好连接池后,第二天同一时间问题复现。确定线程池没有问题,判断还是同时操作DML语句过多导致。
第三天查看awr日志
在这里插入图片描述
感觉是redo日志切换时发生了等待,也一样符合之前的判断,DML语句过多,redo日志满了,需要buffer cache刷脏,导致的等待。然后查了一下redo日志大小

select group#, bytes/1024/1024||'M' from v$log;

在这里插入图片描述
确实比较小,然后增加了redo日志大小,还有redo日志数量

col member format a50;
select * from v$logfile;
    GROUP# STATUS  TYPE    MEMBER                                             IS_
---------- ------- ------- -------------------------------------------------- ---
         3         ONLINE  D:\APP\ZC\ORADATA\HTBASE001\REDO03.LOG             NO
         2         ONLINE  D:\APP\ZC\ORADATA\HTBASE001\REDO02.LOG             NO
         1         ONLINE  D:\APP\ZC\ORADATA\HTBASE001\REDO01.LOG             NO
alter database add logfile group4('D:\APP\ZC\ORADATA\HTBASE001\REDO04.LOG') size 100M;
--创建5个

切换日志

alter system switch logfile;
alter system switch logfile;
alter system switch logfile;

手动切换检查点,让所有不用的redo日志,把状态从ACTIVE切换至inactive

alter system checkpoint;

在这里插入图片描述
对之前创建的小的redo日志进行删除

alter database drop logfile group 1;

所有删除后的redo需要在数据库中删除对应的文件,这个是后来看到别的大神提出的,重点关注,自己操作时没有注意这些
如果想要重新用之前的组号,把之前删除的组号,按照当前日志的大小重新创建一下,把最后多出的再进行删除,但是这个过程记得进入操作系统删除对应的日志文件!!!
领导当时提出的关闭定时任务的方案,查询的地方应该是通过消耗时间最长的sql分析的。
在这里插入图片描述
具体操作因为不是自己做的,就不记录了。
导出日志语句敲一下,多敲一次,多记一次。敲代码,是个熟练工种。

@?/rdbms/admin/awrrpt.sql
--类别
html
--前几天
1
--snap id 选择时间段
xxx
举报

相关推荐

0 条评论