下面按常见排错思路 + 具体场景命令给你一份 Linux 上 Oracle 配置的排错指南,适合 11g / 12c / 19c 等常见版本。
Oracle 排错通常分 4 层:
id oracle
应看到:
uid=oracle(54321) gid=oinstall(54321)
常见错误:
修复:
chown -R oracle:oinstall $ORACLE_HOME
chmod -R 775 $ORACLE_HOME
su - oracle
env | grep ORACLE
必须有:
ORACLE_HOME
ORACLE_BASE
ORACLE_SID
PATH 包含 $ORACLE_HOME/bin
示例:
export ORACLE_SID=orcl
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
df -h
free -m
检查:
/u01 空间不足内核参数:
sysctl -a | grep sem
sysctl -a | grep shm
lsnrctl status
常见错误:
TNS-12541: TNS:no listenerTNS-12545: Connect failedlsnrctl start
cat $ORACLE_HOME/network/admin/listener.ora
最简示例:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
sqlplus / as sysdba
如果报错:
ORA-01034: ORACLE not availableORA-27101: shared memory realm does not exist说明实例没起。
STARTUP;
若失败,看原因:
STARTUP NOMOUNT;
tail -n 100 $ORACLE_BASE/diag/rdbms/*/*/trace/alert_*.log
常见错误:
sqlplus system/oracle@orcl
tnsping orcl
cat $ORACLE_HOME/network/admin/tnsnames.ora
示例:
orcl =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.10)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
systemctl status firewalld
firewall-cmd --list-ports
开放端口:
firewall-cmd --add-port=1521/tcp --permanent
firewall-cmd --reload
getenforce
可选关闭(测试环境):
setenforce 0
su - oracle
env | grep ORACLE
lsnrctl status
sqlplus / as sysdba
STARTUP;
tail -f $ORACLE_BASE/diag/.../alert_*.log
如果你能告诉我:
我可以给你更精准的一步到位方案。