温馨提示×

ubuntu oracle为何启动慢

小樊
42
2026-09-07 20:56:10
栏目: 云计算

Ubuntu 上 Oracle 启动慢,通常不是 Ubuntu 本身的问题,而是 Oracle 自身机制 + 系统配置 导致的。下面按“最常见 → 较少见”的原因给你说明,并给出对应解决办法。


一、最常见原因(90% 情况)

1️⃣ 主机名无法解析(非常常见)

Oracle 启动时会做 主机名 → IP 的反向解析,如果失败会等待超时。

表现

  • sqlplus 登录慢
  • lsnrctl start
  • 数据库 startup

检查

hostname
cat /etc/hosts

正确示例

127.0.0.1   localhost
192.168.1.100  oracle-host

✅ 主机名必须能在 /etc/hosts 中找到


2️⃣ 监听器(Listener)启动慢

listener 默认会做名称解析。

解决listener.ora 中加:

DIAG_ADR_ENABLED_LISTENER = OFF

或在 sqlnet.ora 中:

NAMES.DIRECTORY_PATH = (TNSNAMES, EZCONNECT)

3️⃣ 数据库实例启动慢(SGA / PGA 大)

如果:

  • SGA 很大(如 8G / 16G)
  • 内存没预热

启动时会:

  • 分配内存
  • 做检查点恢复

现象

SQL> startup

卡很久

优化

  • 减少 SGA
  • 使用 HugePages
  • 确保 vm.swappiness=1

二、系统层面原因

4️⃣ 没有配置 HugePages(大内存必慢)

Oracle 官方推荐:

grep Huge /proc/meminfo

如果没有:

  • 启动慢
  • 性能差

✅ 配置 HugePages 可显著提升启动速度


5️⃣ 磁盘 IO 慢(云服务器常见)

  • 云盘(尤其是低配云服务器)
  • 数据库文件在慢盘

检查

iostat -x 1

6️⃣ systemd 启动方式问题(11g/12c)

如果你用:

systemctl start oracle

而脚本里:

  • 没有 RemainAfterExit
  • 等待监听

会导致“假死”

✅ 建议直接用:

sqlplus / as sysdba
startup

三、数据库内部原因

7️⃣ 数据库恢复(RECOVERY)

如果上次异常关机:

  • 做实例恢复
  • 回滚事务

检查

select * from v$recovery_file_dest;

8️⃣ 自动任务(AUTO TASK)

启动时:

  • 统计信息收集
  • 自动维护任务

可临时关闭:

EXEC DBMS_AUTO_TASK_ADMIN.DISABLE;

四、快速排查清单 ✅

# 1. 主机名解析
hostname
cat /etc/hosts

# 2. 监听状态
lsnrctl status

# 3. 启动数据库
sqlplus / as sysdba
startup

# 4. 查看日志
tail -f $ORACLE_BASE/diag/rdbms/*/*/trace/alert*.log

五、如果你愿意,我可以帮你精准定位

你可以告诉我:

  1. Oracle 版本(11g / 12c / 19c?)
  2. 启动到哪一步慢(Listener / startup / sqlplus?)
  3. 物理机还是云服务器
  4. 内存多大

我可以直接给你 针对性优化方案

0