# 工具部署

工具类型: shell 脚本

文档更新: 2025-02-22 16:43:06

适用场景: 非云化产品的的私有化部署(自建环境)

# 相关下载

脚本工具下载: https://pan.baidu.com/s/1I7f_HBSIDjHr8RjadAog1A?pwd=2025

# 文件列表

序号 文件名 用途
1 multi-install-oracle.sh Linux下Oracle数据库安装脚本
2 multi-install-oracle.xlsx 兼容性测试报表
3 multi-install-oracle.md 脚本使用说明
4 compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm EL7 系列的部分 ISO 光盘没有附带的依赖包
5 compat-libcap1-1.10-7.el7.x86_64.rpm EL7 系列的第三方衍生版可能没有附带的依赖包
6 ksh-2020.0.0-5.uel20.x86_64.rpm uos ISO 光盘没有附带的依赖包
7 libXp-1.0.3-6.uel20.x86_64.rpm uos ISO 光盘没有附带的依赖包
8 libXp-devel-1.0.3-6.uel20.x86_64.rpm uosISO 光盘没有附带的依赖包
9 libpthread_nonshared.a uos 20 1020e | openeuler 全系 缺失的依赖文件

# 脚本信息

脚本目录: /seeyon/scripts
脚本文件: multi-install-oracle.sh
功能简述: install oracle database 11g/12c/18c/19c/21c silently under Linux
支持环境: Linux + Bash 4.x/5.x + Systemd
脚本用法: bash multi-install-oracle.sh [install|remove|depend|setenv|repos]
创建时间: 2021-12-09 03:02:02
修改时间: 2021-12-17 12:40:43

操作系统: CentOS Linux release 8.5.2111
系统内核: 4.18.0-348.el8.x86_64
CPU 型号: Intel(R) Xeon(R) CPU E5-2403 v2 @ 1.80GHz
物理内存: 2 GB
磁盘存储: 100 GB

待装版本: oracle database 19c

DB 支持: 11g/12c/18c/19c/21c
OS 支持: rhel/centos/ol/rocky/anolis/alma/neokylin 7/8 | uos 20 1021a/1020e

依赖CMD: bash multi-install-oracle.sh depend
环境CMD: bash multi-install-oracle.sh setenv
安装CMD: bash multi-install-oracle.sh install
卸载CMD: bash multi-install-oracle.sh remove
repos源: bash multi-install-oracle.sh repos

启停CMD: systemctl start|stop oracle

# 兼容测试

附件:multi-install-oracle.xlsx

# 主机要求

  • 使用静态IP

  • 物理内存2G及以上

  • 设置好主机名

# 脚本用法

首先将文件 multi-install-oracle.zip 解压到非 /root 开头的任意目录下

├── depend
│   ├── compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
│   ├── ksh-2020.0.0-5.uel20.x86_64.rpm
│   ├── libpthread_nonshared.a
│   ├── libXp-1.0.3-6.uel20.x86_64.rpm
│   └── libXp-devel-1.0.3-6.uel20.x86_64.rpm
├── multi-install-oracle.md
├── multi-install-oracle.sh
└── multi-install-oracle.xlsx

1 directory, 8 files

# 一、文件下载

1、去oracle官网下载数据库所需版本的安装包并将其与脚本文件放在同一目录下。

oracle database 官方下载地址

https://edelivery.oracle.com
https://www.oracle.com/database/technologies/oracle-database-software-downloads.html

2、离线安装依赖时把对应操作系统版本的ISO安装镜像盘与脚本文件放在同一目录下。

部分相关操作系统ISO官网地址

https://centos.org
https://rockylinux.org
https://almalinux.org
https://openanolis.cn
https://www.oracle.com/cn/linux
https://www.chinauos.com
https://developers.redhat.com/products/rhel/download

3、搭建本地软件更新源和安装19c时的目录文件树

如果操作系统是 openEuler 请使用带 everything 字样的ISO文件 如 openEuler-20.03-LTS-SP2-everything-x86_64-dvd.iso
├── depend
│   ├── compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
│   ├── ksh-2020.0.0-5.uel20.x86_64.rpm
│   ├── libpthread_nonshared.a
│   ├── libXp-1.0.3-6.uel20.x86_64.rpm
│   └── libXp-devel-1.0.3-6.uel20.x86_64.rpm
├── Kylin-Server-10-SP2-x86-Release-Build09-20210524.iso
├── multi-install-oracle.md
├── multi-install-oracle.sh
├── multi-install-oracle.xlsx
└── V982063-01.zip

1 directory, 10 files

# 二、参数调整

使用文本编辑器打开脚本文件,按需调整脚本参数并保存退出。

  • 对于不太熟悉Oracle的人使用默认设置的参数即可
  • 必须修改的参数是 oracleVersion="12c" 改为所需版本即可 其余参数参照脚本注释按需修改
# ****************************** 按需配置以下参数 ****************************** #

# 日志记录是否添加颜色 1=添加
enableLogColor="1"

# 执行安装前 是否自动进行脚本需求环境及依赖检查 1=是
checkRequirement="1"
# 进行脚本需求环境及依赖检查时 是否自动安装依赖 1=是 需要保障 yum 软件更新源可用 本地或网络皆可
installDepend="1"

# 数据库版本 必填 只能是 11g|12c|18c|19c|21c
oracleVersion="19c"
# 数据库的zip安装包文件名 多个zip包(非分卷)使用空格分割
# 脚本已经预置了官方对应版本的zip安装包文件名 当下载的包名以 linuxx64 开头时 请取消对应文件参数前面的注释
# oracle database 官方下载地址
# https://edelivery.oracle.com
# https://www.oracle.com/database/technologies/oracle-database-software-downloads.html
# 11g: 11.2.0.4.0
zipFileDB11g="p13390677_112040_Linux-x86-64_1of7.zip p13390677_112040_Linux-x86-64_2of7.zip"
# 12c: 12.2.0.1.0
zipFileDB12c="V839960-01.zip"
# zipFileDB12c="linuxx64_12201_database.zip"
# 18c: 18.3.0.0.0
zipFileDB18c="V978967-01.zip"
# zipFileDB18c="LINUX.X64_180000_db_home.zip"
# 19c: 19.3.0.0.0
zipFileDB19c="V982063-01.zip"
# zipFileDB19c="LINUX.X64_193000_db_home.zip"
# 21c: 21.3.0.0.0
zipFileDB21c="V1011496-01.zip"
# zipFileDB21c="LINUX.X64_213000_db_home.zip"

# 安装'根'目录
installRootDir="/apps"
# oracle用户家目录
oracleUserHome="/home/oracle"
# oracle 用户密码
oracleUserPWD="i4Seeyon"
# 安装 oracle 时的tmp临时目录 其所在磁盘的可用空间大小至少为1G 例如 oracleTmp="/home/oracle/tmp"
# 需要注意此tmp目录的属主和权限 oracle:oinstall
oracleTmp="/tmp"

# 全局数据库名
gdbName="orcl"
# 数据库SID
oracleSID="orcl"
# ORACLE_UNQNAME 一般必须设置为 sid
oracleUnqName="orcl"
# NLS_LANG
nlsLang="american_america.AL32UTF8"
# 所有数据库用户的初始密码 不建议在脚本中使用带有特殊字符的初始密码 避免因字符转义导致安装异常
dbAllUserPWD="i4Seeyon"
# 数据库 sys 用户密码 不建议在脚本中使用带有特殊字符的初始密码 避免因字符转义导致安装异常
sysPWD="i4Seeyon"
# 数据库 system 用户密码 不建议在脚本中使用带有特殊字符的初始密码 避免因字符转义导致安装异常
systemPWD="i4Seeyon"
# 数据库字符集
dbCharacter="AL32UTF8"
# nationalCharacter
dbNationalCharacter="AL16UTF16"
# 数据库配置类型 12C及以上的版本 只能是 SI|RAC|RACONENODE 当前脚本暂不支持RAC
dbConfigType="SI"
# 数据库存储类型 只能是 FS|ASM 当前脚本暂不支持ASM 新版本指定存储类型时 需要同时指定组合参数 如 datafileDestination
storageType="FS"

# 是否创建容器数据库 只能是 TRUE|FALSE 21c及其后的版本不再支持非容器数据库(CDB) 当数据库版本为21c时将自动调整为true
isCDB="FALSE"
# pdb数据库名
pdbName="orclpdb"
# pdb数据库密码 不建议在脚本中使用带有特殊字符的初始密码 避免因字符转义导致安装异常
pdbAdminPWD="i4Seeyon"

# 数据库成功安装后 是否自动执行参数优化 脚本预置了协同发版文档要求的2个数据库参数调整
autoExecOptimizeTask="1"
# 是否创建用于致远协同系统的表空间和用户 1=创建 开启后将执行相关预设语句 后续的几个关联参数也需要一起填写 不能为空
# 创建表空间+创建用户/设置用户密码+授权+设定数据泵目录和授权
autoExecSQLTask="1"
# 用户所属表空间名
uTSName="oaspace"
# 用户名
uName="seeyon"
# 用户密码 不建议在脚本中使用带有特殊字符的初始密码 避免因字符转义导致安装异常
uPWD="i4Seeyon"
# 权限/角色 多个权限使用,分割 Priv=Privilege的简写
uPriv="dba"
# 数据泵映射目录名(impdp/expdp) DPD=DataPumpDir的简写 对应的物理路径将自动创建为 $ORACLE_BASE/dump_dir
uDPDName="dump_dir"

# ****************************** 按需配置以上参数 ****************************** #

# 三、运行脚本

# 自动配置本地软件更新源 如果检测到同级目录下有对应操作系统的ISO文件 脚本会尝试自动挂载
bash multi-install-oracle.sh repos

# 安装依赖 需要访问互联网或使用局域网repo更新源 也可通过操作系统的ISO镜像盘 搭建本地软件更新源来进行安装
bash multi-install-oracle.sh depend

# 配置系统环境 建议配置完毕之后 重启一下服务器 以使一些优化参数生效
bash multi-install-oracle.sh setenv

# 安装数据库 安装完毕之后 建议重启一下服务器 以验证oracle数据库服务和监听服务是否开机自启成功
bash multi-install-oracle.sh install

# 卸载数据库
bash multi-install-oracle.sh remove

# 执行预设参数优化 可以根据例子自行调整 为避免误执行 为隐藏传参执行(数据库安装期间的自动调用除外) 
bash multi-install-oracle.sh optimize

# 执行预设SQL语句 可以根据例子自行调整 为避免误执行 为隐藏传参执行(数据库安装期间的自动调用除外)
bash multi-install-oracle.sh sql

# 执行预设SQL语句 可以根据例子自行调整 为避免误执行 为隐藏传参执行(数据库安装期间的自动调用除外)
bash multi-install-oracle.sh info

# 四、其他说明

# 1、静默安装 Oracle 数据库(silent) 操作系统只需最小化安装即可 无需安装xwindows或图形化界面
# 2、当前支持 11g/12c/18c/19c/21c 的基于本地文件系统的单机部署 有时间我再添加 rac/asm/patch 的支持
# 3、操作系统只支持红帽系的7/8系列 因工作繁忙 没那么多时间和精力去其他操作系统上一一测试和验证
# 4、安装前 如有必要 请设置好主机名 因为脚本没有做主机名的检查
# 5、对于 oracle 11g 虽然在 el8 上也可以强行安装 但是存在不少问题 所以脚本做了限制 oracle 11g 仅支持在 el7 上安装
# 6、对于 12c 及以上的版本 一律默认不创建容器数据库(21C 除外)
# 7、注意确保依赖全部安装无误 安装依赖时 确保repo更新源可用 无互联网时 可使用操作系统的ISO镜像盘搭建本地软件更新源来进行安装
# 8、标准支持 RHEL/CentOS/OL 7/8
# 9、测试通过的OS还有: UOS v20 1021a/1020e | Anolis OS/Rocky Linux/AlmaLinux 8.x | openEuler 20.03+/21.03

# 问题处理

问题:
[WARNING] [INS-13001] Oracle Database is not supported on this operating system. Installer will not perform prerequisite checks on the system.
   CAUSE: This operating system may not have been in the certified list at the time of the release of this software.
   ACTION: Refer to My Oracle Support portal for the latest certification information forthis operating system. Proceed with the installation if the operating system has been certified after the release of this software.

解决:可忽略

问题:
Error: Package: libX11-devel-1.6.7-2.el7.x86_64 (Local-ISO-Base)
           Requires: libX11 = 1.6.7-2.el7
           Installed: libX11-1.6.7-4.el7_9.x86_64 (@updates)
               libX11 = 1.6.7-4.el7_9
           Available: libX11-1.6.7-2.el7.x86_64 (Local-ISO-Base)
               libX11 = 1.6.7-2.el7
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest
 解决:降级更新
 yum downgrade libX11

检查透明大页是否关闭
cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]

部分操作系统在安装依赖时出现以下三个包提示成功实际未安装 可忽略
13/53 正在安装 elfutils-libelf 成功
14/53 正在安装 elfutils-libelf-devel 成功
15/53 无需安装 fontconfig-devel
16/53 无需安装 libxcb
17/53 正在安装 libibverbs 成功

# 常用命令

-- pdb随cdb自启动(指定pdb) 12.2+
alter pluggable database orclpdb open;
alter pluggable database orclpdb save state;

-- pdb随cdb自启动(所有pdb) 12.2+
alter pluggable database all open;
alter pluggable database all save state;


alter session set container=orclpdb;

select name, pdb from v$services order by pdb, name;
select con_id, name, open_mode from v$pdbs;

select tablespace_name,file_id,file_name from dba_data_files;
select tablespace_name,status,contents from dba_tablespaces;
select name from v$datafile;
select owner,table_name,tablespace_name,status from dba_tables where owner='seeyon';
编撰人:yangfc