Oracle 26ai数据库一键自动安装 for Fgedu
Oracle 26ai数据库一键自动安装 for Fgedu
Oracle 26ai数据库一键自动安装 for Fgedu是一个 Oracle 26ai 数据库全自动安装部署工具,专为生产环境设计。它以"配置驱动 + 分阶段执行"为核心架构,将传统上需要数小时甚至数天的人工 Oracle 安装过程——操作系统参数调优、用户与目录规划、存储与 LVM 配置、依赖包安装、静默软件安装、监听器配置、CDB 容器数据库创建、归档模式开启、参数优化与安全加固——全部浓缩为一条命令即可完成的标准化流水线,并支持断点续装、状态查询与安全清理重装,是 DBA 进行 Oracle 26ai 单机环境快速交付的利器。
目录
-
- 程序介绍
-
- 功能特性
-
- 支持环境
-
- 程序使用
-
- 案例场景与操作过程
-
- 常用问题与排查
- 附录
关于作者
作者:风哥
官方网站: 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 单机安装,通常涉及以下繁琐且易错的手工步骤:
- 规划并创建 /oracle、/oradata、/archive、/backup 等目录,划分磁盘、创建 PV/VG/LV、格式化文件系统并写入 /etc/fstab;
- 创建 oinstall、dba、oper、backupdba、dgdba、kmdba、racdba 等 10 个组与 oracle 用户,并设置密码(国产化系统往往还有严格的密码复杂度策略需要绕过);
- 逐项修改 /etc/sysctl.conf 中的 17 类内核参数,修改 /etc/security/limits.conf 中的资源限制,并确保 pam_limits 生效;
- 关闭 SELinux 与 firewalld,修改 GRUB 追加 numa=off 与 transparent_hugepage=never,调整 RemoveIPC=no,启用 rc-local;
- 在离线环境中配置本地 YUM 源,安装 40 余个依赖 RPM,还要为麒麟系统准备专属的 libnsl/libnsl2 兼容包;
- 编写并调试 runInstaller 静默安装响应文件、netca 响应文件、DBCA 建库脚本;
- 安装后手工执行 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 适用场景
- 生产环境新机交付:从裸机到可用的 Oracle 26ai 数据库,一条命令完成全部标准化部署;
- 测试/开发环境快速搭建:改改配置文件即可批量生成标准化测试库;
- 国产化替代项目:麒麟 V10 SP3、欧拉 OS 等国产系统上的 Oracle 部署适配(专属兼容包、密码策略、YUM 源自动处理);
- 离线/内网环境部署:支持 ISO 挂载本地 YUM 源,全程无需外网;
- 教学与实验环境:配合风哥的数据库课程,快速获得标准实验环境;
- 重装与迁移演练:清理重装流程标准化,便于反复演练交付流程。
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 环境准备
# 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_ |
| 监听日志 | /oracle/app/oracle/diag/tnslsnr/ |
附录
附录 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:使用建议与免责声明
- 务必先在测试环境演练:虽然程序全部动作均有备份与幂等保护,但 LVM 清盘类操作不可逆,生产执行前请先在同等环境演练并核对磁盘盘符;
- 密码安全:配置文件中密码为明文,请设置文件权限为 600,安装完成后及时修改默认密码(Oracle123 / monitor123 / backup123);
- 模板文件:响应文件模板在渲染时会被原地替换为真实值,重装前建议保留一份原始模板备份;
- 适用范围:本程序适用于单机文件系统模式的 Oracle 26ai 安装,RAC/ASM/Data Guard 场景请使用对应的专用方案;
- 本程序及文档仅供学习、培训与授权范围内的生产交付使用,使用本程序产生的任何直接或间接后果由使用者自行承担。
作者:风哥
官方网站: http://www.fgedu.net.cn , http://www.itpux.com
数据库教程: https://edu.51cto.com/lecturer/8020378.html
工具视频教程: https://edu.51cto.com/course/40651.html

浙公网安备 33010602011771号