在当今的信息技术环境中,服务器的稳定性对于企业应用的连续性至关重要。不幸的是,即使在最高水平的维护和冗余设置下,也可能发生未预期的服务器宕机事件。这样的事件可能会导致正在访问或修改关键配置文件和诊断信息的进程异常终止,留下未能正确清理的文件锁和临时数据文件。本文将详细探讨一种典型的恢复场景——在WebLogic服务器环境中解决因服务器意外宕机导致的启动故障。
概述
当服务器由于未知原因突然宕机时,正在运行的WebLogic Server实例可能会留下未清理的文件锁(.lok)和诊断文件(.DAT),这些文件可能会阻碍服务器的再次启动。在尝试重启WebLogic时,管理员可能会遇到无法获取文件锁的错误,如下所示:
<2024-05-03 下午05时08分34秒 CST> <Info> <Management> <BEA-141281> <unable to get file lock, will retry …>
<2024-05-03 下午05时08分44秒 CST> <Info> <Management> <BEA-141281> <unable to get file lock, will retry …>
为了解决这个问题并顺利重启WebLogic Server,需要进行一系列的故障排除步骤,主要包括删除遗留的锁定文件和诊断文件。以下是详细的操作指南:
解决办法
一、删除Domain下的*.lok文件
这些文件是WebLogic服务器用于保护正在被编辑或访问的配置数据的锁定文件。在正常情况下,当处理这些文件的服务器线程结束时,它们会被自动删除。然而,在服务器意外宕机的情况下,这些文件可能不会被清除,从而阻止了对这些配置文件的进一步访问。
-
删除edit.lok
- 首先,通过SSH或本地终端登录到服务器。
- 导航到
domain_home目录,这是WebLogic域的配置和日志数据的主要存储位置。cd /u01/Oracle/Middleware/user_projects/domains/idm_domain - 使用rm命令删除edit.lok文件,以解除对配置文件的锁定。
rm edit.lok
-
删除config.lok
- 接下来,进入
domain_home/config子目录,这里存放了域的配置信息。cd /u01/Oracle/Middleware/user_projects/domains/idm_domain/config/ - 同样,删除config.lok文件以确保配置文件可以自由访问。
rm config.lok
- 接下来,进入
-
删除AdminServer.lok
- 转到
AdminServer的临时目录,这个目录下可能也会有因服务器宕机而遗留的文件锁。cd /u01/Oracle/Middleware/user_projects/domains/idm_domain/servers/AdminServer/tmp - 删除AdminServer.lok文件,确保AdminServer可以正常启动。
rm AdminServer.lok
- 转到
-
删除EmbeddedLDAP.lok
- 如果使用了嵌入式LDAP服务,还需检查相关的目录。
cd /u01/Oracle/Middleware/user_projects/domains/idm_domain/servers/AdminServer/data/ldap/ldapfiles - 删除EmbeddedLDAP.lok文件,以避免LDAP服务启动时发生错误。
rm EmbeddedLDAP.lok
- 如果使用了嵌入式LDAP服务,还需检查相关的目录。
二、删除Domain下的*.DAT文件
除了文件锁之外,还需要处理WebLogic Server生成的诊断文件(*.DAT)。这些文件通常包含有关服务器运行情况的诊断信息,但在服务器意外关闭后,它们可能会处于不一致的状态,需要被删除。
- 回到
domain_home目录。cd /u01/Oracle/Middleware/user_projects/domains/idm_domain - 使用find命令搜索所有*.DAT文件,并根据结果手动删除它们。例如:
根据找到的文件路径,执行删除操作。例如:find servers/ -name "*.DAT"rm servers/AdminServer/data/store/diagnostics/WLS_DIAGNOSTICS000000.DAT rm servers/AdminServer/data/store/default/_WLS_ADMINSERVER000000.DAT
完成上述步骤后,您已经移除了所有可能阻止WebLogic Server启动的障碍。现在可以尝试重新启动WebLogic Server。
cd /u01/Oracle/Middleware/user_projects/domains/idm_domain/bin
./startWebLogic.sh
如果一切顺利,服务器应该会成功启动,恢复提供服务。通过这些步骤,我们不仅解决了一个紧急的故障问题,还增强了对WebLogic Server运维的理解,为未来可能出现的类似情况提供了宝贵的经验。




