快速开始

OracleShellInstall 是一款 Oracle 数据库一键自动化安装脚本,支持 Oracle 11gR2 至 26ai 全版本,覆盖 20+ Linux 发行版。脚本会自动完成操作系统参数配置、依赖包安装、用户创建、Oracle 软件安装及数据库创建全流程。

三步安装

  1. 上传软件包 - 将 OracleShellInstall.sh 脚本和 Oracle 安装介质上传至服务器 /soft 目录
  2. 配置参数 - 使用 命令生成器 或手动拼接安装参数
  3. 执行安装 - 在 /soft 目录下以 root 用户执行生成的命令
注意:脚本必须以 root 用户执行,且需要在软件包所在目录下运行。Bash 版本需 >= 4。

环境准备

目录结构

将以下文件放置在 /soft 目录下:

/soft/
  OracleShellInstall.sh          # 安装脚本
  LINUX.X64_193000_db_home.zip   # Oracle 安装介质 (以19c为例)
  p35940989_190000.zip           # PSU/RU 补丁 (可选)
  p35926646_190000.zip           # OJVM 补丁 (可选)
  p6880880_190000.zip            # OPatch (可选,补丁需要)

系统要求

  • 支持的操作系统:CentOS 7/8、RHEL 7/8/9、OracleLinux、Rocky Linux、Anolis OS、openEuler、麒麟 Kylin、统信 UOS、Ubuntu、Debian 等
  • Bash 版本 >= 4
  • 建议内存 >= 2GB(生产环境建议 >= 8GB)
  • 磁盘空间:Oracle 软件至少 15GB,数据文件根据业务需求规划
  • 网络:确保 yum/dnf/apt 软件源可用,或使用本地源 (-lrp Y)
  • SELinux:脚本会自动关闭 SELinux,无需手动处理
  • 防火墙:脚本会自动关闭防火墙,如需保留请安装后自行配置

安装介质

不同 Oracle 版本需要的安装介质文件不同,请根据目标版本准备对应的安装包。脚本会自动识别 /soft 目录下的 ZIP 文件。

Oracle 版本数据库安装介质Grid 安装介质 (ASM/RAC)
11gR2p13390677_112040_Linux-x86-64_1of7.zip
p13390677_112040_Linux-x86-64_2of7.zip
p13390677_112040_Linux-x86-64_3of7.zip
12cR2linuxx64_12201_database.ziplinuxx64_12201_grid_home.zip
19cLINUX.X64_193000_db_home.zipLINUX.X64_193000_grid_home.zip
21cLINUX.X64_213000_db_home.zipLINUX.X64_213000_grid_home.zip
26aiLINUX.X64_260000_db_home.zipLINUX.X64_260000_grid_home.zip
提示:19c 及以上版本安装包只需一个 ZIP 文件。11gR2 需要多个分卷文件。补丁文件(PSU/RU/OJVM)和 OPatch 工具放置在同一目录即可,脚本会自动识别。

工作原理

OracleShellInstall 脚本按照以下流程自动完成整个安装过程:

执行流程

  1. 参数校验 - 验证所有输入参数的合法性,检查必填项,校验密码格式
  2. 环境检测 - 识别操作系统类型和版本,检测 CPU 架构,检查磁盘空间
  3. OS 配置 - 配置主机名、hosts、内核参数、资源限制、关闭 SELinux/防火墙、配置 NTP 时间同步
  4. 依赖安装 - 根据 OS 类型自动配置软件源,安装 Oracle 所需的依赖包
  5. 用户创建 - 创建 oracle/grid 用户及 oinstall、dba、asmadmin 等用户组,配置环境变量
  6. 目录准备 - 创建 ORACLE_BASE、ORACLE_HOME 等目录结构并设置权限
  7. 磁盘配置 (ASM/RAC) - 通过 UDEV 规则或 multipath 配置 ASM 磁盘
  8. Grid 安装 (ASM/RAC) - 解压并安装 Grid Infrastructure,创建 ASM 磁盘组
  9. SSH 互信 (RAC) - 在所有节点间建立 root、oracle、grid 用户的 SSH 无密码登录
  10. 数据库软件安装 - 解压 Oracle 安装介质,静默安装数据库软件
  11. 补丁应用 (可选) - 应用 PSU/RU、OJVM 补丁
  12. 数据库创建 - 使用 DBCA 静默创建数据库实例,创建 PDB(如指定)
  13. 安装后配置 - 配置自动启动、优化参数(如指定)、配置大页内存(如指定)

日志文件

安装过程中会生成两个日志文件:

  • print_shell_install_*.log - 安装摘要日志,记录关键步骤的执行结果
  • shell_install_output_*.log - 详细输出日志,记录所有命令的标准输出和错误输出
日志位置:日志文件生成在脚本执行的当前目录(通常为 /soft),文件名包含时间戳,便于区分多次安装。

单机安装

单机模式基于文件系统存储,适用于开发测试及中小型业务场景。

最简安装

sh OracleShellInstall.sh \
-install_mode single `# 单机模式`\
-lf eth0 `# 公网网卡名称`

以上命令使用全部默认值安装:数据库名 orcl,字符集 AL32UTF8,安装目录 /u01,数据目录 /oradata。

自定义安装

sh OracleShellInstall.sh \
-install_mode single `# 单机模式`\
-lf eth0 `# 公网网卡名称`\
-n oracledb `# 主机名`\
-o prod `# 数据库名称`\
-dp 'Passw0rd#' `# 数据库密码`\
-ds ZHS16GBK `# 字符集`\
-pdb pdb01,pdb02 `# 创建多个 PDB`\
-opd Y `# 优化数据库参数`

单机 ASM 安装

单机 ASM 模式需要 Grid Infrastructure 和 ASM 磁盘。脚本会自动配置 UDEV 绑盘或 multipath。

sh OracleShellInstall.sh \
-install_mode standalone `# 单机 ASM 模式`\
-lf eth0 `# 公网网卡名称`\
-dd /dev/sdb,/dev/sdc `# DATA 磁盘`
提示:如果不使用 multipath,可设置 -mp N,脚本将使用 UDEV 直接绑盘。如果已自行配置好 ASM 磁盘,可设置 -adc N 并传入已配置好的磁盘路径。

自定义 ASM 安装

sh OracleShellInstall.sh \
-install_mode standalone `# 单机 ASM 模式`\
-lf eth0 `# 公网网卡名称`\
-o prod `# 数据库名称`\
-dp 'Passw0rd#' `# 数据库密码`\
-mp N `# 不使用 multipath`\
-dd /dev/sdb,/dev/sdc,/dev/sdd `# 3 块 DATA 磁盘`\
-dn DATADG `# 自定义磁盘组名`\
-dr NORMAL `# NORMAL 冗余`\
-gpa 35940989 `# Grid 补丁`\
-opa 35940989 `# Oracle 补丁`
注意:NORMAL 冗余至少需要 3 块磁盘,HIGH 冗余至少需要 5 块磁盘。EXTERNAL 冗余为外部冗余(不做镜像),仅需 1 块磁盘。

RAC 集群安装

RAC 模式需要在第一个节点上执行脚本,脚本会自动配置所有节点的 SSH 互信、Grid 安装、ASM 磁盘及数据库创建。

RAC 前置条件:
  • 所有节点的 root 密码必须一致
  • 所有节点需配置公网和心跳网络,且网络互通
  • 共享磁盘需在所有节点上可见(SAN/iSCSI/共享 VMDK 等)
  • 脚本仅需在第一个节点执行,会自动同步到其他节点

基础 2 节点 RAC

sh OracleShellInstall.sh \
-install_mode rac `# RAC 集群模式`\
-lf eth0 `# 公网网卡`\
-pf eth1,eth2 `# 心跳网卡`\
-n orcl `# 主机名前缀`\
-hn orcl01,orcl02 `# 所有节点主机名`\
-ri 10.0.0.101,10.0.0.102 `# 公网 IP`\
-vi 10.0.0.103,10.0.0.104 `# 虚拟 IP`\
-si 10.0.0.105 `# Scan IP`\
-rp 'rootPasswd' `# root 密码`\
-od /dev/sdb `# OCR 磁盘`\
-dd /dev/sdc `# DATA 磁盘`

生产环境 RAC(含 ARCH 磁盘组和补丁)

sh OracleShellInstall.sh \
-install_mode rac `# RAC 集群模式`\
-lf ens192 `# 公网网卡`\
-pf ens224,ens256 `# 双心跳网卡`\
-n dbprod `# 主机名前缀`\
-hn dbprod01,dbprod02 `# 节点主机名`\
-ri 192.168.1.101,192.168.1.102 `# 公网 IP`\
-vi 192.168.1.103,192.168.1.104 `# 虚拟 IP`\
-si 192.168.1.105 `# Scan IP`\
-rp 'R00t#2024' `# root 密码`\
-o proddb `# 数据库名称`\
-dp 'Oracle#2024' `# 数据库密码`\
-ds ZHS16GBK `# 中文字符集`\
-od /dev/sdb,/dev/sdc,/dev/sdd `# OCR 磁盘`\
-or NORMAL `# OCR NORMAL 冗余`\
-dd /dev/sde,/dev/sdf,/dev/sdg `# DATA 磁盘`\
-dr NORMAL `# DATA NORMAL 冗余`\
-ad /dev/sdh,/dev/sdi `# ARCH 归档磁盘`\
-ar EXTERNAL `# ARCH 冗余`\
-gpa 35940989 `# Grid 补丁`\
-opa 35940989 `# Oracle 补丁`\
-jpa 35926646 `# OJVM 补丁`\
-opd Y `# 优化数据库参数`\
-hf Y `# 配置大页内存`
提示:生产环境建议 OCR 磁盘组使用 NORMAL 冗余(至少 3 块磁盘),并配置独立的 ARCH 磁盘组用于归档日志。

高级用法

分步安装

在某些场景下,可能需要将安装过程拆分为多个步骤独立执行:

仅配置操作系统

sh OracleShellInstall.sh \
-install_mode single \
-lf eth0 \
-m Y `# 仅完成 OS 配置,不安装 Oracle`

适用于需要先检查 OS 配置是否正确,或需要在 OS 配置后做额外手动调整的场景。

安装到 DB 软件结束

sh OracleShellInstall.sh \
-install_mode single \
-lf eth0 \
-ud Y `# 安装到 DB 软件结束,不创建数据库`

适用于需要手动创建数据库(如使用自定义模板或特殊配置)的场景。

RAC 安装到 Grid 结束

sh OracleShellInstall.sh \
-install_mode rac \
-lf eth0 -pf eth1 \
-hn orcl01,orcl02 -ri 10.0.0.101,10.0.0.102 \
-vi 10.0.0.103,10.0.0.104 -si 10.0.0.105 \
-rp 'rootPasswd' -od /dev/sdb -dd /dev/sdc \
-ug Y `# 安装到 Grid 结束,不继续安装 DB`

一键打补丁

将补丁文件和 OPatch 工具放入 /soft 目录,通过参数指定补丁编号即可自动应用:

/soft/
  OracleShellInstall.sh
  LINUX.X64_193000_db_home.zip     # Oracle 安装介质
  p35940989_190000_Linux-x86-64.zip # PSU/RU 补丁
  p35926646_190000_Linux-x86-64.zip # OJVM 补丁
  p6880880_190000_Linux-x86-64.zip  # OPatch 最新版
说明:OPatch 工具 (p6880880) 是应用补丁的前置条件。脚本会自动替换 ORACLE_HOME 下的旧版 OPatch。如果仅安装不打补丁,则无需 OPatch 文件。

多实例安装

通过 -o 参数传入多个数据库名(逗号分隔),可在同一主机上创建多个数据库实例:

sh OracleShellInstall.sh \
-install_mode single \
-lf eth0 \
-o proddb,testdb `# 创建两个数据库实例`

VirtualBox 环境

在 VirtualBox 虚拟机中安装 ASM/RAC 时,需要添加 -vbox Y 参数来修复 VirtualBox 的 SCSI 磁盘识别问题:

sh OracleShellInstall.sh \
-install_mode standalone \
-lf eth0 \
-dd /dev/sdb \
-vbox Y `# VirtualBox 环境修复`

安装验证

安装完成后,可通过以下方式验证安装是否成功:

单机/Standalone 验证

检查监听状态

su - oracle
lsnrctl status

应看到监听器处于 READY 状态,服务已注册。

检查数据库状态

sqlplus / as sysdba
SELECT instance_name, status FROM v$instance;
SELECT name, open_mode FROM v$database;
SELECT name, open_mode FROM v$pdbs; -- 如有 PDB

数据库状态应为 OPEN,PDB 状态应为 READ WRITE

检查 ASM(Standalone/RAC)

su - grid
asmcmd lsdg

应显示所有磁盘组的状态为 MOUNTED,可用空间正常。

RAC 集群验证

检查集群状态

su - grid
crsctl stat res -t

所有资源应为 ONLINE 状态。

检查集群节点

olsnodes -n
crsctl check cluster -all

检查 Scan VIP

srvctl status scan
srvctl status scan_listener
srvctl status database -d proddb
提示:如果安装中使用了 -opd Y 优化参数,可通过 SHOW PARAMETER 确认 SGA/PGA 等参数已按预期配置。

通用参数

参数说明默认值
-lf公网 IP 的网卡名称(必填)-
-n主机名(单机为主机名,RAC 为主机名前缀)orcl
-o数据库名称,支持多实例:orcl,oradborcl
-dOracle 软件安装根目录/u01
-ou系统 oracle 用户名称oracle
-op系统 oracle 用户密码,特殊字符需单引号包裹oracle
-dp数据库 sys/system 密码,需字母开头,可含 _#$oracle
-ds数据库字符集AL32UTF8
-ns数据库国家字符集AL16UTF16
-dbs数据库块大小:2048/4096/8192/16384/327688192
-redoRedo 日志文件大小(MB)1024
-er启用归档模式:true/falsetrue
-pdbPDB 名称(设置后自动启用 CDB 架构),多个逗号分隔pdb01
-ord数据文件目录(单机模式)/oradata
-ard归档文件目录(单机模式)/oradata/archivelog
-lrp配置本地软件源(Y/N)Y
-nrp配置网络软件源(Y/N)N
-gui安装系统图形界面(Y/N)N
-opd优化数据库参数(Y/N)N
-hf配置大页内存(Y/N)N
-m仅配置操作系统(Y/N)N
-ud安装到 DB 软件结束(Y/N)N
-opaOracle PSU/RU 补丁编号-
-jpaOJVM PSU/RU 补丁编号-

ASM 相关参数

参数说明默认值
-gu系统 grid 用户名称grid
-gp系统 grid 用户密码oracle
-adc是否由脚本配置 ASM 磁盘(Y/N)Y
-mp配置 multipath 多路径(Y/N)Y
-ddDATA 磁盘组的磁盘列表(必填)-
-dnDATA 磁盘组名称DATA
-drDATA 磁盘组冗余度:EXTERNAL/NORMAL/HIGHEXTERNAL
-gpaGrid PSU/RU 补丁编号-
-vboxVirtualBox 环境修复(Y/N)N

RAC 专属参数

参数说明默认值
-pf心跳网卡名称,多组逗号分隔(必填)-
-hn所有节点主机名,按顺序逗号分隔(必填)-
-ri所有节点公网 IP(必填)-
-vi所有节点虚拟 IP(必填)-
-siScan IP 地址(必填)-
-rproot 用户密码,所有节点需一致(必填)-
-cn集群名称(不超过15位)主机名前缀-cluster
-snScan 名称主机名前缀-scan
-odOCR 磁盘组的磁盘列表(必填)-
-adARCH 磁盘组的磁盘列表-
-on/-orOCR 磁盘组名称/冗余度OCR / EXTERNAL
-an/-arARCH 磁盘组名称/冗余度ARCH / EXTERNAL
-tsiCTSS 时间服务器 IP-
-dns是否配置 DNS(多个 Scan IP 时需要)N
-dnsnDNS 服务器名称-
-dnsiDNS 服务器 IP-
-ug安装到 Grid 软件结束(Y/N)N

故障排查

安装失败的通用排查步骤

  1. 查看安装摘要日志:cat /soft/print_shell_install_*.log
  2. 查看详细输出日志:cat /soft/shell_install_output_*.log
  3. 定位失败的具体步骤和错误信息
  4. 修复问题后,使用 -m Y 跳过 OS 配置重新执行

常见错误及解决方案

依赖包安装失败

错误表现:提示 yum/dnf 无法安装某些 RPM 包。

解决方案:

  • 检查是否配置了正确的软件源,或使用 -lrp Y 配置本地源
  • 如需网络源,设置 -nrp Y,确保服务器可访问外网
  • 对于国产系统(麒麟、统信),确保系统自带软件源完整

ASM 磁盘无法发现

错误表现:Grid 安装完成后 ASM 无法发现磁盘设备。

解决方案:

  • 检查磁盘设备是否存在:ls -l /dev/sd*
  • 确认磁盘未被分区或挂载:lsblk
  • 检查 UDEV 规则是否生效:ls -l /dev/oracleasm/
  • 如使用 multipath,检查多路径配置:multipath -ll
  • VirtualBox 环境必须添加 -vbox Y 参数

RAC SSH 互信失败

错误表现:节点间无法建立 SSH 连接,提示 Permission denied。

解决方案:

  • 确认所有节点 root 密码一致
  • 检查 /etc/ssh/sshd_config 是否允许 root 登录和密码认证
  • 确认所有节点间网络互通:ping 测试公网和心跳 IP

内存不足导致 DBCA 失败

错误表现:创建数据库时提示内存不足或 ORA-00845 错误。

解决方案:

  • 确保可用内存 >= 2GB
  • 如启用了大页内存 (-hf Y),确保 HugePages 配置正确
  • 检查 /dev/shm 是否挂载且大小足够

OPatch 版本过低

错误表现:打补丁时提示 OPatch 版本不兼容。

解决方案:下载最新的 OPatch 工具 (p6880880) 放入 /soft 目录,脚本会自动替换旧版本。

常见问题

Q: 脚本支持哪些 Oracle 安装介质格式?

脚本自动识别 Oracle 安装介质的 ZIP 包。将 ZIP 文件放置在 /soft 目录下即可,无需手动解压。

Q: 安装过程中断了怎么办?

查看安装日志文件 print_shell_install_*.logshell_install_output_*.log,定位失败原因。修复后可使用 -m Y 参数跳过已完成的 OS 配置步骤。

Q: RAC 安装时节点间需要什么网络条件?

需要公网和心跳网络互通,所有节点 root 密码需一致。脚本会自动建立 SSH 互信。

Q: 数据库密码有什么要求?

数据库密码(-dp)必须以字母开头,只能包含字母、数字及 _ # $ 三种特殊字符。包含特殊字符时需用单引号包裹。

Q: 如何过滤多路径磁盘?

使用 -fd 参数可以过滤多路径磁盘,去除重复路径获取唯一盘符。例如:-fd /dev/sda 排除系统盘。

Q: 是否支持离线安装?

支持。使用 -lrp Y 参数配置本地软件源(需要系统安装 ISO),脚本会自动挂载 ISO 并配置本地 yum/dnf 源,无需外网连接。

Q: 如何在已有 Oracle 环境上安装第二个数据库?

使用 -o 参数指定新的数据库名即可。脚本会检测现有环境,跳过已完成的配置步骤。也可以使用 -m Y 跳过 OS 配置只创建数据库。

Q: 脚本是否修改了操作系统的哪些配置?

脚本会修改以下系统配置:

  • 主机名和 /etc/hosts
  • 内核参数 (/etc/sysctl.conf)
  • 资源限制 (/etc/security/limits.conf)
  • 关闭 SELinux 和防火墙
  • 创建 oracle/grid 用户及用户组
  • 配置 NTP/Chrony 时间同步
  • 配置用户环境变量 (.bash_profile)

Q: 支持 ARM 架构服务器吗?

支持。脚本会自动检测 CPU 架构(x86_64/aarch64),并使用对应的安装介质和依赖包。需要确保使用对应架构的 Oracle 安装介质。

Q: 如何卸载由脚本安装的 Oracle?

脚本不提供卸载功能。手动卸载步骤:停止数据库和监听器 → 删除 Oracle 目录 → 删除用户和用户组 → 清理系统配置 → 清理 /etc/oraInst.loc/etc/oratab

更新日志

v5.0.0 (2024-08-22)

  • 支持 Oracle 26ai 版本安装
  • 新增 AFD (ASM Filter Driver) 配置支持
  • 新增 GIMR 配置支持
  • 新增更多国产操作系统支持:华为 openEuler、中科方德 NFS、中标麒麟 NeoKylin 等
  • 优化安装日志输出和进度展示
  • 增强参数校验逻辑

v4.2.0 (2024-03-15)

  • 支持 Oracle 21c 安装
  • 新增 Rocky Linux 9、AlmaLinux 9 支持
  • 新增 -hf 参数支持大页内存自动配置
  • 优化 ARM (aarch64) 架构兼容性
  • 修复 Ubuntu 22.04 下依赖包安装问题

v4.0.0 (2023-09-10)

  • 重构脚本架构,模块化设计
  • 新增 Debian/Ubuntu 系列支持
  • 新增 -opd 参数支持数据库参数优化
  • 新增多实例安装支持(-o orcl1,orcl2
  • 优化 multipath 和 UDEV 磁盘绑定逻辑

v3.5.0 (2023-04-20)

  • 新增统信 UOS、麒麟 Kylin V10 支持
  • 新增 -nrp 参数支持网络软件源配置
  • 优化 RAC 安装的 SSH 互信逻辑
  • 修复 CentOS 8 Stream 兼容性问题

v3.0.0 (2022-11-01)

  • 支持 Oracle 19c RAC 安装
  • 新增 ASM 磁盘自动配置功能 (-adc)
  • 新增 VirtualBox 环境兼容参数 (-vbox)
  • 完善安装日志输出机制