如何在Ubuntu上安装Oracle数据库并解决兼容性问题以实现高效运行?
- 内容介绍
- 文章标签
- 相关推荐
在 Ubuntu 上部署 Oracle 数据库常遇到以下痛点:
- 程序版本与 Oracle 版本不匹配。导致安装检查直接失败,
- 缺少必装依赖或权限不足,安装过程频繁报错。
- RPM 包无法直接在 Debian 程序上使用,需要手动转换。
- 默认程序资源不足,导致数据库运行不稳。
- 生产环境对高可用和性能有严格要求,普通安装方式难以满足。
一、安装前的准备工作
1. 选取合适的 Ubuntu LTS 版本
推荐使用官方长期支持版,如 Ubuntu 20.04 LTS 或 Ubuntu 22.04 LTS。这些版本拥有更完整的软件仓库和社区支持,能够降低兼容性风险。
2. 安装必备依赖包
sudo apt-get update
sudo apt-get install -y build-essential libaio1 libnuma1 \
libelf-dev unixodbc-dev sysstat alien
3. 创建专用使用者并设置资源限制
# 创建 oracle 使用者和组
sudo groupadd oinstall
sudo groupadd dba
sudo useradd -m -g oinstall -G dba oracle
echo "oracle ALL= NOPASSWD:ALL" | sudo tee /etc/sudoers.d/oracle
# 设置软硬件限制
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
二、获取并准备 Oracle 安装包
如果下载的是 RPM 包,需要先转换为 DEB 格式:
# 将 RPM 转为 DEB 并直接安装
sudo alien -i oracle_database_19c.rpm
若官方提供的是 zip/tar 包,直接解压到目标目录即可:
# 示例:解压 Oracle 19c 安装文件
sudo mkdir -p /opt/oracle && sudo chown oracle:oinstall /opt/oracle
cd /opt/oracle
sudo unzip /path/to/LINUX.X64_193000_db_home.zip
三、执行安装程序
-
切换至 oracle 使用者并设置语言环境:
# 防止乱码和区域性错误 export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8 -
运行图形化或静默安装脚本:
# 图形化安装 ./runInstaller # 静默模式示例 ./runInstaller -silent -responseFile /opt/oracle/response/DB_INSTALL.rsp \ oracle.install.option=INSTALL_DB_SWONLY \ UNIX_GROUP_NAME=oinstall \ INVENTORY_LOCATION=/opt/oracle/oraInventory \ SELECTED_LANGUAGES=en。en_GB \ ORACLE_HOME=/opt/oracle/product/19c/dbhome_1 \ ORACLE_BASE=/opt/oracle \ DECLINE_SECURITY_UPDATES=true \ AUTOUPGRADE=false \ SKIP_ROOT_PREINSTALL_CHECKS=true \ INSTALL_OPTION=INSTALL_DB_SWONLY \ ORACLE_HOSTNAME=$ -
完成后执行 root 脚本:
# 按提示执行两次 root 脚本 sudo /opt/oracle/root.sh sudo /opt/oracle/product/19c/dbhome_1/root.sh -
创建数据库实例:
# 使用图形化 D娱乐A 或静默模式创建实例 dbca -silent -createDatabase -templateName General_Purpose.dbc \ -gdbname orcl -sid orcl -responseFile NO_VALUE \ -characterSet AL32UTF8 -memoryPercentage 30 \ -emConfiguration NONE -sysPassword MySysPass123 \ -systemPassword MySystemPass123
四、常见兼容性问题及对应方法
| 问题场景 | 方法要点 |
|---|---|
| 操作程序检查失败 | 在执行 runInstaller 前导入环境变量模拟受支持的发行版:
|
| RPM 包无法直接安装 | 使用 alien -i 将其转换为 DEB 并自动完成依赖处理。 |
| 权限不足导致脚本中断 | Sudo 执行所有需要 root 权限的步骤;确保 oracle 使用者属于 dba、oinstall、asmdba、oper**group** 等必要组。 |
| 缺失库文件 | Apt 安装对应的开发包,例如 . |
| LSE‑FORK 错误或进程数受限 | 在 /etc/sysctl.conf |
| TNS‑12547 错误 | - 确认 /dev/shm 有足够空间;- 检查 SELinux/AppArmor 是否拦截;- 确保 oracle 使用者拥有对 $ORACLE_HOME 的读写权限。 |
| CDB/PDB 创建失败 | - 检查字符集是否被正确指定;- 若使用静默模式,请确保响应文件中的所有方法均为绝对方法且无空格。话说回来, |
五、性能调优与设置建议
- 文件句柄 & 会话数:`ulimit -n` 建议设为 `65536`。 `ulimit -u` 一样提高至 `16384`。
- I/O 调度:`echo deadline> /sys/block/sda/queue/scheduler` 可降低磁盘延迟。
- SMP 与 NUMA:`numactl --interleave=all` 在多 CPU 环境下提高并发性能。
- SIGAR 参数:`disk_sector_size_override=true` 用于解决磁盘扇区大小不兼容导致的 REDO 日志错误。
- PGA 与 SGA 大小:`export MEMORY_TARGET=4G` 并在 `init.ora` 中相应调整 `SGA_TARGET` 与 `PGA_AGGREGATE_TARGET`。
- Kdump 与 Core Dump:`sysctl -w kernel.core_pattern=/tmp/core.%e.%p.%t` 用于捕获异常信息便于排错。
六、使用虚拟机或容器进行隔离部署
If compatibility problems become too tangled on host system,encapsulating Oracle inside a dedicated VM or container can completely isolate OS‑level conflicts.
- VirtualBox / VMware:Create an Ubuntu VM and按照上述步骤进行完整安装。这样即使宿主机是非 LTS 程序,也不会影响数据库运行。老实说,
-
LXC / Docker:If you prefer containers。use an official Oracle Linux base image and手动复制 Oracle Home。记得通过
提高所需的内核参数,并映射足够的内存与磁盘卷。 - CLOUD 镜像:Select trusted cloud marketplace images that already包含预配置好的 Oracle 环境,可省去大量手工调参时间。注意监控实例内存上限,防止 OOM。
七、实用一键脚本与参考资源
#!/bin/bash
# oracle19c_ubuntu22_install.sh – 一键自动化脚本
set -euo pipefail
#--- 环境变量 -------------------------------------------------
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
export CV_ASSUME_DISTID=ol8 # 绕过 OS 检查
#--- 基础依赖 -------------------------------------------------
apt-get update && apt-get install -y alien unzip bc ksh libaio1 libaio-dev libnuma1 libnuma-dev
#--- 创建使用者 -------------------------------------------------
groupadd oinstall && groupadd dba && useradd -m -g oinstall -G dba oracle
#--- 下载 & 解压 -----------------------------------------------
cd /opt && mkdir oracle && chown oracle:oinstall oracle && cd oracle
# 假设已把 zip 包放到当前目录:
unzip LINUX.X64_193000_db_home.zip
#--- 设置权限 -------------------------------------------------
chown -R oracle:oinstall /opt/oracle
#--- 执行安装 -------------------------------------------------
su - oracle <'EOF'
cd $HOME/database/
./runInstaller -
EOF
#--- 完成提示 -------------------------------------------------
echo "Oracle 19c 安装已完成,请自行运行 root 脚本并创建实例。"
You can find more community scripts on GitHub 仓库如,或者参考官方文档《Oracle Database Installation Guide for Linux》章节 “Installing on Non‑Supported Distributions”。
八、结论
在 Ubuntu 上部署 Oracle 数据库常遇到以下痛点:
- 程序版本与 Oracle 版本不匹配。导致安装检查直接失败,
- 缺少必装依赖或权限不足,安装过程频繁报错。
- RPM 包无法直接在 Debian 程序上使用,需要手动转换。
- 默认程序资源不足,导致数据库运行不稳。
- 生产环境对高可用和性能有严格要求,普通安装方式难以满足。
一、安装前的准备工作
1. 选取合适的 Ubuntu LTS 版本
推荐使用官方长期支持版,如 Ubuntu 20.04 LTS 或 Ubuntu 22.04 LTS。这些版本拥有更完整的软件仓库和社区支持,能够降低兼容性风险。
2. 安装必备依赖包
sudo apt-get update
sudo apt-get install -y build-essential libaio1 libnuma1 \
libelf-dev unixodbc-dev sysstat alien
3. 创建专用使用者并设置资源限制
# 创建 oracle 使用者和组
sudo groupadd oinstall
sudo groupadd dba
sudo useradd -m -g oinstall -G dba oracle
echo "oracle ALL= NOPASSWD:ALL" | sudo tee /etc/sudoers.d/oracle
# 设置软硬件限制
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
二、获取并准备 Oracle 安装包
如果下载的是 RPM 包,需要先转换为 DEB 格式:
# 将 RPM 转为 DEB 并直接安装
sudo alien -i oracle_database_19c.rpm
若官方提供的是 zip/tar 包,直接解压到目标目录即可:
# 示例:解压 Oracle 19c 安装文件
sudo mkdir -p /opt/oracle && sudo chown oracle:oinstall /opt/oracle
cd /opt/oracle
sudo unzip /path/to/LINUX.X64_193000_db_home.zip
三、执行安装程序
-
切换至 oracle 使用者并设置语言环境:
# 防止乱码和区域性错误 export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8 -
运行图形化或静默安装脚本:
# 图形化安装 ./runInstaller # 静默模式示例 ./runInstaller -silent -responseFile /opt/oracle/response/DB_INSTALL.rsp \ oracle.install.option=INSTALL_DB_SWONLY \ UNIX_GROUP_NAME=oinstall \ INVENTORY_LOCATION=/opt/oracle/oraInventory \ SELECTED_LANGUAGES=en。en_GB \ ORACLE_HOME=/opt/oracle/product/19c/dbhome_1 \ ORACLE_BASE=/opt/oracle \ DECLINE_SECURITY_UPDATES=true \ AUTOUPGRADE=false \ SKIP_ROOT_PREINSTALL_CHECKS=true \ INSTALL_OPTION=INSTALL_DB_SWONLY \ ORACLE_HOSTNAME=$ -
完成后执行 root 脚本:
# 按提示执行两次 root 脚本 sudo /opt/oracle/root.sh sudo /opt/oracle/product/19c/dbhome_1/root.sh -
创建数据库实例:
# 使用图形化 D娱乐A 或静默模式创建实例 dbca -silent -createDatabase -templateName General_Purpose.dbc \ -gdbname orcl -sid orcl -responseFile NO_VALUE \ -characterSet AL32UTF8 -memoryPercentage 30 \ -emConfiguration NONE -sysPassword MySysPass123 \ -systemPassword MySystemPass123
四、常见兼容性问题及对应方法
| 问题场景 | 方法要点 |
|---|---|
| 操作程序检查失败 | 在执行 runInstaller 前导入环境变量模拟受支持的发行版:
|
| RPM 包无法直接安装 | 使用 alien -i 将其转换为 DEB 并自动完成依赖处理。 |
| 权限不足导致脚本中断 | Sudo 执行所有需要 root 权限的步骤;确保 oracle 使用者属于 dba、oinstall、asmdba、oper**group** 等必要组。 |
| 缺失库文件 | Apt 安装对应的开发包,例如 . |
| LSE‑FORK 错误或进程数受限 | 在 /etc/sysctl.conf |
| TNS‑12547 错误 | - 确认 /dev/shm 有足够空间;- 检查 SELinux/AppArmor 是否拦截;- 确保 oracle 使用者拥有对 $ORACLE_HOME 的读写权限。 |
| CDB/PDB 创建失败 | - 检查字符集是否被正确指定;- 若使用静默模式,请确保响应文件中的所有方法均为绝对方法且无空格。话说回来, |
五、性能调优与设置建议
- 文件句柄 & 会话数:`ulimit -n` 建议设为 `65536`。 `ulimit -u` 一样提高至 `16384`。
- I/O 调度:`echo deadline> /sys/block/sda/queue/scheduler` 可降低磁盘延迟。
- SMP 与 NUMA:`numactl --interleave=all` 在多 CPU 环境下提高并发性能。
- SIGAR 参数:`disk_sector_size_override=true` 用于解决磁盘扇区大小不兼容导致的 REDO 日志错误。
- PGA 与 SGA 大小:`export MEMORY_TARGET=4G` 并在 `init.ora` 中相应调整 `SGA_TARGET` 与 `PGA_AGGREGATE_TARGET`。
- Kdump 与 Core Dump:`sysctl -w kernel.core_pattern=/tmp/core.%e.%p.%t` 用于捕获异常信息便于排错。
六、使用虚拟机或容器进行隔离部署
If compatibility problems become too tangled on host system,encapsulating Oracle inside a dedicated VM or container can completely isolate OS‑level conflicts.
- VirtualBox / VMware:Create an Ubuntu VM and按照上述步骤进行完整安装。这样即使宿主机是非 LTS 程序,也不会影响数据库运行。老实说,
-
LXC / Docker:If you prefer containers。use an official Oracle Linux base image and手动复制 Oracle Home。记得通过
提高所需的内核参数,并映射足够的内存与磁盘卷。 - CLOUD 镜像:Select trusted cloud marketplace images that already包含预配置好的 Oracle 环境,可省去大量手工调参时间。注意监控实例内存上限,防止 OOM。
七、实用一键脚本与参考资源
#!/bin/bash
# oracle19c_ubuntu22_install.sh – 一键自动化脚本
set -euo pipefail
#--- 环境变量 -------------------------------------------------
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
export CV_ASSUME_DISTID=ol8 # 绕过 OS 检查
#--- 基础依赖 -------------------------------------------------
apt-get update && apt-get install -y alien unzip bc ksh libaio1 libaio-dev libnuma1 libnuma-dev
#--- 创建使用者 -------------------------------------------------
groupadd oinstall && groupadd dba && useradd -m -g oinstall -G dba oracle
#--- 下载 & 解压 -----------------------------------------------
cd /opt && mkdir oracle && chown oracle:oinstall oracle && cd oracle
# 假设已把 zip 包放到当前目录:
unzip LINUX.X64_193000_db_home.zip
#--- 设置权限 -------------------------------------------------
chown -R oracle:oinstall /opt/oracle
#--- 执行安装 -------------------------------------------------
su - oracle <'EOF'
cd $HOME/database/
./runInstaller -
EOF
#--- 完成提示 -------------------------------------------------
echo "Oracle 19c 安装已完成,请自行运行 root 脚本并创建实例。"
You can find more community scripts on GitHub 仓库如,或者参考官方文档《Oracle Database Installation Guide for Linux》章节 “Installing on Non‑Supported Distributions”。
八、结论

