Linux 下 Oracle 连不上 的原因非常多,需要一步步排查。下面按最常见原因 → 排查方法给你一个系统清单,你对照着看就能定位问题。
ps -ef | grep pmon
如果没有 ora_pmon_xxx,说明数据库没起。
启动:
sqlplus / as sysdba
startup
lsnrctl status
如果报错或没有服务注册:
启动监听:
lsnrctl start
netstat -tunlp | grep 1521
或
telnet ip 1521
不通说明:
路径:
$ORACLE_HOME/network/admin/listener.ora
常见错误:
示例(正确):
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.10)(PORT = 1521))
)
)
$ORACLE_HOME/network/admin/tnsnames.ora
测试:
tnsping orcl
CentOS / RHEL:
systemctl stop firewalld
setenforce 0
或开放端口:
firewall-cmd --add-port=1521/tcp --permanent
firewall-cmd --reload
sqlplus / as sysdba
show parameter service_name
手动注册:
alter system register;
select username, account_status from dba_users;
解锁:
alter user scott account unlock;
alter user scott identified by tiger;
echo $ORACLE_HOME
echo $ORACLE_SID
没配:
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export ORACLE_SID=orcl
| 报错 | 原因 |
|---|---|
| ORA-12541 | 监听没起 |
| ORA-12514 | 服务名不对 |
| ORA-12170 | 网络/防火墙 |
| ORA-01034 | 数据库没起 |
| ORA-28000 | 用户被锁 |
如果你愿意,把下面信息发我,我能精准定位:
lsnrctl status 输出我可以一步一步带你修。