温馨提示×

Ubuntu Oracle 常见错误及解决方法

小樊
41
2025-12-06 21:10:56
栏目: 云计算

Ubuntu 上部署与运行 Oracle 的常见错误与解决

一 安装与依赖类问题

  • 依赖包缺失导致编译或安装失败
    典型报错出现在链接阶段,如:ins_net_client.mkins_ctx.mk 等。
    处理要点:安装 32/64 位兼容与编译工具、异步 I/O、Motif 等依赖,例如:sudo apt-get install gcc gcc-multilib libaio1 libaio-dev lesstif2 lesstif2-dev;旧版本可能还需 ia32-libs。完成后重试安装或重跑链接阶段。
  • 图形界面无法启动或 DISPLAY 未设置
    现象:执行 ./runInstaller 无界面或报 X11 错误。
    处理要点:在图形会话中先执行 xhost +local: 放行本机访问,再切到 oracle 用户设置显示变量:export DISPLAY=:0.0(或实际显示号),必要时用 xdpyinfo 确认 DISPLAY;远程安装可用 VNC 并在该会话中设置相同的 DISPLAY。
  • 系统检测不通过或提示缺少 RPM 数据库
    现象:OUI 版本检测失败,或提示 “cannot open Packages index using db3”。
    处理要点:创建兼容标识文件 /etc/redhat-release(内容如:Red Hat Linux release 4 (drupal));若提示 RPM 数据库异常,可在 root 下重建:执行 rpm --initdbrpm --rebuilddb(后续错误可忽略继续)。
  • 磁盘空间或交换空间不足
    现象:解压安装介质或建库阶段中断、性能异常。
    处理要点:确保 /u01 挂载点可用空间充足(建议预留20GB+),交换空间不足时新增分区并启用,例如:mkswap /dev/sdc;swapon /dev/sdc;写入 /etc/fstab 实现开机挂载。

二 监听与网络类问题

  • 命令未找到或环境变量未生效
    现象:执行 lsnrctl/sqlplus/emctl 提示未找到。
    处理要点:在 /etc/profile~/.bashrc 中正确设置 ORACLE_HOME、ORACLE_SID、PATH(必要时补充 LD_LIBRARY_PATH),执行 source 使其生效;注意切换到 oracle 用户后再次 source,避免只在 root 下设置。
  • 连接时报 TNS 错误
    典型错误:
    • ORA-12162: TNS:net service name is incorrectly specified → 未设置 ORACLE_SID,执行:export ORACLE_SID=orcl(写入环境变量永久生效)。
    • ORA-12514: TNS:listener does not currently know of service requested → 监听未识别实例,编辑 $ORACLE_HOME/network/admin/listener.ora,在 SID_LIST_LISTENER 中新增实例描述:
      SID_LIST_LISTENER =
      (SID_LIST =
      (SID_DESC =
      (SID_NAME = orcl)
      (ORACLE_HOME = /u01/app/oracle/product/19.3/dbhome_1)
      )
      )
      然后重启监听:lsnrctl stop;lsnrctl start;用 lsnrctl status 确认服务已注册。
  • 主机名解析导致企业管理器无法启动
    现象:执行 emctl start dbconsole 失败,提示监听未启动或数据库未注册。
    处理要点:设置 ORACLE_HOSTNAME=localhost 后重试;必要时用 emca -config dbcontrol db -repos recreate 重建 EM 资料库与配置。

三 运行维护与系统资源类问题

  • 系统资源限制导致实例或工具异常
    现象:DBCA/建库/启动阶段异常、或 srvctl 无法启动实例,日志出现 fork failedORA-27106 等。
    处理要点:检查 /etc/security/limits.conf 与 systemd 任务上限;在 /etc/systemd/system.confDefaultTasksMax 调整为 infinity 或 ≥65536,重启主机后验证:systemctl show --property DefaultTasksMax
  • 打补丁时文件被占用导致 Prerequisite 检查失败
    现象:OPatch/OPatchAuto 报 “CheckActiveFilesAndExecutables” 失败,提示 libclntsh.so.19.1libsqlplus.so 被占用。
    处理要点:确认无 SQL*Plus/监听/其他 Oracle 进程占用相关库文件后重试;必要时停库或延后维护窗口,避免工具与库文件被占用。

四 快速排查清单

  • 核对用户与权限:使用 oracle 用户操作,属主为 oinstall/dba,目录如 /u01 权限正确。
  • 核对环境变量:echo ORACLE_HOME/ORACLE_SID/PATH/LD_LIBRARY_PATH;必要时在 /etc/profile~/.bashrc 同步设置并 source。
  • 核对监听:lsnrctl status 能看到 SID_NAME=orcl 与端口 1521;必要时按上文补全 listener.ora 并重启监听。
  • 核对实例:sqlplus / as sysdba 能进入;若异常,优先查看 $ORACLE_HOME/diag 下最新日志。
  • 环境限制:ulimit -a 与 /etc/security/limits.conf;若使用 systemd,确认 DefaultTasksMax 合理。
  • 图形安装:DISPLAY 与 xhost 已正确配置;远程请用 VNC 并在同一会话中设置 DISPLAY。

0