到目前为止,我们已经两次看到同样的奇怪问题了。
首先,我们发现我们的远程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
我们的问题是:
Oracle会导致Linux挂起吗?我想即使甲骨文死了,Linux也应该活着。我们认为这是相关的,因为这些事件同时发生,即Oracle在Linux挂起之前就已经死了。
服务器回复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
?我们如何防止系统挂起?
任何想法可能是什么解释?
答案 0 :(得分:2)
您显示的日志片段并未说数据库崩溃;它看起来像是日志切换中的延迟,并且parallel query slave process正在死亡。这当然应该被调查 - 你可以从查看跟踪文件开始 - 但它可能是一个症状而不是原因。
非常高的负载可以使服务器表现得像这样,响应某些网络事件,但无法(或极其缓慢地)创建新进程。这可以解释为什么你可以连接到端口22,但sshd没有进展很远,并且没有完成连接过程。它也可以解释你的P098
死亡 - 从一开始就可能不是最好的。
Oracle不太可能直接造成这种情况。你有一个脚本或应用程序进程更有可能由于某种原因而旋转,产生新进程直到系统运行资源。 (你当然可以在PL / SQL块中获得一个无限循环,这会导致高负载,但不会导致你耗尽进程 - 所以你最终能够连接)。如果处理不当,您可能会收到一个ORA错误,该错误会导致脚本/应用程序循环,但您必须希望在应用程序日志中显示该错误。它可能甚至不是与DB交谈的东西。
如果没有记录,基本上不可能知道发生了什么。如果你知道当时正在运行什么,你可能有一个起点。例如,您还可以使用Oracle企业管理器中的AWR报告回顾数据库在问题出现之前所做的工作。
不幸的是,如果你无法连接,你可以做很多事情来恢复,即使你有一个现有的shell运行,你可能无法运行有用的工具来查看正在发生的事情。有时硬重启是唯一的选择,但显然这是最后的选择。
答案 1 :(得分:0)
是的,如果进程负载非常高,oracle可能会挂起您的系统。请告知我们您使用oracle或RACK在此系统上有多路径。