科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道诊断Oracle数据库Hanging问题

诊断Oracle数据库Hanging问题

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

适用范围:Oracle任何平台上的企业版数据库 适用对象:所有数据库管理员和数据库支持人员 本文目的:这篇文章主要描述用于诊断数据库hanging和性能问题的方法和 工具,这些问题可能是由于调整问题。

作者:中国IT实验室 来源:中国IT实验室 2007年10月7日

关键字: ORACLE

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共6页)

    使用第三方应用软件的操作

    是否能在sqlplus中重现问题?如果不可以重现,那么就需要联系第三方应用软件供应商寻求帮助。

    数据关闭/启动过程中出现挂起

    关闭使用的什么参数?数据库是否crash了?如果是数据库启动挂起并且非正常关闭,但是在Alert日志文件中没有任何的错误,那么可能只是一个正常的实例恢复,如果在Alert文件中出现内部错误,系统错误,那么请尝试正常的关闭数据库然后启动。

    下面是一个正常实例恢复的时候在Alert日志文件中列出的相关信息:

    Starting ORACLE instance (normal)

    …………………

    Starting up ORACLE RDBMS Version: 10.2.0.1.0.

    System parameters with non-default values:

    ……………………

    Beginning crash recovery of 1 threads

    Started redo scan

    Completed redo scan

    120 redo blocks read, 46 data blocks need recovery

    Recovery of Online Redo Log: Thread 1 Group 2 Seq 143 Reading mem 0

    Completed redo application

    Completed crash recovery at

    Thread 1: logseq 143, block 4358, scn 512699

    46 data blocks read, 46 data blocks written, 120 redo blocks read

    SMON: enabling cache recovery

    SMON: enabling tx recovery

    Completed: ALTER DATABASE OPEN

    如果正常的关闭或者immediate关闭挂起,那么意味着Oracle正在等待激活的会话退出。

    在Unix系统上,还可以寻找正在挂起的启动或者关闭操作,然后trace pid.

    寻找错误:

    1) 检查AlertSID.log告警日志文件看看是否存在错误信息,此告警日志文件的具体路径位置可以由初始化参数中的background_dump_dest中获得或者在sqlplus中执行show parameter dest获得。

    2) 检查上述目录中的在数据库挂起时间生成的跟踪文件。查看里面的错误信息,不用搜索整个跟踪文件,相关的错误信息一般都是在文件的最开始出现。

    3) 如果是远程访问的问题,那么还需要检查sql*net跟踪目录下的跟踪文件。

    4) 检查系统信息的错误日志,在大多数的Unix下都是在/var/adm目录下。

    输出查看相关的V$视图:

    当数据库挂起的时候,执行下面的查询:

    SPOOL v_views.log;

    SELECT *

    FROM v$parameter;

    SELECT class, value, name

    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;

    /* 重复最后一个查询最少三遍,以确定哪个在重复等待*/

    SPOOL OFF;

 

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章