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
  • 相关阅读:
    H5新增——html概述
    H5新增———html5概述
    ASP.NET Web API Demo OwinSelfHost 自宿主 Swagger Swashbuckle 在线文档
    如何写个死循环,既不独占线程,又不阻塞UI线程?
    C# 扩展TaskScheduler实现独立线程池,支持多任务批量处理,互不干扰,无缝兼容Task
    C# async await 异步执行方法封装 替代 BackgroundWorker
    巨坑!
    C# .NET Socket SocketHelper 高性能 5000客户端 异步接收数据
    一个简单的例子看明白 async await Task
    一个非常轻量级的 Web API Demo
  • 原文地址:https://www.cnblogs.com/itfriend/p/2351033.html
Copyright © 2011-2022 走看看