1

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

首先,我们发现我们的远程 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 挂起吗?我想即使 Oracle 死了,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.为什么Linux服务器挂了,但它仍然可以ping?我们怎样才能防止系统挂起?

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

4

2 回答 2

3

您显示的日志片段没有说数据库崩溃;它看起来像日志切换中的延迟,并且并行查询从属进程死亡。这当然应该进行调查 - 您可以从查看跟踪文件开始 - 但它可能是症状而不是原因。

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

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

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

不幸的是,如果您无法连接,则无法恢复,即使您有一个现有的 shell 正在运行,您也可能无法运行有用的工具来查看发生了什么。有时硬重启是唯一的选择,但显然这是最后的手段。

于 2013-06-20T07:44:18.860 回答
0

是的,如果进程负载非常高,oracle 可以挂起您的系统。请让我们知道您在这个带有 oracle 或 RACK 的系统上是否有多路径。

于 2013-06-20T04:40:58.647 回答