温馨提示×

linux oracle为何启动不了

小樊
49
2026-09-16 15:33:10
栏目: 云计算

Linux 上 Oracle 启动不了,原因非常多,通常可以按现象 + 常见原因来排查。下面我给你一个系统性排查思路,覆盖了 90% 以上的情况。


一、先确认你是怎么启动的

常见启动方式:

sqlplus / as sysdba
startup

lsnrctl start

如果 startup 报错,请把完整报错信息贴出来,这是最关键的信息。


二、最常见原因汇总(按概率)

1️⃣ ORACLE_HOME / ORACLE_SID 没设置

症状

ORA-12162: TNS:net service name is incorrectly specified

ORACLE_HOME is not set

检查

echo $ORACLE_HOME
echo $ORACLE_SID

解决

export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH

2️⃣ 监听没启动(LSNRCTL)

症状

ORA-12541: TNS:no listener

检查

lsnrctl status

解决

lsnrctl start

3️⃣ 数据库实例没启动

症状

ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist

解决

sqlplus / as sysdba
startup

4️⃣ 控制文件 / 数据文件损坏或丢失

症状

ORA-00205: error in identifying control file
ORA-01157: cannot identify/lock data file

查看 alert 日志

tail -n 100 $ORACLE_BASE/diag/rdbms/*/*/trace/alert*.log

5️⃣ 共享内存 / 内核参数问题

症状

ORA-27102: out of memory
Linux-x86_64 Error: 28: No space left on device

检查

ipcs -m
free -h

常见参数

kernel.shmmax
kernel.shmmni
kernel.sem

6️⃣ Oracle 用户环境变量不对

症状

  • 用 root 启动 Oracle
  • 文件权限错误

正确做法

su - oracle

7️⃣ 磁盘空间满了

检查

df -h

8️⃣ 数据库处于 MOUNT / NOMOUNT 状态

select status from v$instance;

三、快速排查命令清单(复制即可用)

echo $ORACLE_HOME
echo $ORACLE_SID
whoami
lsnrctl status
sqlplus / as sysdba
startup

四、建议你下一步这样做

请直接贴出以下信息,我可以精确定位:

  1. Oracle 版本(11g / 12c / 19c?)
  2. Linux 版本(CentOS / RHEL / Oracle Linux?)
  3. 完整报错信息
  4. startup 时的输出
  5. alert 日志相关报错

如果你愿意,可以把报错截图或文字贴出来,我帮你一步一步修。

0