oracle错误导致Linux系统可以ping但不能ssh吗?

时间:2013-06-20 04:15:13

标签: linux oracle ssh ping

到目前为止,我们已经两次看到同样的奇怪问题了。

首先,我们发现我们的远程Linux服务器响应ping,但我们无法ssh。我们去了服务器,发现系统没有响应,不得不重新启动它。重新启动后,我们检查了日志。我们在/var/log/message日志中找不到任何内容,但我们在Oracle *_alert.log文件中发现了一些错误消息:

Thread 1 cannot allocate new log, sequence 296280
Private strand flush not complete
Current log# 3 seq# 296279 mem# 0: /home/oracle/app/oracle/oradata/orcl/redo03.log
Current log# 3 seq# 296279 mem# 1: /home/oracle/app/oracle/oradata/orcl/redo09.log
Thread 1 advanced to log sequence 296280 (LGWR switch)
Current log# 2 seq# 296280 mem# 0: /home/oracle/app/oracle/oradata/orcl/redo02.log
Current log# 2 seq# 296280 mem# 1: /home/oracle/app/oracle/oradata/orcl/redo08.log
Process P098 died, see its trace file
Process P098 died, see its trace file
Process P098 died, see its trace file

我们的问题是:

  1. Oracle会导致Linux挂起吗?我想即使甲骨文死了,Linux也应该活着。我们认为这是相关的,因为这些事件同时发生,即Oracle在Linux挂起之前就已经死了。

  2. 服务器回复ping但不允许ssh的原因是什么? 我们在ssh登录失败时进行了测试,并显示端口22没问题:

    [administrator@localhost ~]$ nc -v -w 1 172.16.*.* -z 22
    Connection to 172.16.*.* 22 port [tcp/ssh] succeeded!  
    

    当我们执行ssh -v时,它会在“加载ssh密钥”处停止。

  3. 3.为什么Linux服务器挂起,但它仍然可以是ping?我们如何防止系统挂起?

    任何想法可能是什么解释?

2 个答案:

答案 0 :(得分:2)

您显示的日志片段并未说数据库崩溃;它看起来像是日志切换中的延迟,并且parallel query slave process正在死亡。这当然应该被调查 - 你可以从查看跟踪文件开始 - 但它可能是一个症状而不是原因。

非常高的负载可以使服务器表现得像这样,响应某些网络事件,但无法(或极其缓慢地)创建新进程。这可以解释为什么你可以连接到端口22,但sshd没有进展很远,并且没有完成连接过程。它也可以解释你的P098死亡 - 从一开始就可能不是最好的。

Oracle不太可能直接造成这种情况。你有一个脚本或应用程序进程更有可能由于某种原因而旋转,产生新进程直到系统运行资源。 (你当然可以在PL / SQL块中获得一个无限循环,这会导致高负载,但不会导致你耗尽进程 - 所以你最终能够连接)。如果处理不当,您可能会收到一个ORA错误,该错误会导致脚本/应用程序循环,但您必须希望在应用程序日志中显示该错误。它可能甚至不是与DB交谈的东西。

如果没有记录,基本上不可能知道发生了什么。如果你知道当时正在运行什么,你可能有一个起点。例如,您还可以使用Oracle企业管理器中的AWR报告回顾数据库在问题出现之前所做的工作。

不幸的是,如果你无法连接,你可以做很多事情来恢复,即使你有一个现有的shell运行,你可能无法运行有用的工具来查看正在发生的事情。有时硬重启是唯一的选择,但显然这是最后的选择。

答案 1 :(得分:0)

是的,如果进程负载非常高,oracle可能会挂起您的系统。请告知我们您使用oracle或RACK在此系统上有多路径。