暂无图片
数据库11G RAC经常发生阻塞现象,无法定位源头
我来答
分享
黄伟波
2020-03-13
数据库11G RAC经常发生阻塞现象,无法定位源头
暂无图片 30M

数据库环境:oracle11g RAC
这段时间数据库经常过几天就发生阻塞现象,每次杀掉阻塞的进程后其他被阻塞进程就开始正常运行,但是过几天又会有这类情况发生。查看数据库定时任务也没发现该任务,而且该任务进程一直只会在第一个节点出现。
涉及sql查询```language

--```注: 如果state值为Waiting,那么wait_time值无用。Second_in_wait值是实际的等待时间(单位:秒)。
--如果state值为Wait unknow time,那么wait_time值和Second_in_wait值都无用。
--如果state值为Wait short time,那么wait_time值和Second_in_wait值都无用。
--如果state值为Waiting known time,那么wait_time值就是实际等待时间(单位:秒),Second_in_wait值无用。
SELECT INST_ID "实例ID",
       SID,
       SERIAL#,
       PROCESS,
       USERNAME,
       SCHEMANAME,
       OSUSER,
       MACHINE,
       PROGRAM,
       SQL_ID,
       MODULE,
       ACTION,
       LOCKWAIT,
       BLOCKING_SESSION_STATUS,
       BLOCKING_INSTANCE "阻塞会话实例",
       BLOCKING_SESSION "阻塞会话SID",
       EVENT "等待事件",
       WAIT_CLASS,
       LOGON_TIME,
       CASE
         WHEN STATE = 'WAITING' THEN
          SECONDS_IN_WAIT
         WHEN STATE = 'WAITING KNOWN TIME' THEN
          WAIT_TIME
       END AS "等待时间(s)",
       STATE
  FROM GV$SESSION
 WHERE USERNAME IS NOT NULL
   AND STATUS = 'ACTIVE'
   AND LOCKWAIT IS NOT NULL;

```--查看阻塞会话SID信息(holder)
--```考虑到多实例会存在sid一致的情况,所以加了实例区分
SELECT INST_ID "实例ID",
       SID,
       SERIAL#,
       PROCESS,
       USERNAME,
       SCHEMANAME,
       OSUSER,
       MACHINE,
       PROGRAM,
       SQL_ID,
       MODULE,
       ACTION,
       LOCKWAIT,
       BLOCKING_SESSION_STATUS,
       BLOCKING_INSTANCE,
       BLOCKING_SESSION "阻塞会话SID",
       EVENT "等待事件",
       WAIT_CLASS,
       LOGON_TIME,
       CASE
         WHEN STATE = 'WAITING' THEN
          SECONDS_IN_WAIT
         WHEN STATE = 'WAITING KNOWN TIME' THEN
          WAIT_TIME
       END AS "等待时间(s)",
       STATE
  FROM GV$SESSION
 WHERE INST_ID = '&INSTANCE'
   and SID = '&SID';

复制

–监控图监控图.png

–被阻塞(waiter)相关截图被阻塞lock.png

被阻塞lock2.png
–阻塞源头信息(waiter)
阻塞源头.png
–定时任务截图
定时任务截图.png

问题:看阻塞源头上写着dbms_scheduler,以为是定时任务,但是在定时任务dba_scheduler和dba_jobs是找不到定时任务(business_data_purge)的,而且这个任务是大概几天会跑一次,每次只会在第一个实例上运行,无法定位到具体在哪个位置。
前几天试过把被阻塞的定时任务(purge_auto_mark)停了,但是今天发现应用很多进程还是被阻塞源头的任务(business_data_purge)阻塞了

我来答
添加附件
收藏
分享
问题补充
5条回答
默认
最新
黄伟波
升级问题到: 紧急故障
暂无图片 评论
暂无图片 有用 0
打赏 0
黄伟波
暂无图片 评论
暂无图片 有用 0
打赏 0
你好我是李白

https://www.modb.pro/db/1650
可以看看这篇文档,看看对你有没有帮助

暂无图片 评论
暂无图片 有用 0
打赏 0
黄伟波

我的问题不是在于这个等待事件,而是不知道是不是应用还是具体在哪个位置?没法去停这个任务…

暂无图片 评论
暂无图片 有用 0
打赏 0
Uncopyrightable

升级数据库再优化吧

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
如何授权可以让普通用户执行dbms_spm 包, 不能授权dba角色?
回答 1
已采纳
GRANTADMINISTERSQLMANAGEMENTOBJECTtoUSER;
undo 的表空间 ,有什么命令让他赶紧写进磁盘 然后释放空间么?
回答 1
及时提交就行。不过释放空间是指的是释放undo的使用率。物理文件不释放。需要你新建一个文件,然后切换。
为什么执行完 删除分区 分区还是存在啊?
回答 2
已采纳
这个是清空分区表数据,表分区可以不用删除的,没影响。
不完全恢复某个pdb报错误
回答 3
验证了下setuntiltime"TODATE('2023041222:11:00','YYYYMMDDHH24:MI:SS')"和setuntilscn1476006这两种方式是可以做不完全恢复,但
Oracle的行级锁有开销吗?
回答 1
已采纳
在Oracle中,行级锁没有相关的开销,一点都没有。不论你是有1个行锁,还是1000000个行锁,专用于锁定这个信息的资源数都是一样的。当然,与修改1行相比,修改1000000行要做的工作肯定多得多,
在抓取awrrpt报告时报错,报错如图所示
回答 5
那就是没有生成awr报告,还有begin和end是必须输的。
oracle 19c 单实例 awr不自动收集
回答 5
前几天维护的时候晚上重启了一下,这几天忘记看了,现在awr收集正常了,打扰大家了
rhel8.4安装了19c,客户端无法连接
回答 3
已采纳
是虚拟机的问题,主机无法连接虚拟机。将网络模式改为桥接模式,虚拟机的IP跟主机选为一个网段,则连接成功了。谢谢大家
oracle11G数据库,经常出现ORA-04031错误。该如何优化?
回答 2
已采纳
1、问题原因1种:SGA区域比较小,可以将SGA区域的值,再设置大一些(至少达到服务器的内存的60%),然后在观察一段时间,看是否会在出现。若继续出现,那么要考虑以下几种因素,特别是AWRTOPSQL
Oracle 建表的时候没有创建子分区, 如果想增加只能重新创建表吗?
回答 1
已采纳
12c开始可以直接modify
问题信息
请登录之后查看
附件列表
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~