Linux 上 Oracle 启动不了,原因非常多,通常可以按现象 + 常见原因来排查。下面我给你一个系统性排查思路,覆盖了 90% 以上的情况。
常见启动方式:
sqlplus / as sysdba
startup
或
lsnrctl start
如果 startup 报错,请把完整报错信息贴出来,这是最关键的信息。
症状
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
症状
ORA-12541: TNS:no listener
检查
lsnrctl status
解决
lsnrctl start
症状
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
解决
sqlplus / as sysdba
startup
症状
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
症状
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
症状
正确做法
su - oracle
检查
df -h
select status from v$instance;
echo $ORACLE_HOME
echo $ORACLE_SID
whoami
lsnrctl status
sqlplus / as sysdba
startup
请直接贴出以下信息,我可以精确定位:
startup 时的输出如果你愿意,可以把报错截图或文字贴出来,我帮你一步一步修。