实战复盘:Oracle 11g 服务器重启后无法连接 (ORA-01034) 及开机自启配置

实战复盘:Oracle 11g服务器重启后无法连接(ORA-01034)及开机自启配置

一、故障现象与背景

在一次Linux服务器重启后,客户端尝试连接Oracle数据库时失败,报错信息如下:

ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux-x86_64 Error: 2: No such file or directory

在服务器端通过sqlplus / as sysdba登录后,执行查询提示ORA-01034: ORACLE not available,且状态显示为Connected to an idle instance.。同时,lsnrctl status显示The listener supports no services,客户端连接报ORA-12514: TNS:listener does not currently know of service requested

二、故障原因分析

1. 数据库未自动启动

Linux系统重启后,Oracle数据库实例默认不会自动启动。数据库处于关闭状态,共享内存未分配,因此报ORA-01034ORA-27101

2. 服务未注册

由于数据库实例未启动,监听器(Listener)虽然运行,但无法接收数据库的动态注册,导致supports no services,客户端请求自然被拒绝(ORA-12514)。

3. 权限问题

在排查过程中,误用oracle用户尝试执行系统级reboot命令,因权限不足及Polkit认证失败导致操作被拦截。

三、紧急恢复步骤(手动启动)

1. 切换用户并启动数据库

su - oracle
sqlplus / as sysdba

在SQL提示符下执行:

STARTUP;
ALTER SYSTEM REGISTER;
EXIT;

2. 验证监听器状态

lsnrctl status

确认输出中包含Services Summary...且实例状态为READY,此时客户端即可恢复连接。

四、根治方案:配置Oracle开机自启

为避免每次重启服务器都要手动干预,需配置oratabsystemd服务。

1. 修改/etc/oratab开启自启开关

root用户编辑文件:

sudo vi /etc/oratab

将对应实例行尾的N改为Y

orcl:/u01/app/oracle/11204:Y

2. 创建Systemd服务

root用户创建服务文件:

sudo vi /etc/systemd/system/oracle.service

写入以下配置(注意替换实际路径):

[Unit]
Description=Oracle Database Startup/Shutdown Service
After=syslog.target network.target

[Service]
LimitMEMLOCK=infinity
LimitNOFILE=65535
Type=oneshot
RemainAfterExit=yes
User=oracle
Environment="ORACLE_HOME=/u01/app/oracle/11204"
ExecStart=/u01/app/oracle/11204/bin/dbstart $ORACLE_HOME
ExecStop=/u01/app/oracle/11204/bin/dbshut $ORACLE_HOME

[Install]
WantedBy=multi-user.target

3. 启用并测试服务

sudo systemctl daemon-reload
sudo systemctl enable oracle.service
sudo systemctl start oracle.service
sudo systemctl status oracle.service

五、经验总结

1. Linux与Windows的差异

Windows下Oracle默认随系统启动,而Linux下必须手动配置oratab和启动脚本。

2. 权限隔离

日常运维应严格区分rootoracle用户权限。系统级操作(如重启)必须在root下执行,避免在业务用户下产生不必要的认证报错。

3. 动态注册机制

ORA-12514不一定是监听器挂了,很多时候是因为数据库未启动导致无法向监听器注册服务。

4. 预防性维护

建议在生产环境中提前配置好开机自启,避免因服务器意外重启导致数据库服务中断。

通过这次故障处理,我们不仅解决了当前的问题,更重要的是建立了一套完善的预防机制,确保类似问题不再发生。

文档整理由AI生成

posted @ 2026-06-25 14:15  三生有幸格格  阅读(2)  评论(0)    收藏  举报