zoukankan      html  css  js  c++  java
  • 在运行suncluster的数据库服务器上遇到oracle故障的解决办法

        数据库服务器和主应用服务器做了双机,实现是Suncluster,,这种情况下,故障排查异常困难。

    由于Oracle服务被Cluster软件监控,服务出问题时,Cluster软件会尝试将共享盘阵切到另一个节点上,

    在该节点上启动Oracle服务,而由于Oracle库文件故障,导致Oracle无法启动成功,当尝试启动超时后,

    Cluster又会尝试在原节点上启动Oracle服务,从而导致共享盘阵和服务来两台机器上来回切换。
    由于oracle服务和相关磁盘文件始终处于运动状态,导致查看数据库日志和数据库排查故障异常困难。

    因此首先要停掉cluster停掉,以便排查数据库故障。

        而停SunCluster双机软件非常麻烦,必须连系统一起停掉后,再在ok状态下用boot -x重启系统才可以。

    所以我决定从资源组中将oracle服务这个资源暂停监控,以便cluster不再因为oracle服务出问题进行切换。

    1.查看资源组内的资源名称

      scstatus -g

    2. 停止oracle 资源切换
    停资源:

          scswitch -n -j oracle-lsnr-rs

          scswitch -n -j oracle-server-rs

    命令格式:scswitch {-e | -n}  -j resource[,...]
    现在数据库是否启动失败不会再导致双机切换。可以排查数据库故障了

    2.数据库故障排查

    启动数据库时,报以下错误:
    SQL> alter database open;
    alter database open
    *
    第 1 行出现错误:
    ORA-01113: 文件 1 需要介质恢复
    ORA-01110: 数据文件 1: '/oracle/oradata/dbnms/system01.dbf'

    尝试恢复数据库,执行以下命令:
    SQL> recover database
    完成介质恢复。

    SQL> alter database open;

    数据库已更改。

    数据库安全打开。

    原因分析:通常system01.dbf文件损坏,而数据库又处于非归档模式时,数据库基本上就无法挽救了。本次由于数据库redolog分了四个组,所以system01.dbf的变更信息还保存在redo.log中没有被覆盖到。所以在recover的时候,从redo04.log中找到了transaction数据,成功的恢复。

    所以要提高数据库的可靠性,数据库一定要起归档模式。实在不能起归档模式的情况下,也可增大redo.log文件的组数量,避免redo.log的信息被很快覆盖。

    附alert_dbnms.log的后台日志

    Tue Feb 14 13:54:03 2012
    ALTER DATABASE RECOVER database
    Tue Feb 14 13:54:03 2012
    Media Recovery Start
    parallel recovery started with 16 processes
    Tue Feb 14 13:54:12 2012
    Recovery of Online Redo Log: Thread 1 Group 4 Seq 325853 Reading mem 0
    Mem# 0 errs 0: /oracle/oradata/dbnms/redo04.log
    Tue Feb 14 13:54:45 2012
    Media Recovery Complete (dbnms)
    Tue Feb 14 13:54:47 2012
    Completed: ALTER DATABASE RECOVER database
    Tue Feb 14 13:54:59 2012
    alter database open
    Tue Feb 14 13:55:00 2012
    Beginning crash recovery of 1 threads
    parallel recovery started with 16 processes
    Tue Feb 14 13:55:00 2012
    Started redo scan
    Tue Feb 14 13:55:02 2012
    Completed redo scan
    274807 redo blocks read, 0 data blocks need recovery
    Tue Feb 14 13:55:02 2012
    Started redo application at
    Thread 1: logseq 325853, block 183394
    Tue Feb 14 13:55:02 2012
    Recovery of Online Redo Log: Thread 1 Group 4 Seq 325853 Reading mem 0
    Mem# 0 errs 0: /oracle/oradata/dbnms/redo04.log
    Tue Feb 14 13:55:04 2012
    Completed redo application
    Tue Feb 14 13:55:04 2012
    Completed crash recovery at
    Thread 1: logseq 325853, block 458201, scn 16922087765
    0 data blocks read, 0 data blocks written, 274807 redo blocks read
    Tue Feb 14 13:55:05 2012
    Thread 1 advanced to log sequence 325854
    Thread 1 opened at log sequence 325854
  • 相关阅读:
    FIFO深度计算
    php学习笔记--函数
    php学习笔记--类型转换
    php学习笔记--变量与常量
    css之伪对象-webkit-scrollbar
    8大排序算法
    正则表达式
    SDC Tcl package of Timequest
    面试经历之今日头条
    《Linux高性能服务器编程》学习总结(十三)——多进程编程
  • 原文地址:https://www.cnblogs.com/itfriend/p/2351033.html
Copyright © 2011-2022 走看看