温馨提示×

ubuntu oracle报错怎排查

小樊
51
2026-09-20 03:01:03
栏目: 云计算

在 Ubuntu 上排查 Oracle(通常是 Oracle Database 或 Oracle Instant Client / OCI 相关程序)报错,可以按下面思路一步步来。


一、先明确“报什么错”

不同场景排查方式差别很大:

  1. Oracle Database 起不来
  2. sqlplus / 程序连接 Oracle 报错
  3. 客户端(OCI / JDBC / Python cx_Oracle)报错
  4. Ubuntu 系统层面问题(依赖、权限、内核参数)

建议:先贴出完整报错信息(命令 + 错误内容)


二、Oracle Database 起不来(常见排查)

1. 看监听状态

lsnrctl status

常见问题:

  • TNS-12541: TNS:no listener → 监听没起
  • 端口被占用(默认 1521)

启动监听:

lsnrctl start

2. 看数据库状态

sqlplus / as sysdba
select status from v$instance;

若打不开:

startup;

常见错误:

  • ORA-01078: 参数文件问题
  • ORA-27102: 内存不足(Linux 共享内存)
  • ORA-00845: /dev/shm 太小

3. 查看 alert 日志(最重要)

# 一般在
$ORACLE_BASE/diag/rdbms/*/*/trace/alert_*.log

看最近报错,非常关键。


三、Ubuntu 系统层面常见问题

1. 依赖库缺失(Ubuntu 特有)

Ubuntu 不是 Oracle 官方支持系统,常见缺库:

ldd $ORACLE_HOME/bin/sqlplus

常见缺:

  • libaio1
  • libnsl
  • libclntsh.so

安装:

sudo apt update
sudo apt install libaio1 libaio-dev libnsl2

2. /dev/shm 太小

df -h /dev/shm

修改(临时):

mount -o remount,size=2G /dev/shm

永久:

# /etc/fstab
tmpfs /dev/shm tmpfs defaults,size=2G 0 0

3. 内核参数(Oracle 必须)

sysctl -a | grep sem
sysctl -a | grep shm

参考值(示例):

kernel.sem = 250 32000 100 128
kernel.shmmax = 2147483648

写入:

/etc/sysctl.conf

四、客户端连接报错(TNS / OCI)

1. TNS 配置

echo $TNS_ADMIN
cat $TNS_ADMIN/tnsnames.ora

测试:

tnsping ORCL

2. 环境变量(非常关键)

export ORACLE_HOME=...
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME/bin:$PATH

五、快速自查清单 ✅

  • [ ] 报错完整信息?
  • [ ] Oracle 版本 + Ubuntu 版本?
  • [ ] 是服务端还是客户端?
  • [ ] alert 日志有无错误?
  • [ ] 依赖库是否缺失?
  • [ ] /dev/shm 够不够?

如果你愿意,可以直接把 报错原文 + 你做的事(安装 / 启动 / 连接) 发出来,我可以按具体错误逐条帮你定位。

0 踩