现象:数据库hang,大量enqueue等待事件,大约20分钟后数据库数据库自己恢复
平台 oracle 9.2.0.7 + hpux 11.31收到告警:数据库断连和非空闲等待事件2948个,经查询bomc监控日志,2948个等待事件具体如下,因此原因基本可以确定为大量enqueue(锁等待)等待导致数据库异常,从p1=1397817350可以推断出lock mode为SQ,及sequence相关。Enqueue的进一步原因和相关应用sql还需要进一步确认。
SID SERIAL# OSUSER USERNAME SVRPROC PROCESS EVENT P1 P2 P3
---------- ---------- ------------------------------ ------------------------------ ------------ ------------ ---------------------------------------------------------------- ---------- ---------- ----------
25 12810 7832 enqueue 1397817350 149 0
63 40789 8166 enqueue 1397817350 149 0
59 32332 20857 enqueue 1397817350 149 0
43 60179 18928 enqueue 1397817350 149 0
399 29721 19165 enqueue
.。。。。。
经查询,enqueue类型为SQ
SELECT chr(to_char(bitand(1397817350,-16777216))/16777215)||
2 chr(to_char(bitand(1397817350, 16711680))/65535) "Lock",
3 to_char( bitand(1397817350, 65535) ) "Mode" from dual;
Lock Mode
-- -
SQ 6
SQL> select OWNER,OBJECT_NAME,OBJECT_TYPE from dba_objects where object_id=149;
OWNER OBJECT_NAME OBJECT_TYPE
------------------------------ -------------------- ------------------
SYS AUDSES$ SEQUENCE
通过收集故障时段的statspack报告,得出执行速度比较慢的语句,特别是含有squence的部分主要如下。但这些语句理论上该seq为循环模式,不应该导致enqueue等待。很可能由于连接数超过最大数,导致部分业务不能正常连接。p2=149看,应该是AUDSES$ 导致enqueue,而AUDSES$正是登录使用的sequeue,对应v$session中的AUDSID列
SQL> SELECT text FROM ALL_SOURCE where TYPE='FUNCTION' AND NAME='DSM_GET_MG_ID';
TEXT
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
function DSM_GET_MG_ID return varchar2 is
V_Result varchar2(32);
V_SEQ Varchar2(20);
begin
select dsm_seq_mgid.nextval into v_seq from dual;
V_Result :=to_char(sysdate,'YYYYMMDDHH24miSS')||v_seq;
return(V_Result);
end DSM_GET_MG_ID;
10 rows selected.
SQL> select * from dba_sequences where SEQUENCE_NAME = 'DSM_SEQ_MSGID';
SEQUENCE_OWNER SEQUENCE_NAME MIN_VALUE MAX_VALUE INCREMENT_BY C O CACHE_SIZE LAST_NUMBER
------------------------------ ------------------------------ ---------- ---------- ------------ - - ---------- -----------
CBOSS DSM_SEQ_MGID 100000 999999 1 Y Y 10 489050
继续分析,感觉sequeue不是最终的原因,查看系统日志,看出了别的问题
经过继续分析,昨日问题现在看根本原因应该是日志文件不能正常切换导致数据库hang,进而导致各种等待事件。已1_59448.dbf文件为例,17:01就开始归档,17:39:27才最终完成,正常情况下应该1分钟内完成,由于未知原因导致花费40分钟才完成一个日志文件的归档动作。我看了下相关文件系统,未出现归档表空间满的情况,故障时间点利用率只有15%。
Mon Mar 26 17:01:41 2012
ARC1: Evaluating archive log 3 thread 1 sequence 59448
ARC1: Unable to archive log 3 thread 1 sequence 59448
Log actively being archived by another process
Mon Mar 26 17:01:46 2012
Beginning log switch checkpoint up to RBA [0xe83a.2.10], SCN: 0x0b09.08dc9044
Thread 1 advanced to log sequence 59450
Current log# 2 seq# 59450 mem# 0: /dev/vgcboss02/rredo02
Mon Mar 26 17:01:46 2012
ARC1: Evaluating archive log 3 thread 1 sequence 59448
ARC1: Unable to archive log 3 thread 1 sequence 59448
Log actively being archived by another process
ARC1: Evaluating archive log 1 thread 1 sequence 59449
ARC1: Beginning to archive log 1 thread 1 sequence 59449
Creating archive destination LOG_ARCHIVE_DEST_1: '/cboss/arch/1_59449.dbf'
Mon Mar 26 17:04:49 2012
Completed checkpoint up to RBA [0xe83a.2.10], SCN: 0x0b09.08dc9044
Mon Mar 26 17:14:22 2012
ORACLE Instance cbossdb - Can not allocate log, archival required
Mon Mar 26 17:14:22 2012
ARCH: Connecting to console port...
Thread 1 cannot allocate new log, sequence 59451
All online logs needed archiving
Current log# 2 seq# 59450 mem# 0: /dev/vgcboss02/rredo02
Mon Mar 26 17:39:25 2012
ARC1: Completed archiving log 1 thread 1 sequence 59449
Mon Mar 26 17:39:25 2012
Beginning log switch checkpoint up to RBA [0xe83b.2.10], SCN: 0x0b09.09609366
NAME COMPLETION_TIME S
-------------------------------------------------------------------------------- -------------------- -
/cboss/arch/1_59436.dbf 2012/03/26 14:22:34 A
/cboss/arch/1_59437.dbf 2012/03/26 14:30:44 A
/cboss/arch/1_59438.dbf 2012/03/26 14:45:22 A
/cboss/arch/1_59439.dbf 2012/03/26 14:55:34 A
/cboss/arch/1_59440.dbf 2012/03/26 15:05:23 A
/cboss/arch/1_59441.dbf 2012/03/26 15:16:23 A
/cboss/arch/1_59442.dbf 2012/03/26 15:26:59 A
/cboss/arch/1_59443.dbf 2012/03/26 15:42:02 A
/cboss/arch/1_59444.dbf 2012/03/26 15:57:22 A
/cboss/arch/1_59445.dbf 2012/03/26 16:12:52 A
/cboss/arch/1_59446.dbf 2012/03/26 16:27:01 A
NAME COMPLETION_TIME S
-------------------------------------------------------------------------------- -------------------- -
/cboss/arch/1_59447.dbf 2012/03/26 16:40:53 A
/cboss/arch/1_59449.dbf 2012/03/26 17:39:25 A
/cboss/arch/1_59448.dbf 2012/03/26 17:39:27 A
/cboss/arch/1_59450.dbf 2012/03/26 17:40:32 A
/cboss/arch/1_59451.dbf 2012/03/26 17:51:06 A
/cboss/arch/1_59452.dbf 2012/03/26 18:06:51 A
/cboss/arch/1_59453.dbf 2012/03/26 18:33:36 A
/cboss/arch/1_59454.dbf 2012/03/26 19:12:46 A
/cboss/arch/1_59455.dbf 2012/03/26 19:54:10 A
/cboss/arch/1_59456.dbf 2012/03/26 20:33:57 A
总结分析:最终归档慢的原因没有找到,但原因却不是当初表现的seq问题,所以分析问题还需要全面进行系统查看。主机、数据库的日志是必须要分析的
分享到:
相关推荐
BLOG_Oracle_lhr_ 【等待事件】等待事件系列(5.1)--Enqueue(队列等待) .pdfBLOG_Oracle_lhr_ 【等待事件】等待事件系列(5.1)--Enqueue(队列等待) .pdf
oracle Enqueue Waits的介绍ppt,全面、权威
(八) Enqueue等待分析 41 (九) Latch分析 41 (十) Resource Limit分析 41 (十一) Top SQL语句 43 九、 数据库备份策略评估 44 (一) 备份 44 (二) 恢复 44 附录1:初始化参数文件 45 附录2:系统内核参数 46
buffer busy waits db file parallel write db file single write db file scattered read db file sequential read diret path write/read enqueue
看书笔记db file scattered read DB ,db file sequential read DB,free buffer waits,log buffer space,log file switch,log file sync 我们可以通过视图v$session_wait来查看系统当前的等待事件,以及与等待事件相...
针对数据库的启动和关闭、控制文件与数据库初始化、参数及参数文件、数据字典、内存管理、Buffer Cache与Shared Pool原理、重做、回滚与撤销、等待事件、性能诊断与SQL优化等几大Oracle热点主题,本书从基础知识入手...
使用wp_enqueue_scripts动作调用wp_enqueue_script()函数,或者使用admin_enqueue_scripts动作在管理页面调用wp_enqueue_script()函数,或者使login_enqueue_scripts动作在登录页面调用wp_enqueue_script()函数。...
Resque ::插件:: EnqueueLogging 一个轻量级的Resque插件,可以在作业入队时进行记录。 超级方便调试! :grinning_face_with_smiling_eyes:安装添加到您的Gemfile: gem "resque-enqueue-logging"用法只需扩展Resque...
但是,在发现TX锁时,我们如何鉴别是哪一种情况导致的呢?当存在TX等待队列时,如何找到锁所在的对象呢?记录锁这类锁是事务插入/删除/更新数据记录时加在记录的锁。对于插入操作,数据在未提交之前对其他事务是“不...
而数据库管理客户端还是原来旧版本的加密方式,主要在于安装MySQL8.0过程中的Authentication Method这一配置过程,有了不同的加密方式,所以如果选择强加密(默认应该是这种),就会出现上诉报错问题,那么只要修改...
Enqueue是麻省理工学院许可的开源项目,其持续发展完全取决于社区和我们客户的支持。 如果您想加入他们,请考虑: 消息队列捆绑 将消息队列组件集成到Symfony应用程序。 资源资源 由Forma-Pro开发 Forma-Pro是一家...
Enqueue是麻省理工学院许可的开源项目,其持续发展完全取决于社区和我们客户的支持。 如果您想加入他们,请考虑: 消息队列。 它包含构建在传输组件之上的高级功能。 客户端组件类型即插即用或消费组件大大简化了...
首先,它们的目的不一样,enqueue (即Lock,Oracle官方文档混合使用这两个名词,在等待事件里,可以看到大量的enqueue,其实就是lock)是为了解决业务层面的数据争用,而latch是为了解决内存资源的争用。...
它为所有与Enqueue相关的功能和软件包的生产开发和测试提供了一个友好的环境。 特征: 。 采用接口(受启发)。 经过战斗测试。 用于生产。 支持的运输 基于 基于 基于 支持。 支持。 临时队列支持。 设计...
enqueue_sidekiq_job RSpec块匹配器 安装 # Gemfile group :test do gem 'rspec-enqueue_sidekiq_job' end 用法 检查某个作业是否已排入队列。 expect { AwesomeWorker . perform_async } . to enqueue_sidekiq_...
wp-enqueue-util 一个方便的 WordPress 排队工具。
判断一个顺序栈 ST(元素个数最多为 StackSize)为空的条件是__A_ A. ST.top==-1 B. ST.top!==-1 C. ST.top!==StackSize D. ST.top==StackSize 6. 表达式 a*(b+c)-d 的后缀表达式是_abc+*b--___ 7.经过以下队列运算后,...
函数说明 将CSS样式文件加入队列。 函数用法 参数说明 $handle (字符串)(必需)样式表文件名。 默认值:None ...(字符串)(可选)WordPress根目录下的样式表路径 示例: ‘/css/mystyle.css’。...
这是一堆工厂,使您的生活更轻松。 真正的工作是由完成的。 它带有预配置的命令,事件和查询总线,为您提供方便。 或者,如果您要创建自己的文件,请不要使用它们。 传输可用于使您的消息排队或与第三方之间收发...