惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
阮一峰的网络日志
阮一峰的网络日志
Jina AI
Jina AI
博客园 - Franky
U
Unit 42
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
宝玉的分享
宝玉的分享
B
Blog RSS Feed
雷峰网
雷峰网
D
DataBreaches.Net
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
I
InfoQ
美团技术团队
云风的 BLOG
云风的 BLOG
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Martin Fowler
Martin Fowler
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
大猫的无限游戏
大猫的无限游戏
G
Google Developers Blog
T
Tailwind CSS Blog
P
Proofpoint News Feed
The GitHub Blog
The GitHub Blog
月光博客
月光博客
Engineering at Meta
Engineering at Meta

博客园 - 风哥数据库教程

数据库教程FGMT20‑Oracle容灾体系架构与数据库升级迁移方案 数据库教程FGMT19‑Oracle多租户容器架构与新特性总结 数据库教程FGMT18‑Oracle‑EMCC智能化集中运维管理系统 数据库教程FGMT17‑Oracle性能优化之故障诊断与性能优化 数据库教程FGMT16‑Oracle性能优化之操作系统诊断与分析 数据库教程FGMT15‑Oracle性能优化之物化视图与任务管理 数据库教程FGMT14‑Oracle性能优化之资源限制与资源管理 数据库教程FGMT13‑Oracle性能优化之数据仓库与分区表 数据库教程FGMT12‑Oracle性能诊断与综合分析 数据库教程FGMT11‑Oracle性能优化之性能收集与报告分析 数据库教程FGMT10‑Oracle性能优化之统计信息管理与维护 数据库教程FGMT09‑Oracle性能优化之执行计划与基线管理 数据库教程FGMT08‑Oracle性能优化之基准测试与案例分析 数据库教程FGMT06‑Oracle数据库日常管理维护操作 数据库教程FGMT07‑Oracle数据库备份恢复与数据迁移 数据库教程FGMT05‑Oracle数据库SQL语言开发与应用实战 数据库教程FGMT03‑生产环境Linux+Oracle19c+ASM安装配置与项目实战 数据库教程FGMT01‑Oracle数据库基础知识与版本特性 数据库教程FGMT00‑教程学习大纲与学习指南(第一部) MySQL 8/9集群InnoDB Cluster自动化安装过程-Fgedu MySQL8/9 MGR组复制集群安装自动化全过程-Fgedu MySQL8/9主从复制集群安装自动化全过程-Fgedu MySQL8.x/9.x数据库安装自动化全过程-Fgedu 异构数据库迁移全过程-FGO2ODB工具 从国外数据库迁移到国产数据库全过程-FGO2CDB工具 Oracle迁移到PostgreSQL数据库-FGOracle2PG工具 MySQL迁移到PostgreSQL数据库-FGMySQL2PG工具 Oracle 19c数据库一键自动安装 for Fgedu 数据库数据文件误删恢复工具FGFDU(FGEDU File DUL) 华为高斯数据库恢复工具FGOGDU(FGEDU openGauss DUL)
Oracle 26ai数据库一键自动安装 for Fgedu
风哥数据库教程 · 2026-08-31 · via 博客园 - 风哥数据库教程

# Oracle 26ai数据库一键自动安装 for Fgedu

> Oracle 26ai数据库一键自动安装 for Fgedu是一个 Oracle 26ai 数据库全自动安装部署工具,专为生产环境设计。它以"配置驱动 + 分阶段执行"为核心架构,将传统上需要数小时甚至数天的人工 Oracle 安装过程——操作系统参数调优、用户与目录规划、存储与 LVM 配置、依赖包安装、静默软件安装、监听器配置、CDB 容器数据库创建、归档模式开启、参数优化与安全加固——全部浓缩为一条命令即可完成的标准化流水线,并支持断点续装、状态查询与安全清理重装,是 DBA 进行 Oracle 26ai 单机环境快速交付的利器。

## 目录

- 1. 程序介绍

- 2. 功能特性

- 3. 支持环境

- 4. 程序使用

- 5. 案例场景与操作过程

- 6. 常用问题与排查

- 附录

---

## 关于作者

作者:风哥

官方网站:  http://www.fgedu.net.cn ,   http://www.itpux.com

数据库教程:   https://edu.51cto.com/lecturer/8020378.html

工具视频教程:   https://edu.51cto.com/course/40651.html

---

## 1. 程序介绍

### 1.1 概述

 Oracle 26ai数据库一键自动安装 for Fgedu是一个**面向生产环境的 Oracle 26ai全自动安装程序**。它使用 Python 编写,无需编译、无需安装 Oracle 客户端,仅依赖 Python 3.7+ 与 PyYAML 两个基础组件即可运行。程序通过一份 YAML 配置文件描述目标环境的全部要素——主机名、网络、用户、组、目录、存储(LVM/文件系统)、内核参数、资源限制、软件包、Oracle 安装包路径、数据库名、PDB 名、字符集、密码、监听端口等——然后按四个阶段自动执行完整的安装流水线:

- **阶段一(OS 配置)**:系统检查与信息采集、/etc/hosts 配置、目录与 LVM 存储创建、oracle 用户与 10 个标准组的创建、内核参数(sysctl)、资源限制(limits)、SELinux 与防火墙关闭、GRUB 的 NUMA 与透明大页优化、systemd-logind 的 RemoveIPC 调整、rc-local 启用、离线 YUM 源配置、40+ 个依赖 RPM 包安装、oracle 用户环境变量、时区、/dev/shm 大小调整;

- **阶段二(软件安装)**:Oracle 26ai 安装包解压、响应文件自动渲染、runInstaller 静默安装、root 脚本(orainstRoot.sh / root.sh)自动执行、监听器静默配置(netca),并在 netca 失败时自动回退为手工生成 listener.ora / tnsnames.ora / sqlnet.ora;

- **阶段三(数据库创建)**:渲染 DBCA 脚本并以 CDB(容器数据库)模式静默创建数据库(含 1 个 PDB),这是 Oracle 26ai 唯一支持的建库模式;

- **阶段四(后期配置)**:密码策略放宽(PASSWORD_LIFE_TIME UNLIMITED)、核心参数优化(processes/open_cursors/db_files 等)、归档模式(ARCHIVELOG)开启、PDB 自动打开触发器创建、monitor/backup 监控备份专用账户创建、最终安装验证(实例状态、数据库状态、版本、监听状态)。

整个过程中的每一条命令、每一个检查结果都会同步写入日志文件,控制台以彩色符号(✓ 成功 / ⚠ 警告 / ✗ 失败)实时反馈进度,长耗时操作还会显示旋转进度指示器与耗时统计。

### 1.2 设计理念与背景

在真实的生产交付项目中,Oracle 安装远不是"双击 setup.exe"那么简单。一次标准的 Oracle 单机安装,通常涉及以下繁琐且易错的手工步骤:

1. 规划并创建 /oracle、/oradata、/archive、/backup 等目录,划分磁盘、创建 PV/VG/LV、格式化文件系统并写入 /etc/fstab;

2. 创建 oinstall、dba、oper、backupdba、dgdba、kmdba、racdba 等 10 个组与 oracle 用户,并设置密码(国产化系统往往还有严格的密码复杂度策略需要绕过);

3. 逐项修改 /etc/sysctl.conf 中的 17 类内核参数,修改 /etc/security/limits.conf 中的资源限制,并确保 pam_limits 生效;

4. 关闭 SELinux 与 firewalld,修改 GRUB 追加 numa=off 与 transparent_hugepage=never,调整 RemoveIPC=no,启用 rc-local;

5. 在离线环境中配置本地 YUM 源,安装 40 余个依赖 RPM,还要为麒麟系统准备专属的 libnsl/libnsl2 兼容包;

6. 编写并调试 runInstaller 静默安装响应文件、netca 响应文件、DBCA 建库脚本;

7. 安装后手工执行 root 脚本、创建监听、建库、开归档、调参数、建监控用户……任何一步遗漏都会在日后埋下隐患。

传统做法依赖工程师的记忆力和操作规范文档,费时费力且质量参差不齐。FGOracleFsInstall26 的设计理念就是**把上述全部人工经验固化为代码**:

- **配置即环境**:一份 YAML 文件完整描述目标环境,改配置就能复用到任何机器,实现"环境即代码"(Infrastructure as Code)的交付方式;

- **幂等与防重**:内核参数、资源限制等配置文件修改均带 `FGOracleFsInstall` 标记,重复运行自动检测跳过,不会重复追加;/etc/fstab、sysctl.conf、limits.conf 修改前自动备份;

- **分阶段与断点续装**:安装进度以 JSON 检查点文件持久化,中断后重新运行自动跳过已完成阶段,无需从头再来;

- **生产导向**:默认配置即按生产标准设定(xfs 文件系统、LVM 多磁盘分离、归档模式、HugePages、监控/备份专用账户),开箱即是规范的生产部署。

### 1.3 与手工安装的对比

| 对比项 | 传统手工安装 | Oracle 26ai数据库自动安装 |

|-------|-------------|---------------------|

| 安装耗时 | 通常 4~8 小时(含排查) | 全自动 40~90 分钟(视硬件而定) |

| 操作一致性 | 依赖工程师经验,易漏项 | 每一步标准化,批间零差异 |

| 参数规范 | 逐项手工编辑,易写错 | 17 类内核参数、8 项资源限制自动写入 |

| 存储规划 | 手工 pvcreate/vgcreate/lvcreate | 依据 YAML 自动完成 LVM 全流程 |

| 依赖包 | 手工逐个 yum/rpm | 40+ 核心包 + 兼容包自动安装 |

| 中断恢复 | 从头重来或人工判断 | 检查点续装,自动跳过已完成阶段 |

| 过程记录 | 人工截图/复制粘贴 | 全程日志自动落盘,敏感信息脱敏 |

| 卸载清理 | 手工清理残留,易留垃圾 | --cleanup 安全清理,可保留 LVM/挂载点 |

| 环境复制 | 每台机器重复劳动 | 换配置文件即可批量复制部署 |

### 1.4 与 Oracle 原生安装方式的区别

| 特性 | OUI 图形安装 | 手工静默安装 | Oracle 26ai数据库自动安装 |

|------|-------------|-------------|---------------------|

| 需要 GUI/X11 环境 | 是 | 否 | 否 |

| 需要预先完成 OS 配置 | 是(否则预检查报错) | 是 | 否(程序自动完成) |

| 需要手工编写响应文件 | 部分 | 是(3 份,易出错) | 否(模板自动渲染) |

| root 脚本执行 | 手工 | 手工 | 自动执行 |

| 监听器配置 | 手工 netca | 手工 | 自动 netca + 失败自动回退 |

| 建库 | 手工 DBCA | 手工 DBCA | 自动 DBCA(CDB 模式) |

| 归档/参数优化/账户 | 手工 SQL | 手工 SQL | 自动完成 |

| 适合批量复制 | 差 | 一般 | 优秀 |

### 1.5 Oracle 26ai 关键变化

Oracle 26ai 相对 19c 在安装架构上有重大变化,本程序已全部适配:

| 特性 | Oracle 19c | Oracle 26ai | 本程序的适配 |

|------|-----------|-------------|--------------|

| CDB 容器模式 | 可选 | **强制**,Non-CDB 不再支持 | DBCA 强制 `-createAsContainerDatabase true` |

| PDB | 可选创建 | **必须至少 1 个** | 自动创建 1 个 PDB 并配置自动打开 |

| RU 补丁 | 安装后必须打 RU | **已集成**在安装介质中 | 无需补丁步骤 |

| OJVM 补丁 | 需单独应用 | **已集成** | 无需补丁步骤 |

| 安装流程 | 装软件→打补丁→建库 | 装软件→建库(简化) | 两步合并为一条流水线 |

| runInstaller 返回码 | 0 为成功 | 0 或 6 均视为成功 | 返回码 0/6 都按成功处理 |

### 1.6 适用场景

1. **生产环境新机交付**:从裸机到可用的 Oracle 26ai 数据库,一条命令完成全部标准化部署;

2. **测试/开发环境快速搭建**:改改配置文件即可批量生成标准化测试库;

3. **国产化替代项目**:麒麟 V10 SP3、欧拉 OS 等国产系统上的 Oracle 部署适配(专属兼容包、密码策略、YUM 源自动处理);

4. **离线/内网环境部署**:支持 ISO 挂载本地 YUM 源,全程无需外网;

5. **教学与实验环境**:配合风哥的数据库课程,快速获得标准实验环境;

6. **重装与迁移演练**:清理重装流程标准化,便于反复演练交付流程。

---

## 2. Oracle 26ai数据库自动安装功能特性

### 2.1 核心功能一览

| 功能 | 说明 |

|------|------|

| **一键全自动安装** | 从操作系统配置到数据库创建、参数优化、安装验证的端到端自动化,全程无需人工干预 |

| **四阶段流水线** | OS 配置 → 软件安装 → 数据库创建 → 后期配置,阶段边界清晰,可单阶段执行、可断点续装 |

| **配置驱动** | 全部参数集中于一份 YAML 配置文件,无硬编码路径,换环境只改配置 |

| **LVM 自动化** | 多磁盘(每盘独立 VG)与单磁盘(单 VG 多 LV)两种模式,自动 pvcreate/vgcreate/lvcreate/mkfs.xfs/fstab/mount |

| **响应文件模板化** | 3 份响应文件/脚本模板使用 `{{variable}}` 占位符,安装时自动从配置渲染,杜绝手写 rsp 的笔误 |

| **断点续装** | 检查点文件记录各阶段完成状态,中断后重跑自动跳过已完成阶段 |

| **状态查询** | `--status` 随时查看四个阶段的完成情况与最后更新时间 |

| **安全清理** | `--cleanup` 停库、删用户、删目录、清配置、清断点一站式清理,可配置保留 LVM 与挂载点 |

| **详细日志** | 双通道日志(控制台彩色 + 文件落盘),命令执行自动脱敏密码,长任务显示进度 |

| **多发行版兼容** | 自动检测 RHEL/OEL/麒麟/欧拉/CentOS/AlmaLinux/Rocky 等,并按发行版差异化处理 |

| **离线部署** | 自动挂载 ISO 配置本地 YUM 源,支持完全离线的内网安装 |

| **CDB 强制适配** | 深度适配 Oracle 26ai 强制 CDB 架构,自动创建并管理 PDB |

### 2.2 Oracle 26ai数据库自动安装操作系统全自动配置(阶段一)

程序在阶段一完成 14 个步骤的操作系统标准化配置,每一项都遵循"先备份、带标记、防重复"的安全修改原则:

**主机与网络**:向 /etc/hosts 写入 `IP + 主机名` 映射(未配置时自动获取本机 IP 与主机名),保证 Oracle 对主机名解析的要求;设置系统时区(默认 Asia/Shanghai)。

**目录与存储**:支持两种存储模式——`LVM` 模式下自动完成多磁盘(每块盘独立卷组,如 /dev/sdk→vgoracle→/oracle、/dev/sdh→vgoradata→/oradata 等)或单磁盘(单卷组上划分多个逻辑卷)的全流程操作(pvcreate -f、vgcreate、lvcreate、mkfs.xfs、fstab 备份追加、mount、属主授权);`FILESYSTEM` 模式下直接按配置创建 /oracle、/oradata、/archive、/backup 目录并授权。随后创建 ORACLE_BASE、ORACLE_HOME、Inventory、软件、响应文件等全部目录。

**用户与组**:创建 oinstall(50001)、dba(50002)、oper(50003)、backupdba(50004)、dgdba(50005)、kmdba(50006)、racdba(50007)、asmdba(50008)、asmoper(50009)、asmadmin(50010) 共 10 个标准组(GID 可配置),创建 oracle 用户(UID 可配置,默认 51001)并赋予全部附加组;针对麒麟系统自动放宽 pwquality 密码复杂度策略(备份后修改 /etc/security/pwquality.conf 与 PAM 配置);密码设置内置 6 种回退方案(chpasswd → heredoc → 多路径 chpasswd → passwd --stdin → openssl passwd -6 + usermod -p),确保在各种国产系统上都能设置成功。

**内核参数**:向 /etc/sysctl.conf 写入 17 项参数:fs.aio-max-nr=1048576、fs.file-max=6815744、kernel.shmmax/shmall/shmmni、kernel.sem="250 32000 100 128"、kernel.panic_on_oops、kernel.randomize_va_space、net.ipv4.ip_local_port_range="9000 65500"、net.ipv4.ip_forward、net.core.rmem_default/rmem_max/wmem_default/wmem_max、vm.nr_hugepages(默认 2000 页,2MB 大页约 4GB)、vm.hugetlb_shm_group、vm.swappiness=5、vm.min_free_kbytes=204800,并执行 sysctl -p 生效。

**资源限制**:向 /etc/security/limits.conf 写入 root 与 oracle(及 grid 预留)的 nofile(最大 524288)、nproc(16384)、stack(32768)限制,并确保 /etc/pam.d/login 中 pam_limits.so 生效。

**系统服务优化**:关闭 SELinux(setenforce 0 + 配置文件 disabled);停止并禁用 firewalld;修改 GRUB 内核启动参数追加 `numa=off` 与 `transparent_hugepage=never` 并重新生成 grub.cfg;将 systemd-logind 的 RemoveIPC 设为 no(防止 Oracle 共享内存段被 systemd 回收导致实例崩溃);启用 rc-local 服务便于开机自启脚本。

**软件包与环境**:自动挂载 ISO(或指定 ISO 文件 loop 挂载)配置本地 YUM 源(麒麟/欧拉用单仓库,RHEL/OEL 用 AppStream+BaseOS 双仓库,原 repo 自动备份至 bk/ 目录);安装 psmisc 及 40 个核心 RPM(binutils、glibc-devel、libaio-devel、libX 系列、ksh、librdmacm、unixODBC、smartmontools、sysstat、policycoreutils 等)与 vim/wget/curl 等工具包;安装 compat-libcap1、compat-libstdc++-33 兼容包,麒麟系统按 SP2/SP3 版本自动选择 libnsl 系列专属包;覆写 oracle 用户 .bash_profile(ORACLE_SID、ORACLE_BASE、ORACLE_HOME、NLS_LANG、NLS_DATE_FORMAT、PATH、umask 等);按物理内存 60% 调整 /dev/shm 大小并重新挂载。

### 2.3 Oracle 软件静默安装(阶段二)

- **安装包校验与解压**:检查 `software.oracle_zip`(如 /soft/LINUX.X64_2326100_db_home.zip)存在性与大小,以 oracle 用户身份解压至 ORACLE_HOME;

- **响应文件自动渲染**:将 `{{hostname}}`、`{{oracle_home}}`、`{{oracle_base}}`、`{{inventory_dir}}`、`{{listener_port}}` 等变量从配置文件自动替换到 fs_db_install.rsp 与 fs_netconfig.rsp 模板中;

- **runInstaller 静默安装**:以 oracle 用户执行 `./runInstaller -silent -responseFile ... -waitforcompletion -ignorePrereqFailure`,超时保护 7200 秒;返回码 0 或 6 均视为成功(兼容 Oracle 26ai 的简化安装语义);

- **root 脚本自动执行**:自动执行 orainstRoot.sh 与 root.sh(root.sh 以 `yes |` 自动应答交互),无需人工守候;

- **监听器双保险配置**:优先以 netca 静默方式配置监听器;若 netca 失败,程序自动在 $ORACLE_HOME/network/admin 下手工生成 listener.ora(HOST=主机名、PORT=监听端口)、tnsnames.ora(服务名指向数据库名、DEDICATED 连接)与 sqlnet.ora(TNSNAMES/EZCONNECT/HOSTNAME 解析顺序),确保监听配置万无一失,最后自动启动监听。

### 2.4 数据库自动创建(阶段三)

程序渲染 fs_dbca_cdb.sh 模板后执行 DBCA 静默建库,核心参数包括:

- `-createAsContainerDatabase true`:Oracle 26ai 强制 CDB 模式;

- `-numberOfPDBs 1 -pdbName <pdb_name>`:自动创建 1 个 PDB(默认 fgedupdb);

- `-storageType FS`:文件系统存储(与程序定位一致,非 ASM);

- `-datafileDestination <oradata_dir>`:数据文件目录独立于软件目录(默认 /oradata);

- `-redoLogFileSize`、`-characterSet`(默认 AL32UTF8)、`-nationalCharacterSet`(默认 AL16UTF16);

- `-memoryMgmtType AUTO_SGA -memoryPercentage 40`:自动共享内存管理;

- `-recoveryAreaDestination NONE -emConfiguration NONE`:不启用本地 FRA 与 EM(归档目录独立规划为 /archive)。

建库过程超时保护 7200 秒,程序会提示预计耗时 20~40 分钟,并以进度指示器显示运行状态。

### 2.5 数据库后期优化与加固(阶段四)

- **密码策略放宽**:`ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED`,避免生产环境 180 天密码过期导致的连接故障;

- **核心参数优化**:DB_FILES=8192、PROCESSES=2000、OPEN_CURSORS=2000、SESSION_CACHED_CURSORS=300、DB_RECOVERY_FILE_DEST_SIZE=100G、DB_RECOVERY_FILE_DEST=/archive(均写入 SPFILE);

- **归档模式**:自动执行 SHUTDOWN IMMEDIATE → STARTUP MOUNT → ALTER DATABASE ARCHIVELOG → ALTER DATABASE OPEN,并验证 ARCHIVE LOG LIST;

- **PDB 自动打开**:创建 AFTER STARTUP 数据库级触发器 open_all_pdbs,实例重启后所有 PDB 自动 OPEN,无需手工干预;

- **专用账户创建**:在 PDB 中自动创建 monitor(监控专用,GRANT SELECT ANY DICTIONARY + CREATE SESSION)与 backup(备份专用,GRANT SELECT ANY TABLE + BACKUP ANY TABLE + CREATE SESSION)两个最小权限账户,符合安全审计中"应用/监控/备份分账户"的规范;

- **安装验证**:自动查询 v$instance、v$database、v$version、v$pdbs 与 lsnrctl status,输出最终验证结果;

- **表空间容量提醒**:完成后输出 SYSTEM/SYSAUX/TEMP/UNDOTBS1/USERS 表空间的建议扩容 SQL 模板,避免初期容量告警。

### 2.6 断点续装与状态管理

- 安装进度持久化于 `/tmp/fg_oracle_install/checkpoint.json`,记录 installation_id(首次运行时间戳)、current_stage、stage1~stage4_completed 与最近更新时间;

- 每个阶段成功结束时立即写入检查点;阶段失败或 Ctrl+C 中断时同样保存进度后退出;

- **续装方式**:直接重新运行安装命令即可——程序检测到某阶段已完成会自动打印"阶段N已完成,跳过"并从未完成阶段继续;也可用 `--stage N` 显式从第 N 阶段开始;断点粒度为"阶段";

- `--status` 命令随时查看四阶段完成状态与最后更新时间,无需登录服务器翻日志。

### 2.7 安全清理与重装

`--cleanup` 提供六个步骤的标准化清理:停止数据库与监听(含 pkill 兜底清理 ora_/tnslsnr/asm_/grid_ 进程)→ 删除 oracle/grid 用户与 10 个组(/home/oracle 先整体备份为 /home/oracle.backup.时间戳)→ 清理 ORACLE_BASE、Inventory 及数据目录(保留挂载点时只清空内容不删挂载点;/soft 软件目录不清理)→ 清理 /etc/oratab、/etc/oraInst.loc 等 Oracle 配置文件与 fstab/sysctl/limits 中的程序标记段(均可按 cleanup 配置选择保留)→ 可选清理 LVM(lvremove/vgremove)→ 清除断点文件。清理动作均有 y/n 二次确认,防止误操作。

### 2.8 日志、进度与安全

- **双通道日志**:控制台彩色输出(✓ 绿色成功 / ⚠ 黄色警告 / ✗ 红色失败 / 青色步骤号),文件日志完整记录 `[时间] [级别] [阶段] 消息`;

- **命令审计**:每条执行的命令均以 CMD 级别落盘,密码类参数自动替换为 `******`,满足安全审计要求且不泄露敏感信息;

- **长任务体验**:runInstaller/DBCA/解压等长任务后台运行并显示旋转进度指示器,结束后输出耗时;日志文件支持 `tail -f` 实时跟踪;

- **信号保护**:捕获 SIGINT/SIGTERM,中断时先保存检查点再退出,保证断点数据一致;

- **预检查报告**:安装前自动检测 OS 发行版、内存、CPU 核数、IP 地址与 Python 依赖,结果异常时给出警告或错误提示(可选择继续或中止)。

### 2.9 多发行版深度兼容

| 兼容点 | 说明 |

|-------|------|

| 发行版自动识别 | 依次探测 /etc/oracle-release、/etc/kylin-release、/etc/openEuler-release、/etc/redhat-release、/etc/almalinux-release、/etc/rocky-release、/etc/os-release |

| CV_ASSUME_DISTID | 按发行版自动设置(OEL→OL8,麒麟/欧拉/RHEL→RHEL8.0),规避安装时 OS 版本断言失败 |

| 麒麟专属处理 | 密码复杂度策略放宽、单仓库 YUM 源、按 SP2/SP3 选择 libnsl 系列兼容包(失败自动回退混装) |

| YUM 源差异 | 麒麟/欧拉单仓库 file:///mnt/;RHEL/OEL 双仓库 AppStream+BaseOS;原 repo 备份至 bk/ |

---

## 3. Oracle 26ai数据库自动安装支持环境

### 3.1 支持的操作系统

| 操作系统 | 版本 | CV_ASSUME_DISTID | 支持程度 |

|---------|------|------------------|---------|

| Red Hat Enterprise Linux | 9.x(8.x 可识别) | RHEL8.0 | 推荐 |

| Oracle Linux | 9.x(8.x 可识别) | OL8 | 推荐 |

| 麒麟 Kylin | V10 SP3(SP2 可识别) | RHEL8.0 | 推荐(含专属兼容包) |

| 欧拉 openEuler | 23.09+ | RHEL8.0 | 推荐 |

| CentOS / AlmaLinux / Rocky | 8.x / 9.x | RHEL8.0 | 可识别运行 |

| 其他 RHEL 兼容发行版 | — | RHEL8.0 | 未验证,可尝试 |

> 说明:程序内置 OSDetector 模块自动识别上述发行版;主版本号 ≥8 的 RHEL 系发行版会被标记为 recommended。

### 3.2 支持的 Oracle 版本与安装介质

| 项目 | 要求 |

|------|------|

| 数据库版本 | Oracle Database 26ai(Linux x86_64) |

| 安装介质 | LINUX.X64_2326100_db_home.zip(约 2.5GB,26ai 已内置 RU 与 OJVM 补丁,无需另打补丁) |

| 架构 | 仅支持 CDB(容器数据库)模式,自动创建 1 个 PDB;不支持 Non-CDB |

| 存储方式 | 文件系统(FS),不支持 ASM 模式安装 |

| 单机/集群 | 单实例(Single Instance),不支持 RAC |

### 3.3 硬件与资源要求

| 项目 | 最低要求 | 推荐配置 |

|------|---------|---------|

| CPU | 2 核 | 4 核+ |

| 物理内存 | 6 GB | 16 GB+ |

| 交换空间 | 4 GB | 与物理内存等大 |

| 系统盘 / | 50 GB | 100 GB+ |

| /oracle(软件) | 50 GB | 150 GB+ |

| /oradata(数据) | 50 GB | 200 GB+ |

| /archive(归档) | 50 GB | 150 GB+ |

| /backup(备份) | 50 GB | 150 GB+ |

> 注意:HugePages 默认按 2000 页(2MB 大页,合计约 4GB)写入内核参数,与默认 4GB SGA 匹配;内存远大于 8GB 的机器建议按实际 SGA 规划调整。

### 3.4 软件要求

| 项目 | 要求 |

|------|------|

| 操作系统用户 | root(必须以 root 身份运行,程序内部自动 su 至 oracle 用户执行相关步骤) |

| Python | 3.7 及以上(程序启动时自动校验) |

| Python 模块 | PyYAML >= 5.0(`pip3 install pyyaml`) |

| 基础命令 | unzip、tar、systemctl、dnf/yum、lvm2 工具集(阶段一会自动安装补充) |

| 网络 | 主机名可解析(程序自动写 /etc/hosts);监听端口 1521 未被占用 |

### 3.5 存储模式要求

| 模式 | 说明 | 磁盘要求 |

|------|------|---------|

| LVM 多磁盘(默认,生产推荐) | 每块磁盘独立卷组,性能隔离好 | 4 块独立裸盘(默认示例为 /dev/sdk、/dev/sdh、/dev/sdi、/dev/sdj,各 ≥150G) |

| LVM 单磁盘 | 单卷组上划分 4 个逻辑卷 | 1 块独立裸盘(默认示例 /dev/sdg,≥600G) |

| FILESYSTEM | 不使用 LVM,直接建目录 | 现有分区/系统盘空间充足即可,适合测试 |

> LVM 模式下目标磁盘必须为**无数据的裸盘**(程序执行 pvcreate -f 会强制覆盖磁盘签名),请在配置前仔细核对盘符,避免误删数据盘。

### 3.6 字符集支持

| 配置项 | 默认值 | 可选值示例 |

|-------|--------|-----------|

| 数据库字符集 db_characterset | AL32UTF8 | ZHS16GBK、AL32UTF8(推荐, Unicode 标准) |

| 国家字符集 national_characterset | AL16UTF16 | UTF8 |

| 客户端 NLS_LANG | AMERICAN_AMERICA.AL32UTF8 | 与数据库字符集保持一致 |

---

## 4. Oracle 26ai数据库自动安装程序使用

### 4.1 获取与部署程序

将整个程序目录上传至服务器(默认建议放置于 /soft 下):

```

/soft/FGOracleAutoInstall_SF26/

├── FGOracleFsInstall26.py          # 主程序

├── config/

│   └── oracle_single_fs.yml        # 配置文件(需按环境修改)

├── response_files/                  # 响应文件模板(3 份)

│   ├── fs_db_install.rsp           # runInstaller 静默安装响应文件

│   ├── fs_netconfig.rsp            # netca 监听配置响应文件

│   └── fs_dbca_cdb.sh              # DBCA CDB 建库脚本模板

├── rpm/                             # 兼容 RPM 包(8 个)

│   ├── compat-libcap1-1.10-7.el7.x86_64.rpm

│   ├── compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm

│   └── libnsl/libnsl2 系列(麒麟 SP2/SP3 专属)

└── docs/                            # 文档目录

```

### 4.2 环境准备

```bash

# 1. 上传 Oracle 26ai 安装包到 /soft

#    /soft/LINUX.X64_2326100_db_home.zip

# 2. LVM 模式:确认目标裸盘存在(按配置文件中的 device 项核对)

lsblk

# 3. 挂载系统 ISO(供程序配置本地 YUM 源;留空则程序自动挂载 /dev/cdrom 或指定 iso_file)

mkdir -p /mnt

mount /dev/cdrom /mnt    # 也可由程序自动完成

```

### 4.3 配置文件详解

配置文件为 `config/oracle_single_fs.yml`,**必须按环境修改**的核心项:

| 配置项 | 默认值 | 说明 |

|-------|--------|------|

| host.hostname | fgedudb | 主机名(留空自动获取) |

| host.ip_address | (空) | 本机 IP(留空自动获取) |

| user.oracle_uid | 51001 | oracle 用户 UID |

| user.oracle_passwd | Oracle123 | oracle 操作系统密码(务必修改) |

| storage.mode | LVM | LVM 或 FILESYSTEM |

| storage.lvm.multi_disk | true | true=多磁盘每盘独立 VG;false=单磁盘多 LV |

| storage.lvm.multi_disks[*].device | /dev/sdk 等 | LVM 目标裸盘(务必核对!pvcreate -f 会清盘) |

| directory.oracle_base | /oracle/app/oracle | ORACLE_BASE |

| directory.oracle_home | /oracle/app/oracle/product/26ai/db_1 | ORACLE_HOME |

| database.db_name | fgedudb | 数据库名 |

| database.db_sid | fgedudb | 实例名 |

| database.pdb_name | fgedupdb | PDB 名称 |

| database.sys_password | Oracle123 | SYS 密码(务必修改) |

| database.system_password | Oracle123 | SYSTEM 密码(务必修改) |

| database.pdb_admin_password | Oracle123 | PDB 管理员密码(务必修改) |

| database.db_characterset | AL32UTF8 | 字符集(建库后不可改,慎重选择) |

| database.memory_percentage | 40 | SGA 自动管理内存百分比 |

| database.redo_log_size | 1024 | 联机日志大小(MB) |

| software.oracle_zip | /soft/LINUX.X64_2326100_db_home.zip | 安装包路径 |

| network.listener_port | 1521 | 监听端口 |

| yum.iso_file / use_cdrom | (空)/ true | ISO 文件路径 / 自动挂载光驱 |

| checkpoint.* | /tmp/fg_oracle_install | 断点与日志目录 |

其他可调项:user.groups(10 个组 GID)、directory.*(各目录路径)、sysctl.*(17 项内核参数)、limits.*(资源限制)、packages.*(RPM 清单与目录)、db_parameters.*(processes/open_cursors 等)、db_users.*(monitor/backup 账户密码)、shm.size_percent(/dev/shm 占内存百分比)、cleanup.*(清理保留策略)、rc_local.enabled 等。配置加载时会强制校验 db_name、db_sid、oracle_base、oracle_home 四个必填项,缺失直接报错退出。

### 4.4 命令行参数详解

```

用法: python3 FGOracleFsInstall26.py [选项]

--config=PATH    配置文件路径(默认 config/oracle_single_fs.yml,相对路径基于程序目录)

--stage=N        从指定阶段开始安装: 1=OS配置 2=软件安装 3=数据库创建 4=后期配置

--cleanup        清理已安装内容(交互式 y/n 确认)

--cleanup-stage=4 仅回退阶段四(重置参数与账户,用于重跑后期配置)

--status         查看安装状态(四阶段完成情况)

--help           显示帮助

示例:

python3 FGOracleFsInstall26.py --config=config/oracle_single_fs.yml   # 完整安装

python3 FGOracleFsInstall26.py --stage=2                              # 从阶段二开始

python3 FGOracleFsInstall26.py --status                               # 查看进度

python3 FGOracleFsInstall26.py --cleanup                              # 清理重装

```

### 4.5 安装流程总览

| 阶段 | 名称 | 主要内容 | 预计耗时 |

|-----|------|---------|---------|

| 1 | OS 配置 | 系统检查、目录/存储、用户组、内核参数、limits、SELinux/防火墙/GRUB/RemoveIPC、YUM 源、RPM 包、用户环境、时区、/dev/shm | 5~15 分钟 |

| 2 | 软件安装 | 解压安装包、渲染响应文件、runInstaller 静默安装、root 脚本、监听配置 | 15~30 分钟 |

| 3 | 数据库创建 | DBCA 静默创建 CDB + 1 个 PDB | 20~40 分钟 |

| 4 | 后期配置 | 密码策略、参数优化、归档模式、PDB 触发器、monitor/backup 账户、安装验证 | 2~5 分钟 |

### 4.6 Oracle 26ai数据库自动安装执行安装

```bash

cd /soft/FGOracleAutoInstall_SF26

# 方式一:完整安装(推荐首次使用)

python3 FGOracleFsInstall26.py

# 方式二:分阶段执行(便于逐段观察与排查)

python3 FGOracleFsInstall26.py --stage 1   # OS 配置

python3 FGOracleFsInstall26.py --stage 2   # 软件安装

python3 FGOracleFsInstall26.py --stage 3   # 数据库创建

python3 FGOracleFsInstall26.py --stage 4   # 后期配置

# 中断后续装:直接重新运行即可,已完成的阶段自动跳过

python3 FGOracleFsInstall26.py

```

安装过程中的交互确认(共三类):预检查发现错误时询问"是否要继续安装? (y/n)";检测到本机已存在 Oracle 环境时询问"是否要清理现有安装? (y/n)";清理模式下询问"确认要继续吗? (y/n)"。其余步骤全自动执行。

### 4.7 断点续装与状态查看

```bash

# 查看当前安装状态

python3 FGOracleFsInstall26.py --status

# 断点文件与日志位置

/tmp/fg_oracle_install/checkpoint.json   # 各阶段完成状态

/tmp/fg_oracle_install/install.log       # 完整安装日志

# 实时跟踪日志

tail -f /tmp/fg_oracle_install/install.log

```

> 注意:断点文件位于 /tmp,若服务器重启导致 /tmp 被清理,检查点会丢失,此时需重新完整安装(或手工重建 checkpoint.json)。断点粒度为"阶段",阶段内部的步骤不具备断点能力,阶段重跑时已完成的子步骤会凭标记/幂等设计自动跳过。

### 4.8 清理与重装

```bash

# 一键清理(停库、删用户/组、删目录、清配置、清断点;有 y/n 确认)

python3 FGOracleFsInstall26.py --cleanup

# 仅回退阶段四(重置优化参数与账户,便于重跑后期配置)

python3 FGOracleFsInstall26.py --cleanup-stage 4

# 清理后重新安装

python3 FGOracleFsInstall26.py

```

清理保留策略由配置文件 cleanup 节控制:preserve_lvm=true(保留 VG/LV 与文件系统数据,仅清软件层)、preserve_mount_points=true(保留挂载点与 fstab)、preserve_kernel_params=false(默认连内核参数标记段一起清理)。

### 4.9 安装完成后的验证与连接

安装成功后程序会输出完整的信息汇总(数据库名、SID、连接 IP 与端口、SYS/SYSTEM 密码、各目录路径、表空间扩容提醒与 8 条日常维护指南)。人工复核命令:

```bash

# 环境与进程

su - oracle

lsnrctl status

ps -ef | grep ora_ | grep -v grep

# 数据库状态

sqlplus / as sysdba

SELECT instance_name, status FROM v$instance;

SELECT name, open_mode, cdb FROM v$database;

SELECT name, open_mode FROM v$pdbs;

ARCHIVE LOG LIST;

EXIT;

# 远程连接(PDB 与 CDB 根服务)

sqlplus sys/YourPassword@192.168.1.51:1521/fgedudb as sysdba

sqlplus system/YourPassword@192.168.1.51:1521/fgedupdb

```

---

## 5. Oracle 26ai数据库自动安装案例场景与操作过程

### 场景一:RHEL 9.x 生产环境全新安装(LVM 多磁盘)

**背景**:一台全新 RHEL 9.4 物理机,64GB 内存,系统盘 200GB,另有 4 块 150GB 裸盘(/dev/sdh~sdk)用于 Oracle,需交付标准生产库。

**操作过程**:

```bash

# 1. 上传程序与安装介质

#    /soft/FGOracleAutoInstall_SF26/(程序)

#    /soft/LINUX.X64_2326100_db_home.zip(安装包)

# 2. 核对磁盘(确认 sdh/sdi/sdj/sdk 为无数据裸盘)

lsblk

# 3. 修改配置文件关键项

vi config/oracle_single_fs.yml

#   storage.lvm.multi_disks 中 device 与实际盘符一致(本例默认即可)

#   database.* 三个密码改为生产密码

#   user.oracle_passwd 改为生产密码

# 4. 安装 Python 依赖

pip3 install pyyaml

# 5. 挂载 RHEL 9 ISO(或留空由程序自动挂载光驱)

mount /dev/cdrom /mnt

# 6. 一键安装(root 执行)

cd /soft/FGOracleAutoInstall_SF26

python3 FGOracleFsInstall26.py

# 7. 观察进度,等待四阶段全部完成

# 8. 按程序输出的汇总信息复核(lsnrctl status / sqlplus 验证)

```

**结果**:约 60~90 分钟后获得一个 CDB 模式生产库(fgedudb + fgedupdb),归档模式开启,monitor/backup 专用账户就绪,HugePages 与内核参数按生产标准配置完成。

### 场景二:麒麟 V10 SP3 国产化环境离线安装

**背景**:政企内网环境,麒麟 V10 SP3,无法联网,ISO 镜像文件已拷贝至 /soft/Kylin-Server-V10-SP3.iso。

**操作要点**:

```yaml

# 配置文件中指定 ISO 文件(程序自动 loop 挂载到 /mnt 并生成单仓库源)

yum:

  iso_file: "/soft/Kylin-Server-V10-SP3.iso"

  use_cdrom: false

```

```bash

python3 FGOracleFsInstall26.py --stage 1

```

程序自动:备份原 repo 至 bk/ → 生成麒麟单仓库 fgedu.repo(baseurl=file:///mnt/)→ dnf makecache → 安装 40+ 核心包 → 按 SP3 自动选择 libnsl-2.28-98 系列专属 RPM → 放宽麒麟密码复杂度策略后成功设置 oracle 密码。随后依次执行阶段 2/3/4 完成安装。

### 场景三:测试环境快速部署(FILESYSTEM 模式)

**背景**:虚拟机测试环境,无独立裸盘,希望利用系统盘快速搭建实验库。

```yaml

storage:

  mode: "FILESYSTEM"       # 不使用 LVM,直接建目录

```

```bash

python3 FGOracleFsInstall26.py

```

程序跳过 LVM 环节,直接按 filesystem.directories 创建 /oracle、/oradata、/archive、/backup(oracle:oinstall 775),其余流程与生产一致。全程约 40~60 分钟即可获得标准测试库。

### 场景四:安装中断后的断点续装

**过程**:

```bash

# 阶段 3 建库过程中因存储空间误判失败,程序打印错误并保存检查点后退出

python3 FGOracleFsInstall26.py --status

#   阶段一(OS配置):    已完成

#   阶段二(软件安装):  已完成

#   阶段三(数据库创建): 未完成

#   阶段四(后期配置):  未完成

# 扩容 /oradata 后直接重跑,阶段一/二自动跳过,从阶段三继续

python3 FGOracleFsInstall26.py

```

若需强制重跑某阶段(例如重做后期优化),先 `--cleanup-stage 4` 回退该阶段状态,再 `--stage 4` 重跑。

### 场景五:清理重装

**背景**:安装演练完成后需把机器还原为"裸机"状态重新交付。

```bash

python3 FGOracleFsInstall26.py --cleanup

# 输入 y 确认,程序依次执行 C.1~C.6 六步清理

# /home/oracle 先备份为 /home/oracle.backup.20260831_120000

# cleanup.preserve_lvm=true 时 LVM 与 /oradata 中的数据文件保留,仅清软件层

```

如需彻底还原(连 LVM 一起删除),将配置文件中 cleanup.preserve_lvm 改为 false 后再执行 --cleanup。

### 场景六:单磁盘 LVM 部署

**背景**:只有一块 600GB 独立盘 /dev/sdg 可用。

```yaml

storage:

  mode: "LVM"

  lvm:

    multi_disk: false          # 切换为单磁盘模式

    single_disk:

      device: "/dev/sdg"

      vg_name: "vgoracle"

      lvs:

        - { lv_name: "lvoracle",  size: "150G", mount_point: "/oracle",  fs_type: "xfs" }

        - { lv_name: "lvoradata", size: "300G", mount_point: "/oradata", fs_type: "xfs" }

        - { lv_name: "lvarchive", size: "100G", mount_point: "/archive", fs_type: "xfs" }

        - { lv_name: "lvbackup",  size: "50G",  mount_point: "/backup",  fs_type: "xfs" }

```

程序在单块盘上创建一个卷组并划分 4 个逻辑卷,后续流程不变。

### 场景七:安装后的日常维护基线

程序在完成信息中给出了 8 条维护基线,摘录如下:

```bash

# 1. 日常连接

su - oracle

sqlplus / as sysdba

# 2. 实例与库状态检查

SELECT instance_name, status FROM v$instance;

SELECT name, open_mode, log_mode FROM v$database;

# 3. 监听状态

lsnrctl status

lsnrctl services

# 4. 归档检查(切换日志并确认归档正常)

ALTER SYSTEM SWITCH LOGFILE;

SELECT * FROM v$log;

SELECT name, space_limit, space_used FROM v$recovery_file_dest;

# 5. 建议 RMAN 基线策略

CONFIGURE CONTROLFILE AUTOBACKUP ON;

CONFIGURE RETENTION POLICY TO REDUNDANCY 7;

BACKUP DATABASE PLUS ARCHIVELOG DELETE INPUT;

# 6. 告警日志巡检

tail -100f /oracle/app/oracle/diag/rdbms/fgedudb/fgedudb/trace/alert_fgedudb.log

# 7. 数据库启停

sqlplus / as sysdba

SHUTDOWN IMMEDIATE;   -- 关库

STARTUP;              -- 开库(PDB 触发器自动打开全部 PDB)

lsnrctl start / lsnrctl stop

```

---

## 6. 常用问题与排查

### Q1: 提示 "缺少PyYAML模块" 或 ModuleNotFoundError: No module named 'yaml'

**原因**:未安装 PyYAML。

**解决**:

```bash

pip3 install pyyaml

# 离线环境:在有网机器下载后拷贝安装

pip3 download pyyaml -d /tmp/pkg

pip3 install --no-index --find-links=/tmp/pkg pyyaml

```

### Q2: 提示 Python 版本过低

**原因**:程序要求 Python 3.7+。

**解决**:`dnf install python3` 或安装 python3.9+;用 `python3 --version` 确认后再运行。

### Q3: Permission denied / 各种权限报错

**原因**:未以 root 运行。

**解决**:程序必须以 root 执行(内部自动 su 到 oracle 完成安装动作):`su - root` 后再运行;或 `sudo python3 FGOracleFsInstall26.py`。

### Q4: 阶段二报 "Oracle安装包不存在"

**排查**:确认 `software.oracle_zip` 路径与实际文件名一致;`ls -lh /soft/LINUX.X64_2326100_db_home.zip` 检查文件存在且大小约 2.5GB(传输不完整会导致解压失败);确认 oracle 用户对 /soft 有读权限。

### Q5: 端口 1521 被占用

**排查与解决**:

```bash

lsof -i:1521          # 查看占用进程

# 停掉占用进程,或修改配置文件 network.listener_port 换端口后重装

```

### Q6: 安装中断了,怎么继续?有没有 --resume 参数?

**说明**:本程序**没有 --resume 参数,也无需它**。检查点机制会记录已完成阶段,直接重新运行安装命令即可自动跳过已完成阶段、从未完成处继续;也可以用 `--stage N` 显式指定从第 N 阶段开始。断点文件为 /tmp/fg_oracle_install/checkpoint.json,可用 `--status` 查看进度。注意 /tmp 被清理(如服务器重启)后检查点丢失,需重新完整安装。

### Q7: runInstaller 退出码是 6,算失败吗?

**说明**:不算。Oracle 26ai 的 runInstaller 在简化安装模式下返回 0 或 6 均代表成功,程序已按此逻辑判定,无需处理。

### Q8: 报错 "Non-CDB mode is not supported"

**原因**:试图以 Non-CDB 方式建库。

**说明**:Oracle 26ai 强制 CDB 模式,本程序默认即以 CDB 创建(is_cdb: true),正常使用本程序不会遇到此错误;若自行修改了 DBCA 模板请恢复 `-createAsContainerDatabase true`。

### Q9: 阶段二软件安装失败,如何排查?

**排查顺序**:

```bash

# 1. 程序日志

tail -200 /tmp/fg_oracle_install/install.log

# 2. Oracle 官方安装日志

ls -lt /oracle/app/oraInventory/logs/     # 查看最新的 installActions*.log

grep -i error /oracle/app/oraInventory/logs/installActions*.log | tail -20

# 3. 常见根因

#    - 依赖包缺失:确认阶段一 RPM 安装步骤无红色报错

#    - OS 版本断言:程序已自动设置 CV_ASSUME_DISTID,一般不会发生

#    - 内存/交换空间不足:free -h 核对

#    - /tmp 空间不足:df -h /tmp

```

修复后 `--stage 2` 重跑(阶段一已完成会自动跳过)。

### Q10: 阶段三 DBCA 建库失败,如何排查?

**排查顺序**:

```bash

# 1. 程序日志中 DBCA 输出段

grep -A 30 -i dbca /tmp/fg_oracle_install/install.log | tail -50

# 2. DBCA 日志

ls -lt /oracle/app/oracle/cfgtoollogs/dbca/    # 查看最新日志

# 3. 常见根因

#    - /oradata 空间不足或属主不对:df -h /oradata; ls -ld /oradata

#    - 密码不符合复杂度:配置文件中密码建议含大小写+数字(程序已在麒麟系统放宽 OS 层策略,但 DBCA 层仍需 8 位以上)

#    - 端口/实例名冲突:确认无残留实例

```

处理后 `--stage 3` 重跑。

### Q11: 监听器没有起来 / 远程连不上

**说明**:程序优先用 netca 配置监听,失败时自动回退手工生成 listener.ora/tnsnames.ora/sqlnet.ora 并启动。若仍异常:

```bash

su - oracle

lsnrctl status                       # 查看状态

lsnrctl start                        # 手工启动

cat $ORACLE_HOME/network/admin/listener.ora

netstat -tlnp | grep 1521            # 确认端口监听

# 防火墙:程序已在阶段一关闭 firewalld;若自行启用过防火墙需放行 1521

```

### Q12: /etc/hosts、sysctl.conf 里出现重复条目?

**说明**:程序写入的配置段均带 `FGOracleFsInstall` 标记,重复运行会自动检测跳过。若出现重复(例如曾被其他工具写入),手工清理无标记的旧条目即可;程序修改前均自动备份原文件(如 fstab、sysctl.conf),可对比还原。

### Q13: 清理重装后表空间/参数不符合预期?

**说明**:`--cleanup-stage 4` 会把阶段四设置的核心参数(processes/open_cursors/sga/pga 等)RESET 回默认值并清除阶段四完成标记,随后 `--stage 4` 重跑即可重新应用优化参数。注意该操作用于回退后期配置,不影响软件与数据库本体。

### Q14: HugePages 占用了大量内存,想调整怎么办?

**说明**:程序默认写入 vm.nr_hugepages=2000(2MB 大页,约 4GB),与默认 SGA 匹配。若内存紧张且不使用 HugePages,可在阶段一完成前修改 sysctl 相关处理,或手工 `sysctl -w vm.nr_hugepages=0` 并从 /etc/sysctl.conf 删除对应标记行;内存充裕的机器建议按 "SGA+8MB" 折算大页数(页数 = (SGA_GB×1024+8)×1024/2)。

### Q15: 检查点文件丢失 / /tmp 被清空

**说明**:检查点与日志默认位于 /tmp/fg_oracle_install/,服务器重启或 /tmp 清理后检查点会丢失。此时直接重新完整安装即可(各配置步骤均有幂等标记,重复执行安全);如需持久化,可修改配置 checkpoint.checkpoint_dir 指向 /var/log 等持久目录。

### Q16: 安装完成后告警日志提示表空间不足?

**说明**:程序在完成信息中已给出扩容模板,按需执行:

```sql

-- 查看表空间使用率

SELECT tablespace_name, used_percent FROM dba_tablespace_usage_metrics;

-- 扩容示例

ALTER TABLESPACE SYSTEM ADD DATAFILE '/oradata/fgedudb/system02.dbf' SIZE 10G AUTOEXTEND ON NEXT 512M MAXSIZE 31G;

ALTER TABLESPACE TEMP ADD TEMPFILE '/oradata/fgedudb/temp02.dbf' SIZE 5G AUTOEXTEND ON NEXT 512M MAXSIZE 31G;

```

### Q17: 程序日志里密码会泄露吗?

**说明**:不会。日志类输出对命令中的 password/passwd/-p/--password 等参数自动脱敏为 `******`;但配置文件中密码为明文,请严格控制 config/*.yml 的文件权限(建议 600),并在交付后修改默认密码。

### Q18: 日志与状态文件都在哪里?

| 文件 | 路径 |

|------|------|

| 程序日志 | /tmp/fg_oracle_install/install.log |

| 断点文件 | /tmp/fg_oracle_install/checkpoint.json |

| Oracle 安装日志 | /oracle/app/oraInventory/logs/ |

| DBCA 日志 | /oracle/app/oracle/cfgtoollogs/dbca/ |

| 数据库告警日志 | /oracle/app/oracle/diag/rdbms/<db_name>/<db_sid>/trace/alert_<sid>.log |

| 监听日志 | /oracle/app/oracle/diag/tnslsnr/<hostname>/listener/trace/listener.log |

---

## 附录

### 附录 A:快速命令参考

```bash

# 完整安装

python3 FGOracleFsInstall26.py

# 分阶段

python3 FGOracleFsInstall26.py --stage 1 / --stage 2 / --stage 3 / --stage 4

# 状态与续装

python3 FGOracleFsInstall26.py --status

python3 FGOracleFsInstall26.py            # 重跑即续装

# 清理

python3 FGOracleFsInstall26.py --cleanup

python3 FGOracleFsInstall26.py --cleanup-stage 4

# 日志跟踪

tail -f /tmp/fg_oracle_install/install.log

# 安装验证

su - oracle -c "lsnrctl status"

sqlplus / as sysdba

```

### 附录 B:安装前检查清单

- [ ] 服务器满足硬件要求(内存 ≥6GB,各目录磁盘 ≥50GB)

- [ ] Oracle 26ai 安装包已上传至 /soft 且完整(约 2.5GB)

- [ ] LVM 模式下裸盘已核对(pvcreate -f 会清盘,务必确认盘符)

- [ ] Python 3.7+ 与 PyYAML 已就绪

- [ ] 系统 ISO 可挂载(或已指定 iso_file)

- [ ] 配置文件中密码、数据库名、PDB 名、字符集已按需修改

- [ ] 1521 端口未被占用

- [ ] 以 root 身份执行

### 附录 C:使用建议与免责声明

1. **务必先在测试环境演练**:虽然程序全部动作均有备份与幂等保护,但 LVM 清盘类操作不可逆,生产执行前请先在同等环境演练并核对磁盘盘符;

2. **密码安全**:配置文件中密码为明文,请设置文件权限为 600,安装完成后及时修改默认密码(Oracle123 / monitor123 / backup123);

3. **模板文件**:响应文件模板在渲染时会被原地替换为真实值,重装前建议保留一份原始模板备份;

4. **适用范围**:本程序适用于单机文件系统模式的 Oracle 26ai 安装,RAC/ASM/Data Guard 场景请使用对应的专用方案;

5. 本程序及文档仅供学习、培训与授权范围内的生产交付使用,使用本程序产生的任何直接或间接后果由使用者自行承担。

---

作者:风哥

官方网站:  http://www.fgedu.net.cn ,   http://www.itpux.com

数据库教程:   https://edu.51cto.com/lecturer/8020378.html

工具视频教程:   https://edu.51cto.com/course/40651.html