温馨提示×

如何在Ubuntu中稳定运行Oracle

小樊
43
2025-12-16 18:35:45
栏目: 云计算

在 Ubuntu 上稳定运行 Oracle 的实用方案

一 方案选型与总体建议

  • 生产环境优先选择受支持的 Oracle LinuxRHEL;在 Ubuntu 上可通过容器化获得更稳定的交付与回滚能力。
  • 若必须在 Ubuntu 裸机上运行,建议采用 Oracle 官方预安装包完成系统与内核调优,再按官方文档安装数据库,并配套监控、备份与自动启动。
方案 适用场景 优点 注意事项
Docker 容器化 快速上线、CI/CD、弹性扩缩 镜像标准化、环境一致、易备份与回滚 持久化与备份策略需单独设计;资源限制与内核参数仍需关注
裸机手动安装 传统企业环境、深度定制 可控性强、与系统深度集成 需严格做内核/资源/存储调优与长期维护

以上两种方案均已在社区实践中被广泛采用,容器化示例与手动安装步骤均有成熟范例可参考。

二 容器化部署 Oracle(最快落地)

  • 安装 Docker
    • sudo apt-get update && sudo apt-get install -y docker.io
  • 拉取并运行 Oracle 数据库镜像(示例为 19c 企业版)
    • docker pull store/oracle/database-enterprise:19.3.0.0
    • docker run -d --name oracle-db
      -p 1521:1521 -p 5500:5500
      -e ORACLE_PWD=YourStrongPassword
      store/oracle/database-enterprise:19.3.0.0
  • 验证
    • ss -lntp | grep 1521
    • docker logs -f oracle-db
    • sqlplus sys/YourStrongPassword@//localhost:1521/ORCLCDB as sysdba
  • 数据持久化与备份
    • /opt/oracle/oradata 挂载到宿主机卷,定期做卷级快照或 RMAN 备份
    • 使用命名卷或外部备份工具(如企业备份软件)形成可恢复链路 该方式部署周期短、可重复性强,适合作为开发、测试与部分生产场景的基线方案。

三 裸机手动安装的关键要点

  • 系统与用户
    • 建议使用 Ubuntu Server LTS,安装桌面组件仅用于安装阶段(如需 GUI)
    • 创建用户与组:groupadd oinstall;groupadd dba;useradd -g oinstall -G dba -m -s /bin/bash oracle
    • 创建目录并授权:mkdir -p /u01/app/oracle;chown -R oracle:oinstall /u01;chmod -R 775 /u01
  • 依赖与库
    • apt-get update && apt-get install -y alien libaio1 unixodbc build-essential unzip wget
    • 如为 Instant Client:apt-get install -y libaio1;设置 LD_LIBRARY_PATH 或配置 /etc/ld.so.conf.d/oracle.conf 并运行 ldconfig
  • 内核与资源限制(示例值,需按内存与负载调优)
    • /etc/sysctl.conf
      • kernel.shmmax = 物理内存的约 1/2(字节)
      • kernel.shmall = 共享内存总页数(shmmax/4096)
      • kernel.shmmni = 4096
      • kernel.sem = 250 32000 100 128
      • fs.file-max = 6815744
      • fs.aio-max-nr = 1048576
      • net.core.rmem_default/wmem_default = 262144
      • net.core.rmem_max/wmem_max = 4194304
      • net.ipv4.ip_local_port_range = 9000 65500
    • /etc/security/limits.conf
      • oracle soft nproc 16384
      • oracle hard nproc 16384
      • oracle soft nofile 65536
      • oracle hard nofile 65536
  • 安装与建库
    • 以 oracle 用户解压安装介质,执行 runInstaller(或静默安装)
    • 使用 DBCA 建库或脚本建库,完成后执行 utlrp.sql 编译无效对象
  • 自动启动
    • 编辑 /etc/oratab:ORCL:/u01/app/oracle/product/19.0.0/dbhome_1:Y
    • 创建 systemd 服务(/etc/systemd/system/oracle.service)
      • [Unit] Description=Oracle Auto Start Service;After=network.target
      • [Service] Type=simple;User=oracle;Group=oinstall
        • ExecStart=/u01/app/oracle/product/19.0.0/dbhome_1/bin/dbstart $ORACLE_HOME
        • ExecStop=/u01/app/oracle/product/19.0.0/dbhome_1/bin/dbshut $ORACLE_HOME
        • Restart=on-failure;RestartSec=30s
      • [Install] WantedBy=multi-user.target
    • systemctl daemon-reload && systemctl enable --now oracle.service 以上步骤覆盖了依赖、内核参数、用户资源、安装与自启动的关键环节,适合在 Ubuntu 上构建可维护的 Oracle 实例。

四 运行期稳定性与性能优化

  • 内存与 I/O
    • 合理设置 SGA_TARGET / PGA_AGGREGATE_TARGET,启用自动内存管理(如 SGA+PGA 自动)
    • 使用 SSD/NVMe、条带化/RAID10,关注 I/O 等待与热点文件
    • 存储层开启 异步 I/O(filesystemio_options=setall 或 ASM 场景)
  • 调度与文件系统
    • 数据库磁盘优先使用 deadline/noop(SSD 推荐 noop;机械盘可用 deadline)
    • 数据文件与日志分盘,避免日志与数据争用同一物理磁盘
  • 网络与连接
    • 优化 TCP 缓冲区与本地端口范围,避免连接风暴
    • 合理设置 PROCESSES / SESSIONS / OPEN_CURSORS,并启用连接池
  • 监控与诊断
    • 定期采集 AWR/ASH/ADDM 报告,定位高负载 SQL 与等待事件
    • 使用操作系统监控(如 sar、vmstat、iostat)与 Oracle 监控(如 OEM/自研看板)联动
  • 维护与可用性
    • 建立 RMAN 备份(含归档日志),定期演练恢复
    • 按业务窗口执行统计信息收集、索引/空间维护与补丁更新 这些优化项覆盖了 Linux 层与数据库层的关键稳定性杠杆,可显著提升响应速度与稳态表现。

五 备份恢复与常见故障处理

  • 备份策略
    • 全备 + 归档日志备份,保留多份与异地副本;定期做 恢复演练
    • 容器化场景优先备份挂载的数据卷与配置
  • 恢复演练
    • 定期从备份恢复至测试环境,验证可用性与完整性
  • 日志与排障
    • 关注告警日志(如 alert.log)、监听日志与系统日志,结合 AWR/ASH 定位根因
    • 常见库/监听问题:环境变量(ORACLE_HOME/SID)、监听未注册、权限/资源限制不足
  • 客户端连通性
    • 使用 sqlplus user/pass@//host:1521/SID 验证;如报缺少库,检查 LD_LIBRARY_PATH 或 /etc/ld.so.conf.d/oracle.conf 与 ldconfig 以上做法可确保数据可恢复、问题可定位、故障可快速闭环。

0