实战复盘: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-01034和ORA-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开机自启
为避免每次重启服务器都要手动干预,需配置oratab与systemd服务。
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. 权限隔离
日常运维应严格区分root与oracle用户权限。系统级操作(如重启)必须在root下执行,避免在业务用户下产生不必要的认证报错。
3. 动态注册机制
ORA-12514不一定是监听器挂了,很多时候是因为数据库未启动导致无法向监听器注册服务。
4. 预防性维护
建议在生产环境中提前配置好开机自启,避免因服务器意外重启导致数据库服务中断。
通过这次故障处理,我们不仅解决了当前的问题,更重要的是建立了一套完善的预防机制,确保类似问题不再发生。
文档整理由AI生成
本文来自博客园,作者: 三生有幸格格,转载请注明原文链接:https://www.cnblogs.com/mylive/p/20800336
浙公网安备 33010602011771号