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

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

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

目录

    1. 程序介绍
    1. 功能特性
    1. 支持环境
    1. 程序使用
    1. 案例场景与操作过程
    1. 常用问题与排查
  • 附录

关于作者

作者:风哥
官方网站: 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=offtransparent_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 环境准备

# 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数据库自动安装执行安装

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 断点续装与状态查看

# 查看当前安装状态
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 清理与重装

# 一键清理(停库、删用户/组、删目录、清配置、清断点;有 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 条日常维护指南)。人工复核命令:

# 环境与进程
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,需交付标准生产库。

操作过程

# 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。

操作要点

# 配置文件中指定 ISO 文件(程序自动 loop 挂载到 /mnt 并生成单仓库源)
yum:
  iso_file: "/soft/Kylin-Server-V10-SP3.iso"
  use_cdrom: false
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 模式)

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

storage:
  mode: "FILESYSTEM"       # 不使用 LVM,直接建目录
python3 FGOracleFsInstall26.py

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

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

过程

# 阶段 3 建库过程中因存储空间误判失败,程序打印错误并保存检查点后退出
python3 FGOracleFsInstall26.py --status
#   阶段一(OS配置):    已完成
#   阶段二(软件安装):  已完成
#   阶段三(数据库创建): 未完成
#   阶段四(后期配置):  未完成

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

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

场景五:清理重装

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

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 可用。

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 条维护基线,摘录如下:

# 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。
解决

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 被占用

排查与解决

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: 阶段二软件安装失败,如何排查?

排查顺序

# 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 建库失败,如何排查?

排查顺序

# 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 并启动。若仍异常:

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: 安装完成后告警日志提示表空间不足?

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

-- 查看表空间使用率
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_.log
监听日志 /oracle/app/oracle/diag/tnslsnr//listener/trace/listener.log

附录

附录 A:快速命令参考

# 完整安装
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:安装前检查清单

附录 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

posted @ 2026-08-31 10:44  风哥数据库教程  阅读(7)  评论(0)    收藏  举报