【Oracle】数据库hang 诊断

简介: 一 什么是数据库hang 1 用户不能登录数据库2 数据库不能正常工作3 select 1 from dual 不出结果4 不能正常完成建表操作二 数据库被锁住   1  一个或多个会话停止工作三 如果得知数据库hang 或者被锁   1 测试...
一 什么是数据库hang 
1 用户不能登录数据库
2 数据库不能正常工作
3 select 1 from dual 不出结果
4 不能正常完成建表操作

二 数据库被锁住
   1  一个或多个会话停止工作
三 如果得知数据库hang 或者被锁
   1 测试
   2 用户抱怨
   3 systemstate 或者hanganalze 操作查看被阻塞的会话
   4 一个查询hang 住不动
   5 会话耗费了大量的cpu
   6 ora-60 错误出现
四  上述现象可能会在以下操作之后:
   1 schema 变动
   2 数据库参数变动
   3 应用程序的改动
   4 数据库升级
五  理清 issue 发生的状况,你必须了解如下
   1 受影响的用户
   2 导致问题的事件的发生的顺序
   3 问题是从哪里/如何被发现的
   4 问题的表现
   5 什么正在工作
   6 最希望的或者最能够接受的结果是什么
   7 你做了什么操作来解决这个问题
六 验证工作 
   必须对数据库是否hang 或者lock 进行验证 否则会导致采取错误的动作。也有可能是os 的性能问题导致数据库表现为hang 住的!!
   select 1 from dual;

七 收集数据
  1 使用 LTOM 收集数据
  2 使用 OSW 收集系统性能数据
  3 使用 EM 

八 使用hanganalyze 和systemstate 收集数据
  DUMP进程状态可以使用: 
    alter sessions set events 'immediate trace name processstate level ';
  或者使用:
    oradebug setmypid
    oradebug ulimit
    oradebug dump processstate
当诊断数据库挂起时,可以使用DUMP命令转储整个系统状态:
alter sessions set events 'immediate trace name systemstate level ';
或:
oradebug setmypid
oradebug ulimit
oradebug dump systemstate
如果为了获取全面一点的信息,可以使用Level 10。
SQL> oradebug setmypid
SQL> oradebug unlimit
SQL> oradebug dump systemstate 10
另外如果系统挂起,无法用SQL*Plus连接,从Oracle 10g开始,可以使用sqlplus -prelim选项强制登录,然后即可进行系统状态信息转储:
sqlplus -prelim '/ as sysdba'
oradebug setmypid
oradebug unlimit;
oradebug dump systemstate 10
====================================
--for 单实例
SQL>ORADEBUG hanganalyze
--for RAC 实例
SQL>ORADEBUG setmypid
SQL>ORADEBUG setinst all
SQL>ORADEBUG -g def hanganalyze  
注意:如果Level过大的话会产生大量的跟踪文件并影响系统的I/O性能,Oracle建议不要采用3级以上的跟踪。
以sysdba 登录
oradebug setmypid
oradebug unlimit
oradebug -g  all hanganalyze 3
oradebug -g all dump systemstate 266
--等待2min
oradebug -g  all hanganalyze 3
oradebug -g all dump systemstate 266

默认搜集数据的步骤如下:
1 hanhanalyze  level 3
2 systemstate level 266
3 wait 60 sec
4 hanhanalyze  level 3
5 systemstate level 266

对于单实例 trace file 文件在 本地的user_dump_desttination 
对于rac 环境 trace file 文件在每个节点的 backgroup_dump_destination

九 获取v$性能数据
SPOOL v_views.log;

/*set linesize 130
col "Parameter" form. a50
col "Session Value" form. a30
col "Instance Value" form. a30
*/
select a.ksppinm  "Parameter",
       b.ksppstvl "Session Value",
       c.ksppstvl "Instance Value"
  from x$ksppi a, x$ksppcv b, x$ksppsv c
  where a.indx = b.indx
   and a.indx = c.indx
  order by 1 ;

SELECT class valuename FROM v$sysstat;

SELECT sid , id1, id2, type, lmode, request FROM v$lock;

SELECT l.latch#,
       n.name,
       h.pid,
       l.gets,
       l.misses,
       l.immediate_gets,
       l.immediate_misses,
       l.sleeps
  FROM v$latchname n, v$latchholder h, v$latch l
  WHERE l.latch# = n.latch#
   AND l.addr = h.laddr(+);

SELECT * FROM v$session_wait ORDER BY sid ;
/* repeat last query 3 times - we want to see who's repeatedly waiting*/
SPOOL OFF;

获取了数据之后 就是分析了!!

目录
相关文章
|
2月前
|
存储 Oracle 关系型数据库
Oracle数据库的应用场景有哪些?
【10月更文挑战第15天】Oracle数据库的应用场景有哪些?
175 64
|
29天前
|
SQL Oracle 关系型数据库
Oracle数据库优化方法
【10月更文挑战第25天】Oracle数据库优化方法
38 7
|
29天前
|
Oracle 关系型数据库 数据库
oracle数据库技巧
【10月更文挑战第25天】oracle数据库技巧
27 6
|
29天前
|
存储 Oracle 关系型数据库
Oracle数据库优化策略
【10月更文挑战第25天】Oracle数据库优化策略
21 5
|
2月前
|
存储 Oracle 关系型数据库
数据库数据恢复—Oracle ASM磁盘组故障数据恢复案例
Oracle数据库数据恢复环境&故障: Oracle ASM磁盘组由4块磁盘组成。Oracle ASM磁盘组掉线 ,ASM实例不能mount。 Oracle数据库故障分析&恢复方案: 数据库数据恢复工程师对组成ASM磁盘组的磁盘进行分析。对ASM元数据进行分析发现ASM存储元数据损坏,导致磁盘组无法挂载。
|
2月前
|
监控 Oracle 关系型数据库
Oracle数据库性能优化
【10月更文挑战第16天】Oracle数据库性能优化是
32 1
|
2月前
|
存储 Oracle 关系型数据库
【数据库-Oracle】《Oracle 数据库探秘:基础知识点全攻略》
《Oracle 数据库探秘:基础知识点全攻略》深入介绍 Oracle 数据库的基础知识点,包括数据类型、表结构、查询语句等。通过详细讲解、代码示例和流程图,帮助读者快速掌握 Oracle 数据库的基本操作,为数据库开发和管理打下坚实基础。
41 0
|
3月前
|
Oracle 关系型数据库 数据库
数据库数据恢复—Oracle数据库文件出现坏块的数据恢复案例
打开oracle数据库报错“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。 数据库没有备份,无法通过备份去恢复数据库。用户方联系北亚企安数据恢复中心并提供Oracle_Home目录中的所有文件,急需恢复zxfg用户下的数据。 出现“system01.dbf需要更多的恢复来保持一致性”这个报错的原因可能是控制文件损坏、数据文件损坏,数据文件与控制文件的SCN不一致等。数据库恢复工程师对数据库文件进一步检测、分析后,发现sysaux01.dbf文件损坏,有坏块。 修复并启动数据库后仍然有许多查询报错,export和data pump工具使用报错。从数据库层面无法修复数据库。
数据库数据恢复—Oracle数据库文件出现坏块的数据恢复案例
|
2月前
|
SQL 存储 Oracle
Oracle数据库SQL语句详解与应用指南
在数字化时代,数据库已成为各类企业和组织不可或缺的核心组件。Oracle数据库作为业界领先的数据库管理系统之一,广泛应用于各种业务场景。掌握Oracle数据库的SQL语句是数据库管理员、开发人员及运维人员的基本技能。本文将详细介绍Oracle数据库SQL语句的基本概念、语法、应用及最佳实践。一、Or
61 3
|
3月前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—异常断电导致Oracle数据库数据丢失的数据恢复案例
Oracle数据库故障: 机房异常断电后,Oracle数据库启库报错:“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。数据库没有备份,归档日志不连续。用户方提供了Oracle数据库的在线文件,需要恢复zxfg用户的数据。 Oracle数据库恢复方案: 检测数据库故障;尝试挂起并修复数据库;解析数据文件。

推荐镜像

更多