• 并行回滚导致的数据库hang


    国庆节假日的最后一天,客户反馈数据库运行较慢,pl/sql连接数据库登陆直接卡死,请求排查原因。因为是内网环境,不太方便查看,同事在接到请求后指导客户进行排查,排查了服务器空间、alter日志、等待事件延迟等信息,并未看到有效的信息反馈。

    ##通过以下命令来查看当前等待事件的延迟,通过以下发现延迟较高以为是存储性能出现故障,询问是否检查存储,得到的反馈是已经联系浪潮相关人员,存储正常

    select * 
      from (
            select event, total_waits,total_timeouts,time_waited,average_wait
              from gv$system_event
              where time_waited > 0
              order by time_waited desc )
      where rownum <=10 ;

     通过以下命令查看数据库相关等待事件,发现以下信息,这里发现数据库正在等待undo record,怀疑是数据库正在进行回滚操作

    select event,count(*) from v$session_wait group by event order by 2

    到这里后我就申请通过内网跳转到目标数据库服务器,并对当前数据库进行查询,发现数据库执行相关命令异常缓慢

    #通过以下命令,发现数据库有80个进程,正在进行回滚,这里的80个进程和上面查询的db file sequential read等待事件的个数正好对应上。

    select spid from v$process where pid in (select pid from v$fast_start_servers);

    抓取了当前环境的ash报告,从这里也发现了当前数据库的db file sequential read在读取undo表空间

    这里我也发现了db file sequential read、db file parallel write和wait for a undo record同时出现。并对业务人员进行了询问,是否数据库执行了大事务,并做了回滚操作,得到肯定的回答

     

     通过以上信息,我判断数据库此时正在执行并行回滚,对应的进程数为80,将数据库相关资源耗尽,这里我的思路就是将并行回滚设置为串行回滚,也就是修改参数fast_start_parallel_rollback=false,并重启数据库

    alter system set fast_start_parallel_rollback=false scope=spfile;
    shutdown abort
    startup

    重启数据库后,数据库虽然仍在回滚,但是数据库已经没有之前卡顿了,其他业务也能正常进行

  • 相关阅读:
    Handlerbars基础笔记
    each()和eq()
    可编辑表格(Editable Table)
    垂直居中vertical-align
    CSS属性的私有前缀
    CSS进阶知识
    CSS预处理器们
    CSS3之伪元素选择器和伪类选择器
    CSS基础复习
    Plan
  • 原文地址:https://www.cnblogs.com/hanglinux/p/16776757.html
Copyright © 2020-2023  润新知