在 Linux 上启动 Oracle 数据库 通常包括启动 监听程序(Listener) 和 数据库实例(Instance)。下面按常见场景给你一个完整、可操作的步骤说明。
su - oracle
echo $ORACLE_HOME
echo $ORACLE_SID
如果没有设置:
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH
监听用于接收客户端连接。
lsnrctl start
lsnrctl status
✅ 看到 READY 或 UNKNOWN 表示监听已启动。
sqlplus / as sysdba
startup
常用启动方式:
| 命令 | 说明 |
|---|---|
startup |
正常启动 |
startup mount |
只挂载,不打开数据库 |
startup open |
打开数据库 |
startup force |
强制启动(异常关闭后) |
select status from v$instance;
期望结果:
OPEN
shutdown immediate
或更强制:
shutdown abort
停止监听:
lsnrctl stop
⚠️ 不要直接用 startup,使用:
srvctl start database -d dbname
srvctl start listener
ORACLE_SID 未设置ORA-12162: TNS:net service name is incorrectly specified
✅ 解决:
export ORACLE_SID=orcl
ORA-01034: ORACLE not available
✅ 解决:执行 startup
ps -ef | grep pmon
编辑 /etc/oratab:
orcl:/u01/app/oracle/product/19.3.0/dbhome_1:Y
再编写启动脚本或使用 systemd(我可以帮你写)。
su - oracle
lsnrctl start
sqlplus / as sysdba
startup
如果你愿意,可以告诉我:
我可以给你 针对你环境的精确操作步骤 ✅