Oracle 19c数据库一键自动安装 for Fgedu
第一章 Oracle 19c数据库自动安装程序介绍
1.1 程序概述
Oracle 19c自动安装程序(以下简称"本程序")是一套面向生产环境的 Oracle 数据库自动化部署工具。它使用 Python 语言开发,通过读取 YAML 格式的配置文件驱动整个安装过程,将传统上需要数小时、涉及几十个手工步骤的 Oracle 19c 数据库安装工作,压缩为一条命令即可完成的自动化流程。
在传统的 Oracle 数据库安装过程中,工程师需要手工完成操作系统参数调整、用户与组创建、内核参数配置、资源限制配置、YUM 源配置、依赖软件包安装、环境变量配置、安装介质解压、静默安装响应文件编写、监听器配置、数据库创建、补丁应用、参数优化等大量步骤。这些步骤不仅繁琐,而且极易因人为疏漏导致安装失败或留下隐患。本程序将这些步骤全部固化为标准化的自动化流程,每一步都有严格的检查、清晰的日志与友好的错误提示,从而大幅提高部署效率与部署质量。
本程序采用"分阶段、可断点、可清理"的设计思想:
- 分阶段:整个安装流程被划分为四个相对独立的阶段(操作系统配置、数据库软件安装、数据库创建、后期配置),每个阶段内部再细分为若干编号步骤。阶段之间通过检查点机制衔接,任何一个阶段失败后,修复问题即可从该阶段继续,无需从头重来。
- 可断点:程序自动记录每个阶段的完成状态到断点文件中。无论是正常完成一个阶段,还是中途因故障中断,断点文件都能准确反映当前进度,配合 --stage 参数即可实现断点续装。
- 可清理:程序提供多种粒度的清理能力,既可以整体清除已安装内容恢复系统初始状态,也可以只回退某一个阶段(例如只删除已创建的数据库、只清除后期配置),为反复测试与故障重装提供便利。
1.2 开发背景与设计目标
本程序由风哥(fgedu)在设计大量 Oracle 数据库生产环境部署方案的基础上开发而成,主要面向以下几类使用场景:
- 生产环境标准化交付:企业内需要批量、重复地交付 Oracle 单机环境时,手工操作质量参差不齐,使用本程序可以保证每一套环境都按照完全相同的标准构建。
- 信创与国产化环境适配:麒麟 V10、欧拉 OS 等国产操作系统在 Oracle 安装过程中存在大量兼容性差异(如 libnsl 软件包缺失、安装程序无法识别发行版等),本程序内置了针对这些差异的自动适配逻辑。
- 培训与学习环境快速搭建:学习者往往将精力消耗在繁琐的安装步骤上,使用本程序可以快速获得一个标准、可用的实验环境,把时间留给真正需要掌握的数据库知识。
- 故障环境快速重建:配合清理功能,可以在故障发生后快速清除旧环境并重建一套全新的数据库环境。
本程序的设计目标可以概括为:一次配置、一条命令、一套标准、全程可控。所有参数集中在配置文件中管理,程序内部没有任何硬编码的环境信息;安装过程全程输出详细日志;任何一步失败都会明确指出失败原因与建议的处理方法。
1.3 作者信息
作者:风哥
官方网站: http://www.fgedu.net.cn , http://www.itpux.com
数据库教程: https://edu.51cto.com/lecturer/8020378.html
工具视频教程: https://edu.51cto.com/course/40651.html
第二章 支持环境
2.1 支持的操作系统
本程序支持以下 64 位 Linux 操作系统:
| 操作系统 | 版本 | 兼容性标识(CV_ASSUME_DISTID) | 说明 |
|---|---|---|---|
| Red Hat Enterprise Linux | 9.x | RHEL8.0 | 完整支持 |
| Oracle Linux | 9.x | OL8 | 完整支持 |
| 麒麟(Kylin) | V10 SP3 | RHEL8.0 | 自动安装国产化补充 RPM 包 |
| 欧拉(openEuler) | 23.09 及以上 | RHEL8.0 | 自动安装国产化补充 RPM 包 |
说明:
- 程序通过自动检测操作系统类型与版本来决定兼容性标识与软件包策略,配置文件中 os_type 保持 auto 即可,无需人工指定。
- 对于麒麟与欧拉系统,程序会自动配置单仓库模式的本地 YUM 源,并自动安装 libnsl、libnsl2 等在国产系统上缺失的兼容包。
- 其他发行版(如 CentOS Stream、Rocky Linux 等)未经过完整测试,不建议在生产环境使用;如需使用请自行充分验证。
2.2 硬件要求
| 项目 | 最低要求 | 推荐配置 |
|---|---|---|
| CPU | 2 核 | 4 核及以上 |
| 物理内存 | 6GB(程序内置检查阈值) | 16GB 及以上 |
| 交换空间(Swap) | 4GB | 与物理内存等大 |
| / 目录空闲空间 | 50GB | 100GB 及以上 |
| /oracle(软件目录) | 50GB | 150GB 及以上 |
| /oradata(数据目录) | 50GB | 200GB 及以上 |
| /archive(归档目录) | 50GB | 150GB 及以上 |
| /backup(备份目录) | 50GB | 150GB 及以上 |
补充说明:
- 内存低于 6GB 或交换空间不足时,程序会在阶段一的系统检查中给出警告或错误,请按提示扩配后再安装。
- 程序会根据配置自动调整 /dev/shm 大小(默认按物理内存的 60% 设置)。
- 使用 LVM 多磁盘模式时,需要准备 4 块独立的额外磁盘(分别用于 /oracle、/oradata、/archive、/backup)。
2.3 软件环境要求
| 项目 | 要求 |
|---|---|
| Python | 3.6 及以上版本(含 python3-pip) |
| Python 模块 | PyYAML(离线安装包已随项目提供,位于 python-pkgs 目录) |
| YUM/DNF 源 | 系统安装 ISO 挂载为本地源,或可用的网络源 |
| Oracle 安装介质 | LINUX.X64_193000_db_home.zip(Oracle 19.3 基础安装包) |
| 补丁包 | RU 补丁(如 19.26 的 p37260974)、OPatch 工具(p6880880)、OJVM 补丁(可选) |
| 兼容 RPM 包 | compat-libcap1、compat-libstdc++-33(项目 rpm 目录已提供);麒麟/欧拉系统的 libnsl 系列包(按系统版本选择) |
2.4 安装介质准备清单
在开始安装前,请确认以下文件已放置到配置文件指定的位置(默认约定如下):
/soft/
├── 19c/
│ └── LINUX.X64_193000_db_home.zip # Oracle 19c 数据库软件(约 3GB)
├── 19.26/
│ ├── p37260974_190000_Linux-x86-64.zip # 19.2X Release Update 补丁(约 1.8GB)
│ ├── p6880880_190000_Linux-x86-64.zip # OPatch 工具(约 70MB)
│ └── p37102264_190000_Linux-x86-64.zip # OJVM 补丁(可选,约 120MB)
├── rpm/
│ ├── compat-libcap1-1.10-7.el7.x86_64.rpm
│ └── compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
└── rpms/ # 国产系统补充包目录(按系统版本放置)
同时需要准备好操作系统安装 ISO 并挂载(程序默认挂载点为 /mnt,也可由程序自动挂载光驱):
# 挂载光驱
mount /dev/cdrom /mnt
# 或挂载 ISO 文件
mount -o loop /path/to/system-dvd.iso /mnt
第三章 Oracle 19c数据库自动安装程序功能与特性
3.1 核心功能总览
| 功能 | 说明 |
|---|---|
| 一键自动安装 | 从操作系统检查到数据库创建、参数优化、安装验证的完整自动化流程,一条命令完成 |
| 分阶段执行 | 四个独立阶段,阶段内细分为编号步骤,任意阶段可单独开始 |
| 断点续装 | 自动记录安装进度,中断后可从断点阶段继续,无需重复已完成的工作 |
| 配置驱动 | 所有参数集中于 YAML 配置文件,程序无硬编码环境信息,改配置即可适配不同环境 |
| 多存储模式 | 支持 LVM 多磁盘、LVM 单磁盘、纯文件系统三种存储方案,按需选择 |
| 多操作系统适配 | 自动识别 RHEL/OEL/麒麟/欧拉发行版,自动适配兼容性标识与软件包策略 |
| 补丁自动化 | 自动完成 OPatch 更新、RU 补丁应用与 datapatch 数据字典补丁,可选 OJVM 补丁 |
| CDB 与 NON-CDB | 同时支持传统 NON-CDB 架构与 CDB/PDB 多租户架构 |
| 监听器自动配置 | 自动生成监听配置并启动监听器,端口与协议可配置 |
| 参数自动优化 | 安装完成后自动优化数据库核心参数(processes、open_cursors 等) |
| 运维用户自动创建 | 自动创建监控用户与备份用户并授权 |
| 多粒度清理 | 支持整体清理与分阶段清理(仅回退数据库创建、仅回退后期配置) |
| 详细日志与进度 | 全程记录日志文件,终端彩色输出、步骤编号、进度条与旋转指示器 |
| 密码脱敏 | 日志中自动屏蔽密码等敏感信息,避免泄露 |
| 安全防护 | 重复安装检测、root 权限检查、配置文件校验,防止误操作 |
3.2 Oracle 19c数据库自动安装四大安装阶段详解
阶段一:Oracle 19c数据库操作系统配置(stage1_os_config)
本阶段将一台"裸"操作系统准备为符合 Oracle 19c 安装要求的系统,包含以下典型步骤:
- 系统基础检查:校验 root 权限、操作系统发行版与版本、CPU、内存、交换空间、磁盘空间,并检测系统中是否已存在 Oracle 安装(防止重复安装造成破坏)。
- 创建目录结构:按存储模式创建 /oracle、/oradata、/archive、/backup 等目录;LVM 模式下自动完成 PV/VG/LV 创建、格式化与挂载,并写入 /etc/fstab 实现开机自动挂载。
- 创建用户和组:创建 oinstall、dba、oper、backupdba、dgdba、kmdba、racdba 等组(GID 可在配置文件中指定),创建 oracle 用户并设置密码。
- 配置内核参数:自动写入 /etc/sysctl.conf,包括 fs.aio-max-nr、fs.file-max、shmmax、shmall、shmmni、sem、网络缓冲区、大页(vm.nr_hugepages)、swappiness 等参数;其中 shmmax/shmall 会根据实际物理内存自动计算。
- 配置用户资源限制:写入 /etc/security/limits.conf,设置 oracle 用户的 nofile、nproc、stack 软硬限制。
- 配置 SELinux 与防火墙:按生产惯例将 SELinux 设置为 permissive 并关闭防火墙(可按需调整策略)。
- 配置 GRUB:关闭 NUMA 与透明大页(transparent hugepages),避免 Oracle 性能问题。
- 配置 RemoveIPC:修改 /etc/systemd/logind.conf 中的 RemoveIPC=no,防止共享内存段被系统回收。
- 配置 YUM 源:根据发行版自动选择单仓库(麒麟/欧拉)或双仓库(RHEL/OEL 的 AppStream 与 BaseOS)模式,生成本地源配置文件并刷新缓存。
- 安装软件包:批量安装 Oracle 依赖的核心软件包与常用工具包;对麒麟/欧拉系统自动安装补充 RPM;对缺失的 compat 系列包从本地 RPM 目录自动安装。
- 配置用户环境变量:生成 oracle 用户的 .bash_profile,包含 ORACLE_BASE、ORACLE_HOME、ORACLE_SID、PATH、LANG、NLS_LANG 等。
- 配置时区:按配置设置系统时区(默认 Asia/Shanghai)。
- 配置 /dev/shm:按物理内存百分比重新挂载 /dev/shm 并写入 fstab。
阶段二:Oracle 19c数据库数据库软件安装(stage2_oracle_install)
- 检查安装文件:校验 Oracle 安装包、补丁包是否存在且完整(大小校验),缺文件时提前报错而不是中途失败。
- 解压安装文件:将 Oracle 19c 安装包解压到 ORACLE_HOME 目标目录。
- 生成响应文件:根据配置文件自动生成静默安装响应文件(fs_db_install.rsp)与监听配置响应文件(fs_netconfig.rsp);自动根据操作系统类型写入 CV_ASSUME_DISTID 兼容性标识,绕过国产系统的发行版识别问题。
- 执行静默安装:调用 runInstaller -silent 完成软件安装,全程跟踪安装日志,失败时输出关键错误行。
- 执行 root 脚本:自动执行 orainstRoot.sh 与 root.sh。
- 配置监听器:使用 netca 与生成的响应文件创建并启动监听器(默认名称 LISTENER,端口 1521)。
- 应用补丁(可选/可配置):替换 OPatch 工具、解压并应用 RU 补丁(opatch apply),配置 apply_ojvm 为 true 时同时应用 OJVM 补丁。
阶段三:Oracle 19c数据库数据库创建(stage3_create_database)
- 生成 DBCA 脚本:根据配置自动生成 NON-CDB 创建脚本(fs_dbca.sh)或 CDB 创建脚本(fs_dbca_cdb.sh),脚本内含建库所需的全部参数。
- 执行 DBCA 建库:静默方式创建数据库,包括 SYSTEM/SYSAUX/TEMP/UNDO/USERS 表空间(大小可配置)、Redo 日志组(大小可配置)、字符集(默认 AL32UTF8)、国家字符集、SGA/PGA 内存设置等。
- 应用 datapatch:建库后自动执行 datapatch,将 RU 补丁落库到数据字典,保证软件补丁与数据库补丁版本一致。
- CDB 模式附加动作:创建 PDB、配置 PDB 管理员账户(is_cdb 为 true 时自动执行)。
阶段四:后期配置(stage4_post_config)
- 优化数据库参数:按配置调整 processes、open_cursors、session_cached_cursors、db_files、audit_trail、密码有效期(password_life_time unlimited)等参数并重启实例生效。
- 创建运维用户:创建监控用户(默认 monitor)与备份用户(默认 backup)并授予相应权限。
- CDB 配置(如适用):对 CDB 环境做补充配置。
- 安装验证:自动检查实例状态、监听器状态、数据库版本(v$version)、补丁信息(dba_registry_sqlpatch)、表空间信息,并输出验证报告。
- 更新断点:将阶段四标记为完成,整个安装流程结束。
3.3 存储管理功能
程序支持三种存储模式,通过配置文件 storage.mode 选择:
| 模式 | 配置取值 | 特点 | 适用场景 |
|---|---|---|---|
| LVM 多磁盘 | mode: LVM 且 multi_disk: true | 每块磁盘独立创建 VG 与 LV,性能隔离好,管理灵活 | 生产环境(推荐) |
| LVM 单磁盘 | mode: LVM 且 multi_disk: false | 单块磁盘建一个 VG,划分多个 LV 共享空间 | 只有一块额外磁盘的场景 |
| 纯文件系统 | mode: FILESYSTEM | 不使用 LVM,直接创建目录并授权 | 测试环境、系统盘、已有分区 |
- LVM 模式:程序自动完成 PV 创建、VG 创建、LV 创建、文件系统格式化(支持 xfs/ext4)、目录挂载与 fstab 持久化。多磁盘模式默认为 /oracle、/oradata、/archive、/backup 各分配一块磁盘。
- 文件系统模式:程序直接按配置创建目录并设置属主(oracle:oinstall)与权限(775)。
- 清理保护:执行整体清理时,默认保留 LVM(PV/VG/LV)与挂载点配置(cleanup 段的 preserve_lvm、preserve_mount_points 可控制),避免误删数据盘。
3.4 断点续装功能
- 断点文件:/tmp/fg_oracle_install/checkpoint.json,记录四个阶段的完成状态与当前阶段。
- 自动记录:每完成一个阶段,程序立即更新断点文件。
- 手动续装:使用 --stage=N 从指定阶段开始执行;未指定时,程序会从第一个未完成的阶段自动开始。
- 状态查看:使用 --status 随时查看各阶段完成情况。
- 重置断点:删除 /tmp/fg_oracle_install 目录即可清空断点,回到全新安装状态。
3.5 清理与重装功能
| 清理方式 | 命令参数 | 清理内容 |
|---|---|---|
| 整体清理 | --cleanup | 终止 Oracle 进程、删除 oracle 用户与相关组、清理 Oracle 目录与配置文件、清除监听与开机自启配置;默认保留 LVM 与挂载点 |
| 清理阶段四 | --cleanup-stage4 | 仅回退后期配置:还原被优化的数据库参数、删除 monitor/backup 运维用户 |
| 清理阶段三 | --cleanup-stage3 | 仅删除已创建的数据库(保留软件与监听),便于快速重建库 |
清理功能同样受断点机制保护:清理完成后对应的阶段状态会被重置,保证后续重装流程的正确性。
3.6 日志与进度显示
- 主日志文件:/tmp/fg_oracle_install/install.log,按"时间 + 级别 + 阶段 + 消息"格式记录每一步操作,包括执行过的关键命令(密码自动脱敏)。
- 终端输出:彩色高亮,INFO(白色)、SUCCESS(绿色,带对勾)、WARNING(黄色,带警告标志)、ERROR(红色,带叉号)、STEP(青色,带步骤编号)。
- 进度显示:长时间操作(解压、静默安装、建库)提供进度条与旋转指示器,并显示已耗时,避免用户误认为程序卡死。
- 日志分级完备:DEBUG 级别的明细(如每个软件包的安装结果)写入日志文件但不刷屏终端。
3.7 安全与可靠性特性
- 权限检查:程序启动即校验当前用户必须为 root,否则拒绝执行。
- 重复安装防护:安装前检测系统中已有的 Oracle 安装(ORACLE_HOME、 oraInventory、已运行实例等),发现冲突时提示先清理,防止覆盖破坏。
- 配置校验:加载配置后校验必填项与路径有效性;缺少关键文件(安装包、补丁包)在阶段开始前即报错。
- 命令重试机制:对网络/介质相关的偶发失败命令支持自动重试(可配置重试次数与间隔)。
- 密码脱敏:所有写入日志的命令自动替换 password、passwd 等敏感字段。
- 异常保护:捕获 Ctrl+C 中断并保存断点;未预期异常时保存现场信息后再退出,便于续装。
第四章 Oracle 19c数据库自动安装程序使用
4.1 程序目录结构
FGOracleAutoInstall_SF19/
├── FGOracleFsInstall19.py # 主程序(唯一入口)
├── config/
│ └── oracle_single_fs.yml # 主配置文件
├── response_files/ # 响应文件与建库脚本模板
│ ├── fs_db_install.rsp # 数据库软件静默安装响应文件模板
│ ├── fs_netconfig.rsp # 监听器配置响应文件模板
│ ├── fs_dbca.sh # NON-CDB 建库脚本模板
│ └── fs_dbca_cdb.sh # CDB 建库脚本模板
├── python-pkgs/ # Python 离线依赖(pip、PyYAML、setuptools)
├── rpm/ # 兼容性 RPM 包(compat 系列、麒麟 libnsl 系列)
├── docs/
│ ├── README.md # 项目简介
│ ├── INSTALL.md # 安装使用指南
│ └── README-WEB.md # 本说明手册
└── logs/ # 运行日志目录
/tmp/fg_oracle_install/ # 运行时生成
├── install.log # 主日志文件
└── checkpoint.json # 断点记录文件
4.2 Oracle 19c数据库自动安装快速开始(三步安装)
第一步:准备环境与介质
- 确认操作系统在支持列表中,内存、磁盘满足要求;
- 将 Oracle 安装包与补丁包放到 /soft 对应目录;
- 挂载系统 ISO 到 /mnt(或准备好网络 YUM 源);
- 安装 PyYAML:在线环境执行 pip3 install pyyaml;离线环境使用项目 python-pkgs 目录中的 whl 包安装(pip3 install pyyaml-6.0.3-*.whl)。
第二步:修改配置文件
vim config/oracle_single_fs.yml
至少核对以下内容:主机名、oracle 用户密码、数据库名与 SID、SYS/SYSTEM 密码、存储模式与磁盘设备名、安装包与补丁包路径。
第三步:执行安装
cd /fgedu/fgedudb/FGOracleAutoInstall_SF19
python3 FGOracleFsInstall19.py
之后程序将自动完成全部四个阶段。若中途失败,按终端提示与日志排查后,使用 --stage 参数继续。
4.3 命令行参数说明
python3 FGOracleFsInstall19.py [参数]
| 参数 | 说明 | 示例 |
|---|---|---|
| --config | 指定配置文件路径(默认 config/oracle_single_fs.yml) | --config=/opt/my.yml |
| --stage | 从指定阶段开始安装,取值 1/2/3/4 | --stage=2 |
| --cleanup | 整体清理已安装内容 | --cleanup |
| --cleanup-stage3 | 仅清理阶段三(删除已创建的数据库) | --cleanup-stage3 |
| --cleanup-stage4 | 仅清理阶段四(回退后期配置) | --cleanup-stage4 |
| --status | 查看各阶段安装状态 | --status |
| --help | 显示帮助信息 | --help |
参数可以组合使用,例如指定配置文件并从阶段三继续:
python3 FGOracleFsInstall19.py --config=/opt/my.yml --stage=3
注意:--status 与 --cleanup 模式下不强制要求配置文件存在;正常安装模式必须提供有效配置文件。
4.4 配置文件详解
配置文件为 YAML 格式,位于 config/oracle_single_fs.yml。全部参数均集中于此,主要段落如下。
(1)general 段:项目元信息(作者、版本、项目名),仅供标识使用。
(2)host 段:主机配置。
host:
hostname: "localhost" # 目标主机名
os_type: "auto" # 操作系统类型,保持 auto 自动检测
timezone: "Asia/Shanghai" # 系统时区
(3)user 段:oracle 用户与组配置。
user:
oracle_user: "oracle" # oracle 用户名
oracle_uid: 51001 # 用户 UID
oracle_passwd: "Oracle123" # 用户密码
groups: # 各组 GID,可按企业规范调整
oinstall: 50001
dba: 50002
...
(4)directory 段:目录规划。
directory:
oracle_base: "/oracle/app/oracle" # ORACLE_BASE
oracle_home: "/oracle/app/oracle/product/19c/db_1" # ORACLE_HOME
oradata_dir: "/oradata" # 数据文件目录
archive_dir: "/archive" # 归档目录
archive_size: "100G" # 归档目录大小规划
backup_dir: "/backup" # 备份目录
software_dir: "/soft" # 软件介质目录
inventory_dir: "/oracle/app/oraInventory" # oraInventory 目录
(5)database 段:数据库核心配置。
database:
db_name: "fgedudb" # 数据库名
db_sid: "fgedudb" # 实例名
pdb_name: "fgedupdb" # PDB 名称(CDB 模式使用)
is_cdb: false # 是否创建为 CDB
db_characterset: "AL32UTF8" # 字符集
national_characterset: "AL16UTF16" # 国家字符集
block_size: 8192 # 数据块大小
redo_log_size: 1024 # Redo 日志大小(MB)
memory_percentage: 40 # 自动内存管理百分比
sys_password: "Oracle123" # SYS 密码
system_password: "Oracle123" # SYSTEM 密码
pdb_admin_password: "Oracle123" # PDB 管理员密码
tablespaces: # 各表空间初始大小
system_size: "1.5G"
sysaux_size: "1G"
temp_size: "1G"
undo_size: "1G"
users_size: "500M"
(6)storage 段:存储模式配置(详见 3.3 节)。三种模式示例:
LVM 多磁盘模式(生产推荐):
storage:
mode: "LVM"
lvm:
enabled: true
multi_disk: true
multi_disks:
- device: "/dev/sdb"
vg_name: "vgoracle"
lv_name: "lvoracle"
size: "150G"
mount_point: "/oracle"
fs_type: "xfs"
- device: "/dev/sdc" # 以此类推:/oradata、/archive、/backup
...
LVM 单磁盘模式:
storage:
mode: "LVM"
lvm:
enabled: true
multi_disk: false
single_disk:
device: "/dev/sdb"
vg_name: "vgoracle"
lvs:
- lv_name: "lvoracle"
size: "150G"
mount_point: "/oracle"
fs_type: "xfs"
...
纯文件系统模式:
storage:
mode: "FILESYSTEM"
filesystem:
directories:
- path: "/oracle"
owner: "oracle"
group: "oinstall"
mode: "775"
...
(7)sysctl 段:内核参数。shmmax 与 shmall 配置为 0 时由程序根据物理内存自动计算;大页、网络参数、swappiness 等均可覆盖默认值。
(8)limits 段:资源限制。设置 oracle 与 root 用户的 nofile/nproc/stack 软硬限制。
(9)packages 段:软件包。core_packages 为 Oracle 依赖的核心包列表;util_packages 为常用工具;compat_rpm_files 为本地兼容 RPM 的绝对路径;kylin10sp2/sp3_extra_rpm_files 为麒麟系统按小版本区分的补充包。
(10)software 与 patch 段:安装介质与补丁路径。
software:
oracle_zip: "/soft/19c/LINUX.X64_193000_db_home.zip"
patch:
apply_ru: true # 是否应用 RU 补丁
apply_ojvm: true # 是否应用 OJVM 补丁
ru_patch_zip: "/soft/19.26/p37260974_190000_Linux-x86-64.zip"
ojvm_patch_zip: "/soft/19.26/p37102264_190000_Linux-x86-64.zip"
opatch_zip: "/soft/19.26/p6880880_190000_Linux-x86-64.zip"
(11)yum 段:YUM 源。iso_mount_point 为 ISO 挂载点(默认 /mnt);use_cdrom 控制是否自动挂载光驱;repo_content_kylin 与 repo_content_rhel 分别为国产系统单仓库与标准系统双仓库的模板内容。
(12)network 段:监听器配置(名称、端口 1521、协议 TCP)。
(13)checkpoint 段:断点与日志文件位置(默认 /tmp/fg_oracle_install)。
(14)cleanup 段:清理行为控制。preserve_lvm 与 preserve_mount_points 默认 true(保留存储);preserve_kernel_params、preserve_sysctl、preserve_limits 默认 false(清理时一并还原)。
(15)db_parameters 段:阶段四要优化的数据库参数。
(16)db_users 段:阶段四创建的监控与备份用户及其密码。
(17)shm 段:/dev/shm 大小占物理内存的百分比(默认 60)。
(18)system_check 段:系统检查阈值(最低内存 6GB、最低交换空间 4GB、各目录最小空间等)。
4.5 查看安装状态
python3 FGOracleFsInstall19.py --status
输出示例:
阶段一 (OS配置): ✓ 完成
阶段二 (软件安装): ✓ 完成
阶段三 (数据库创建): ○ 未完成
阶段四 (后期配置): ○ 未完成
第五章 Oracle 19c数据库自动安装案例场景与操作过程
本章给出八类典型场景的完整操作过程。所有示例均假设主程序位于 /fgedu/fgedudb/FGOracleAutoInstall_SF19 目录,且已按要求准备好介质与配置文件。
场景一:Oracle 19c数据库生产环境全新安装(LVM 多磁盘模式)
背景:一台全新的 RHEL 9.x 服务器,4 块额外磁盘(sdb、sdc、sdd、sde),要求按企业标准部署一套 19.26 版本的 NON-CDB 数据库。
操作过程:
- 准备介质:将 Oracle 安装包、RU 补丁、OPatch、OJVM 补丁上传至 /soft 对应目录,ISO 挂载到 /mnt。
- 修改配置 config/oracle_single_fs.yml:hostname、oracle 密码、db_name/db_sid、SYS/SYSTEM 密码;storage.mode 保持 LVM、multi_disk 保持 true,核对 4 块磁盘设备名与各 LV 大小;patch 段核对补丁版本路径;database.is_cdb 设为 false。
- 执行安装:
cd /fgedu/fgedudb/FGOracleAutoInstall_SF19
python3 FGOracleFsInstall19.py
- 观察输出:阶段一将依次完成系统检查、LVM 创建挂载、用户组创建、内核参数、YUM 源与软件包安装等 13 个步骤;阶段二完成解压、静默安装、监听器与补丁应用;阶段三建库并 datapatch;阶段四优化参数、创建运维用户并输出验证结果。
- 安装完成后验证:
su - oracle
sqlplus / as sysdba
select instance_name, status from v$instance;
select version_full from v$instance;
select patch_id, action, status from dba_registry_sqlpatch;
lsnrctl status
场景二:Oracle 19c数据库测试环境快速安装(纯文件系统模式)
背景:一台只有系统盘的测试虚拟机,不需要 LVM,快速搭一套实验库。
操作过程:
- 修改配置:storage.mode 改为 FILESYSTEM,filesystem.directories 保留默认的 /oracle、/oradata、/archive、/backup 目录定义;确认系统盘剩余空间满足最低要求。
- 可选简化:patch.apply_ru 与 patch.apply_ojvm 可设为 false,跳过补丁以缩短安装时间(生产环境不建议)。
- 执行安装:python3 FGOracleFsInstall19.py
- 程序将直接创建目录并授权,其余流程与场景一相同。
场景三:Oracle 19c数据库单磁盘服务器安装(LVM 单磁盘模式)
背景:服务器仅有一块 600GB 的额外磁盘,希望以 LVM 方式管理。
操作过程:
- 修改配置:storage.mode 设为 LVM,multi_disk 设为 false,在 single_disk 段指定 device 为该磁盘,vg_name 自定义,并在 lvs 列表中规划 4 个逻辑卷(/oracle、/oradata、/archive、/backup)及其大小。
- 执行安装,其余同场景一。
场景四:Oracle 19c数据库CDB/PDB 多租户架构安装
背景:需要创建 CDB 并带一个 PDB 的 19c 环境。
操作过程:
- 修改配置:
database:
is_cdb: true
db_name: "fgeducdb"
db_sid: "fgeducdb"
pdb_name: "fgedupdb"
pdb_admin_password: "Oracle123"
- 执行安装。阶段三会自动选择 CDB 建库脚本,创建 CDB、种子库与目标 PDB;阶段四会进行 CDB 相关补充配置。
- 安装后验证 PDB:
sqlplus / as sysdba
show pdbs
select name, open_mode from v$pdbs;
场景五:Oracle 19c数据库安装中断后的断点续装
背景:阶段二执行静默安装时因 tmpfs 空间不足失败,已修复问题,需要继续安装。
操作过程:
- 查看状态,确认断点位置:
python3 FGOracleFsInstall19.py --status
- 修复问题(例如扩大 /tmp 空间、更换介质后重新校验文件)。
- 从阶段二继续:
python3 FGOracleFsInstall19.py --stage=2
- 程序从阶段二重新开始,阶段一的成果自动复用,直至全部完成。
说明:若不指定 --stage,程序会自动从第一个未完成阶段开始执行。
场景六:Oracle 19c数据库安装失败后的整体清理与重装
背景:环境被其他人动过,状态混乱,决定彻底清理后重装。
操作过程:
- 整体清理(默认保留 LVM 与挂载点,存储不用重建):
python3 FGOracleFsInstall19.py --cleanup
- 清除断点信息,回到全新状态:
rm -rf /tmp/fg_oracle_install
- 重新执行安装:
python3 FGOracleFsInstall19.py
说明:若存储也需要重建(例如磁盘规划变更),可将配置 cleanup 段的 preserve_lvm 与 preserve_mount_points 设为 false 后再执行 --cleanup,程序将连同 LVM 一起清理。
场景七:Oracle 19c只重建数据库(保留软件与监听)
背景:阶段四建库后参数配置出错或库损坏,希望只删库重建,软件与监听保留。
操作过程:
- 仅清理阶段三(删除已创建的数据库):
python3 FGOracleFsInstall19.py --cleanup-stage3
- 从阶段三重新建库:
python3 FGOracleFsInstall19.py --stage=3
- 如后期配置也需要重做,再执行 --cleanup-stage4 与 --stage=4。
场景八:Oracle 19c数据库离线(内网)环境部署
背景:生产服务器无法访问外网,无 pip 源。
操作过程:
- 在有网络的同架构机器上准备依赖,或直接使用项目自带的 python-pkgs 目录(已含 PyYAML 的 whl 包)。
- 目标服务器安装 PyYAML:
pip3 install python-pkgs/pyyaml-6.0.3-*.whl
# 或使用系统 RPM
dnf install -y python3-pyyaml
- 验证:python3 -c "import yaml; print('OK')"
- ISO 挂载为本地 YUM 源(程序也会在阶段一自动配置并刷新缓存)。
- 其余步骤与场景一相同。
场景九:Oracle 19c数据库批量标准化交付
背景:需要在多台同配置服务器上交付相同的 Oracle 环境。
推荐过程:
- 以一台机器为模板,完成配置文件编写与安装,验证通过后留存该配置文件作为标准模板。
- 在其余服务器上:按同一清单准备 /soft 介质,分发标准配置文件,逐台执行 python3 FGOracleFsInstall19.py。
- 每台安装完成后用 --status 与数据库验证 SQL 核对结果,形成交付记录。
说明:批量场景建议统一磁盘设备名、GID/UID 与目录规划,保证所有环境完全一致,便于后续统一运维。
第六章 常用问题与排查
6.1 安装前(启动阶段)问题
问题 1:提示"必须以 root 用户运行此程序"
原因:当前用户不是 root。
处理:切换到 root 后再执行(su - root 或 sudo -i)。本程序需要 root 权限完成系统配置。
问题 2:提示缺少 PyYAML 模块
处理:
# 在线
pip3 install pyyaml
# 离线(使用项目自带包)
pip3 install python-pkgs/pyyaml-6.0.3-*.whl
问题 3:提示配置文件不存在
原因:--config 指定的路径错误,或未在项目目录执行。
处理:确认文件存在(相对路径会基于主程序所在目录解析),或改用绝对路径指定。
问题 4:提示系统中已存在 Oracle 安装
原因:检测到已有的 ORACLE_HOME、oraInventory 或运行中的实例,为防止覆盖破坏而中止。
处理:确认是否为历史残留;如需重建,先执行 --cleanup 清理,再重新安装。
6.2 阶段一(OS 配置)问题
问题 5:内存或交换空间不足警告
处理:程序内置检查阈值为内存不低于 6GB、交换空间不低于 4GB。按配置 system_check 段或扩容硬件后重试;测试环境确需降低阈值时,可修改 system_check 段配置。
问题 6:YUM 源配置失败(dnf makecache 失败)
原因与处理:
- ISO 未挂载:执行 mount /dev/cdrom /mnt(或挂载 ISO 文件)后重试;
- 虚拟机未连接光驱:在虚拟化平台勾选"已连接";
- 使用网络源:检查网络与仓库地址可达性;
- 检查 /etc/yum.repos.d/ 下是否残留冲突仓库文件,必要时临时移出后重试。
问题 7:软件包安装失败(个别包找不到)
原因与处理:
- 麒麟/欧拉系统缺少 libnsl 系列包:确认 packages 段对应小版本的 extra_rpm_files 已指向正确的 RPM 路径,且文件已上传;
- compat-libcap1、compat-libstdc++-33 缺失:确认 /soft/rpm 目录中两个 compat RPM 已就位(项目 rpm 目录自带);
- 偶发下载失败:程序支持自动重试;仍失败时单独用 yum install 包名 验证该包是否可用,处理后重新执行阶段一。
问题 8:LVM 创建失败
处理:
- 确认磁盘设备名正确(lsblk 查看),且磁盘未挂载、未含数据;
- 确认磁盘容量大于配置的 LV 大小之和;
- 清理模式默认保留 LVM:若需重建存储,将 cleanup.preserve_lvm 设为 false 后执行 --cleanup。
6.3 阶段二(软件安装)问题
问题 9:提示安装包或补丁包不存在
处理:核对配置文件 software.oracle_zip 与 patch 段的三个 zip 路径与实际文件一致;用 ls -lh 确认文件大小正常(安装包约 3GB)。
问题 10:静默安装失败(runInstaller 报错)
排查方法:
tail -100 /tmp/fg_oracle_install/install.log
tail -100 /oracle/app/oraInventory/logs/installActions*.log
常见原因:
- 依赖包缺失:按日志中 PRVF 提示补齐软件包后,从阶段二重试;
- 发行版识别问题:程序已自动写入 CV_ASSUME_DISTID,若手工改动过响应文件需检查该变量;
- 交换空间不足:扩大 Swap 后重试;
- ORACLE_HOME 路径不规范:路径不要包含中文、空格,且不要指向已存在非空目录。
问题 11:监听器启动失败
排查:
su - oracle
lsnrctl status
cat /oracle/app/oracle/product/19c/db_1/network/admin/listener.ora
tail -50 /oracle/diag/tnslsnr/*/listener/trace/listener.log 2>/dev/null || true
ss -lntp | grep 1521
常见原因:1521 端口被占用(更换 network.listener_port 或释放端口)、防火墙未按配置处理、hostname 解析异常(检查 /etc/hosts)。
问题 12:补丁应用失败(opatch apply 报错)
排查:
su - oracle
cd $ORACLE_HOME/OPatch
./opatch lsinventory
tail -100 /tmp/fg_oracle_install/install.log
常见原因:OPatch 版本过低(确认已用 p6880880 替换)、补丁包不完整(重新校验 zip)、补丁冲突(查看日志中的冲突清单)。修复后从阶段二重试。
6.4 阶段三(数据库创建)问题
问题 13:DBCA 建库失败
排查:
tail -100 /oracle/cfgtoollogs/dbca/*/*.log
tail -100 /tmp/fg_oracle_install/install.log
常见原因:
- 内存不足导致建库缓慢或失败:降低 database.memory_percentage 或增加内存;
- 归档目录空间不足:核对 archive_size 规划与磁盘实际容量;
- 字符集配置问题:确认 db_characterset 取值合法(常用 AL32UTF8、ZHS16GBK);
- 之前建库失败残留:执行 --cleanup-stage3 清理后重试。
问题 14:datapatch 执行失败
处理:确认实例处于 OPEN 状态,查看日志中 datapatch 输出;必要时手工执行:
su - oracle
sqlplus / as sysdba
startup
exit
cd $ORACLE_HOME/OPatch
./datapatch -verbose
6.5 阶段四(后期配置)问题
问题 15:参数修改未生效
说明:部分参数(如 processes、audit_trail 相关生效项)需要重启实例。程序会自动处理;如手工干预后未生效,可重启实例后重试阶段四。
问题 16:monitor/backup 用户创建失败
处理:检查 db_users 段配置;确认数据库处于 OPEN 状态;查看日志中具体 ORA 报错(常见为密码复杂度或用户已存在)。
6.6 通用排查方法
(1)查看主日志(最重要):
tail -f /tmp/fg_oracle_install/install.log
grep -E "ERROR|WARNING" /tmp/fg_oracle_install/install.log
(2)常用日志位置一览:
| 日志 | 路径 |
|---|---|
| 程序主日志 | /tmp/fg_oracle_install/install.log |
| 断点文件 | /tmp/fg_oracle_install/checkpoint.json |
| OUI 安装日志 | /oracle/app/oraInventory/logs/installActions*.log |
| DBCA 日志 | /oracle/cfgtoollogs/dbca//.log |
| 补丁日志 | $ORACLE_HOME/cfgtoollogs/opatch/*.log |
| 监听日志 | /oracle/diag/tnslsnr/主机名/listener/trace/listener.log |
| 告警日志 | /oracle/diag/rdbms/库名/实例名/trace/alert_实例名.log |
(3)手动修复后续装原则:定位失败步骤并手工修复后,从包含该步骤的阶段重新执行(使用 --stage)。例如阶段一第 9 步失败,修复后执行 --stage=1,程序会重复执行阶段一(已完成的配置项是幂等操作,重复执行安全)。
(4)彻底重来:--cleanup 清理,删除 /tmp/fg_oracle_install,重新安装。
(5)寻求帮助时请提供:主日志文件、--status 输出、失败步骤编号、操作系统版本与配置文件(脱敏后),以便快速定位。
6.7 安装后的常规验证清单
# 1. 实例状态
su - oracle
sqlplus / as sysdba
select instance_name, status from v$instance;
# 2. 版本与补丁
select version_full from v$instance;
select patch_id, action, status, description from dba_registry_sqlpatch;
# 3. 监听器
lsnrctl status
# 4. 数据文件与表空间
select name from v$datafile;
select tablespace_name, status from dba_tablespaces;
# 5. CDB 模式追加
show pdbs
# 6. 运维用户
select username, account_status from dba_users where username in ('MONITOR','BACKUP');
# 7. 开机自启与挂载
df -h | grep -E "oracle|oradata|archive|backup"
grep -E "oracle|oradata" /etc/fstab
第七章 附录
附录A 预计安装耗时
| 阶段 | 预计时间 |
|---|---|
| 阶段一(OS 配置) | 10-20 分钟 |
| 阶段二(软件安装,含补丁) | 30-60 分钟 |
| 阶段三(数据库创建) | 20-40 分钟 |
| 阶段四(后期配置) | 5-10 分钟 |
| 总计 | 65-130 分钟 |
实际耗时取决于硬件性能、磁盘类型与补丁应用情况。
附录B 命令速查表
| 目的 | 命令 |
|---|---|
| 全新安装 | python3 FGOracleFsInstall19.py |
| 指定配置安装 | python3 FGOracleFsInstall19.py --config=/path/config.yml |
| 从第 N 阶段续装 | python3 FGOracleFsInstall19.py --stage=N |
| 查看状态 | python3 FGOracleFsInstall19.py --status |
| 整体清理 | python3 FGOracleFsInstall19.py --cleanup |
| 仅删库重建 | python3 FGOracleFsInstall19.py --cleanup-stage3 然后 --stage=3 |
| 仅回退后期配置 | python3 FGOracleFsInstall19.py --cleanup-stage4 然后 --stage=4 |
| 跟踪日志 | tail -f /tmp/fg_oracle_install/install.log |
附录C
作者:风哥
官方网站: http://www.fgedu.net.cn , http://www.itpux.com
数据库教程: https://edu.51cto.com/lecturer/8020378.html
工具视频教程: https://edu.51cto.com/course/40651.html

浙公网安备 33010602011771号