Oracle Hang Manager
名词术语
1.Cross Boundary Hang
交叉边界hang。在12.1.0.1中,hang manager可以检测database和asm之间的hang。
2.Deadlock or Closed Chain
死锁或关闭链条。打破死锁链条的唯一方法是让其中某些会话完成其工作或被终止。
3.Hang or Open Chain
hang或开放链条。从hang manager角度讲,hang就是一些会话无法进一步处理工作,这不是死锁或循环链条。hang or open chain有一个根本阻塞者,阻塞了这个链条中的其他所有会话,也包含一个被其它会话阻塞的最终等待者。
4.Immediate Waiter
在open chain中,该会话被产生hang的根本会话所阻塞。
5.Quality of Service (QoS) Management
QoS(服务质量管理)是数据库中自动的、基于策略的监控整个系统的负载请求的服务。管理应用需要的资源、调整系统配置,保障应用的性能。
6.Self-Resolved Hang
自处理的hang。被hang manager检测到的已经不再存在的hang或死锁。
Hang Manager
在诊断数据库问题的时候,经常会遇到数据库/进程hang住的问题。对于hang的问题,一般来说,常见的原因有以下两种:
1.死锁(cycle)。对于这种hang, 除非循环被打破,问题会永远存在。
2.某个堵塞者(blocker)进程在持有了某些资源后堵塞了其他进程,其它进程无法获取资源。
可以把blocker分为直接堵塞进程(immediate blocker)和根堵塞进程(root blocker)。而root blocker在通常情况下会处于两种状态。
(1)根堵塞进程处于空闲状态,对于这种情况,终止这个进程能够解决问题。
(2)根堵塞进程正在等待某些和数据库无关的资源(例如:等待I/O),对于这种情况,终止这个进程也许能解决问题。但是,从数据库的角度来讲,这已经超出了数据库的范畴。
Hang Manager是从10.2.0.1被引进的。主要用途是检测和处理hang问题。随着版本的增加,功能也不断的被完善加强。但是,实际上从11.2.0.2开始,Hang Manager才实际开始解决hang问题,通过终止产生hang的根本会话或进程来实现。
Hang Manager只在RAC数据库中生效。
默认情况下,hang manager不会终止一个实例或者将实例从集群环境中剔除;也不会自动解决其检测到的hang问题。目前也不能解决ASM hang问题。
从12.1.0.1开始,如果rac集群中的QoS处于active状态,hang manager会使用QoS提供的附加信息来决定是否应该忽略或者解决一个hang问题。 如果QoS倾向于hang manager解决hang问题,hang manager会比平时使用更少的时间来检测和处理hang问题,而不是延迟处理。
在12.1.0.1之前,hang只会在数据库内部或者asm中被检测。从12.1.0.1开始,hang manager会检测数据库和asm之间产生的hang。
当hang manager 解决hang问题时,会在alert日志中给出一个ora-32701事件:
ORA-32701: Possible hangs up to hang ID=24 detected
Incident details in: /ee/oracle/oracle_base/diag/rdbms/orcl/orcl1/incident/incdir_1944098/orcl1_dia0_34930694_i1944098.trc
DIA0 terminating blocker (ospid: 28311778 sid: 3398 ser#: 1) of hang with ID = 24
requested by master DIA0 process on instance 2
Hang Resolution Reason: Automatic hang resolution was performed to free a
critical database process.
by terminating session sid:3398 with serial # 1 (ospid:28311778)
hang manager的基本步骤
1.检测阶段(DETECT)
数据库会分配一部分内存空间用于存放hanganalyze dump信息。这部分内存空间在每个节点的数据库实例上都存在。 该阶段扫描实例的所有本地会话,检测是否有可能hang的会话。 每次扫描被称作一个snap。默认保存3个snap,每个snap间隔32秒,时间间隔由隐含参数"_hang_detection_interval"决定。 一旦检测到一个或多个会话出现在3个snap中(这些会话就被认为可能是hang的会话),就会向master DIA0进程发起REQHM请求,进入HA阶段;如果没有,检测到hang的会话,HM继续保留在该阶段,除了阶段性的进入HAONLY阶段。
2.HA阶段(Hang Analysis)
检测到hang的会话后,发起REQHM请求的DIA0进程将所有检测到的会话信息发送给master DIA0进程。 全局的hang analysis被启动,创建wait for graphs(WFGs),这个过程可能会跨节点,找出本地或远程的blocker。本阶段完成后进入下一阶段,分析阶段。
负责搜集这些dump信息的后台进程是DIA0(这个进程从11g才被引入)。默认情况下每3秒钟搜集本地级别hanganalyze dump, 每10秒搜集全局级别hanganalyze dump 每个实例都会拥有自己的DIA0进程,负责完成本地的hang分析。但是,对于RAC数据库,很多hang的情况会包含多个实例的进程。所以需要一个实例上的DIA0进程作为master,来对多个实例搜集到的信息进行分析。对于11g版本,节点号最小的实例的DIA0进程会成为HM的master进程。当然,在实例级别发生了重新配置后,主(master)DIA0 进程会重新在存在的实例中重新被选举出来
3.分析阶段(ANALYZE)
将root waiter和immediate waiter会话信息和Hang Signature Cache(HSC)进行匹配。如果找到匹配的记录,则更新最新的时间和计数;如果没有匹配的,创建一个新的hang记录。完成该阶段后,HM回到检测阶段。 确认阶段是由其它单独参数控制的。
4.确认阶段(verify)
被怀疑会话所在的节点会检查这些会话是否还在hang状态,并将信息发送给master DIA0进程。如果这些会话还在,确认该会话是hang的。然后进入victim阶段。
5.处理阶段(victim)
如果隐含参数"_HANG_RESOLUTION_SCOPE"值为process,HM会终止会话,如果会话终止失败,就会终止进程;
如果隐含参数"_HANG_RESOLUTION_SCOPE"值为instance,并且victim是关键的后台进程,该实例会被kill掉。
整体步骤:
具体步骤:
hang manager信息查看:
SQL> select * from v$hang_info;
SQL> select * from v$hang_session_info;
SQL> select * from gv$hang_statistics; INST_ID STATISTIC# NAME VALUE
---------- ---------- --------------------------------------------- ----------
1 0 number of deadlocks detected and ignored 0
1 1 number of hangs detected 0
1 2 number of local hangs 0
1 3 number of global hangs 0
1 4 number of transient hangs 0
1 5 hangs ignored due to high CPU on root's node 0
1 6 hangs ignored due to high IO on root's node 0
1 7 hangs ignored due to application contention 0
1 8 hangs ignored due to long running operations 0
1 9 hangs monitored due to archiving issues 0
1 10 hangs ignored due to archiving issues 0
1 11 hangs ignored, blocked by remote database 0
1 12 hangs ignored due to SQL parsing 0
1 13 hangs ignored due to dumping system state 0
1 14 hangs ignored, instance termination required 0
1 15 hangs ignored, only one active instance 0
1 16 number of explicitly resolved hangs 0
1 17 number of self-resolved hangs 0
1 18 total self-resolved hang time in seconds 0
1 19 minimum self-resolved hang time in seconds 0
1 20 maximum self-resolved hang time in seconds 0
1 21 number of HSC matched hangs 0
1 22 hangs resolved due to instance termination 0
2 0 number of deadlocks detected and ignored 0
2 1 number of hangs detected 0
2 2 number of local hangs 0
2 3 number of global hangs 0
2 4 number of transient hangs 0
2 5 hangs ignored due to high CPU on root's node 0
2 6 hangs ignored due to high IO on root's node 0
2 7 hangs ignored due to application contention 0
2 8 hangs ignored due to long running operations 0
2 9 hangs monitored due to archiving issues 0
2 10 hangs ignored due to archiving issues 0
2 11 hangs ignored, blocked by remote database 0
2 12 hangs ignored due to SQL parsing 0
2 13 hangs ignored due to dumping system state 0
2 14 hangs ignored, instance termination required 0
2 15 hangs ignored, only one active instance 0
2 16 number of explicitly resolved hangs 0
2 17 number of self-resolved hangs 0
2 18 total self-resolved hang time in seconds 0
2 19 minimum self-resolved hang time in seconds 0
2 20 maximum self-resolved hang time in seconds 0
2 21 number of HSC matched hangs 0
2 22 hangs resolved due to instance termination 0 46 rows selected. SQL>
相关参数:
NAME VALUE ISDEFAULT ISMOD ISADJ
-------------------------------------------------- ------------------------------ --------- ---------- -----
_hang_analysis_num_call_stacks 3 TRUE FALSE FALSE
_hang_base_file_count 5 TRUE FALSE FALSE
_hang_base_file_space_limit 10000000 TRUE FALSE FALSE
_hang_bool_spare1 TRUE TRUE FALSE FALSE
_hang_delay_resolution_for_libcache TRUE TRUE FALSE FALSE
_hang_detection_enabled TRUE TRUE FALSE FALSE
_hang_detection_interval 32 TRUE FALSE FALSE
_hang_hang_analyze_output_hang_chains TRUE TRUE FALSE FALSE
_hang_hiload_promoted_ignored_hang_count 2 TRUE FALSE FALSE
_hang_hiprior_session_attribute_list TRUE FALSE FALSE
_hang_ignored_hang_count 1 TRUE FALSE FALSE
_hang_ignored_hangs_interval 300 TRUE FALSE FALSE
_hang_int_spare2 FALSE TRUE FALSE FALSE
_hang_log_verified_hangs_to_alert FALSE TRUE FALSE FALSE
_hang_long_wait_time_threshold 0 TRUE FALSE FALSE
_hang_lws_file_count 5 TRUE FALSE FALSE
_hang_lws_file_space_limit 10000000 TRUE FALSE FALSE
_hang_monitor_archiving_related_hang_interval 300 TRUE FALSE FALSE
_hang_msg_checksum_enabled TRUE TRUE FALSE FALSE
_hang_resolution_allow_archiving_issue_termination TRUE TRUE FALSE FALSE
_hang_resolution_confidence_promotion FALSE TRUE FALSE FALSE
_hang_resolution_global_hang_confidence_promotion FALSE TRUE FALSE FALSE
_hang_resolution_policy HIGH TRUE FALSE FALSE
_hang_resolution_promote_process_termination FALSE TRUE FALSE FALSE
_hang_resolution_scope PROCESS TRUE FALSE FALSE
_hang_short_stacks_output_enabled TRUE TRUE FALSE FALSE
_hang_signature_list_match_output_frequency 10 TRUE FALSE FALSE
_hang_statistics_collection_interval 15 TRUE FALSE FALSE
_hang_statistics_collection_ma_alpha 30 TRUE FALSE FALSE
_hang_statistics_high_io_percentage_threshold 15 TRUE FALSE FALSE
_hang_verification_interval 46 TRUE FALSE FALSE 31 rows selected. SQL>
Oracle Hang Manager的更多相关文章
- Oracle 11g 新特性 – HM(Hang Manager)简介
在这篇文章中我们会对oracle 11g 新特性—hang 管理器(Hang Manager) 进行介绍.我们需要说明,HM 只在RAC 数据库中存在. 在我们诊断数据库问题的时候,经常会遇到一些数据 ...
- oracle Net Manager 服务命名无法配置(无法新建、添加服务名)
今天在配置oracle Net Manager 配置服务命名的时候总是无法配置,以前配置的服务名都显示不出来,然后点击绿色添加按钮也没反应,因为先前我修改了oracle\product\10.2.0\ ...
- Oracle Enterprise Manager打不开的解决方法
之前OEM一直可以打开,但今天上班发现打不开了,输入http://localhost:1158/em 提示该网页无法打开. 那么检查一下: cmd进命令行 C:\Documents and Setti ...
- Oracle DB 通过 Oracle Enterprise Manager注册要使用的恢复目录
通过 Oracle Enterprise Manager 注册要使用的恢复目录. a) 在 EM 中,导航到“Availability > Recovery Catalog Setting ...
- 【Oracle连接字符串】【Oracle Net Manager 服务命名配置】【PL/SQL 登陆数据库】
连接数据库的几个重要参数: 1. 登陆用户名:user: 2. 登录密码:password: 3. 存放数据库的服务器地址(server_ip)和端口(server_port): 4. 数据库名(db ...
- How to Install/Deinstall Oracle Workspace Manager (文档 ID 263428.1)
In this Document Goal Solution References APPLIES TO: Workspace Manager - Version 9.0.1.0 to 1 ...
- Oracle Enterprise Manager Cloud Control 12c R4 安装配置
准备软件 em12.1.0.4_linux64_V45344-01.zip em12.1.0.4_linux64_V45345-01.zip em12.1.0.4_linux64_V45346-01. ...
- Oracle Net Manager 服务命名配置以及用PL/SQL 登陆数据库
我们知道,要连接一个数据库需要知道四个参数: 1. 登陆用户名:user: 2. 登录密码:password: 3. 存放数据库的服务器地址(server_ip)和端口(server_port): 4 ...
- oracle net manager 数据传输安全
oracle net manager来加密客户端与数据库之间或中间件与 数据库之间的网络传输数据 第一步:开始-->所有程序 -->oracle --> 配置和移植工具 --> ...
随机推荐
- 获取在attr.xml中声明的主题样式
在换肤时,先在attr.xml中定义Resource的属性名,再到stytle中,根据不同的主题,给属性赋值. 在布局文件中可直接以 android:background="?attr/a ...
- DNS:www.flickr.com
203.84.197.9 203.84.197.25 203.84.197.26 203.84.197.27
- 类型强转(type cast)
类型转换有 c 风格的,当然还有 c++风格的.c 风格的转换的格式很简单(TYPEEXPRESSION),但是 c 风格的类型转换有不少的缺点,有的时候用 c 风格的转换是不合适的, 因为它可以在任 ...
- RT-Thread的CPU使用率计算
CPU 的使用率一般是我们比较关心的问题,在这里我们就用空闲线程的钩子函数去统计 CPU 的使用率,并通过串口打印出来.首先我们在初始化线程中设置好钩子函数,并在 LED 线程中给系统人为的加入很多“ ...
- 解决ORA-00054资源正忙的问题
有时候在drop表或者其他对象的时候,会遇到ORA-00054:资源正忙,要求指定NOWAIT(中文字符集)或者ORA-00054: resource busy and acquire with NO ...
- Windows2008 R2修改3389端口教程
默认的3389端口有必要修改么,这个端口,我建议是修改一下为好,最好改大一点,这样安全性会高一点,但然面对高手级攻击,就没有用了,通常高手级过NMAP扫描一个你的IP地址,端便全然显现出来了,好了,下 ...
- Bootstrap页面布局19 - BS提示信息
提示信息的设计 提示信息的类: .alert:提示信息类 .alert alert-danger: .alert alert-error: .alert alert-success: .alert a ...
- [转]通过Mesos、Docker和Go,使用300行代码创建一个分布式系统
http://www.csdn.net/article/2015-07-31/2825348 [编者按]时下,对于大部分IT玩家来说,Docker和Mesos都是熟悉和陌生的:熟悉在于这两个词无疑已成 ...
- Oracle存储过程java 调用
1.nest表组合成结果集,然后以游标变量的形式返回 --创建类型 create or replace package mytest is -- Author : ADMINISTRATOR -- ...
- Redis学习笔记--五种数据类型的使用场景
String 1.String 常用命令: 除了get.set.incr.decr mget等操作外,Redis还提供了下面一些操作: 获取字符串长度 往字符串append内容 设置和获取字符串的某一 ...