⚠️ 重要提示:请在开始前阅读
- Oracle 11g 已过时:Oracle 11g 已经在 2025 年 1 月停止扩展支持,它不再接收安全更新和性能修复,在生产环境中使用存在巨大安全风险。强烈建议您考虑使用更新的版本,如 Oracle 19c 或 21c。
- 兼容性问题:本教程主要针对 CentOS 7 / RHEL 7,如果您使用更新的系统(如 CentOS 8/9, Ubuntu 20.04/22.04),可能会遇到内核版本不兼容、依赖库缺失等问题,需要大量额外调整。
- 资源消耗大:Oracle 11g 对硬件资源(内存、CPU、交换空间)要求较高,请确保您的虚拟机或物理机配置充足。
- 耐心与细心:整个过程步骤繁多,耗时较长(1-2 小时以上),请严格按照步骤操作,尤其是在环境配置阶段,任何一个小的疏都都可能导致安装失败。
第一部分:环境准备
系统要求
| 组件 | 最低要求 | 推荐配置 |
|---|---|---|
| 操作系统 | CentOS 7.6 / RHEL 7.6 | CentOS 7.9 |
| CPU | 2 核心 | 4 核心或更多 |
| 内存 | 1 GB | 4 GB 或更多 |
| 交换空间 | 物理内存的 1-2 倍 | 至少 4 GB |
| 硬盘空间 | /tmp: 1GB, /oracle: 5GB+ | /oracle: 20GB+ |
| Glibc | 5 或更高 | 17 (CentOS 7 默认) |
硬盘分区与挂载
我们建议创建一个独立的分区用于安装 Oracle。

- 查看现有磁盘:
fdisk -l
- 创建新分区 (假设使用
/dev/sdb新硬盘):fdisk /dev/sdb
- 输入
n创建新分区。 - 输入
p选择主分区。 - 输入
1分区号。 - 回车使用默认的起始和结束扇区。
- 输入
w保存并退出。
- 输入
- 格式化分区:
mkfs.xfs /dev/sdb1 # 或 ext4
- 创建挂载点并挂载:
mkdir -p /oracle mount /dev/sdb1 /oracle
- 设置开机自动挂载:
echo "/dev/sdb1 /oracle xfs defaults 0 0" >> /etc/fstab df -hT # 查看挂载是否成功
安装必要的依赖包
# 更新系统 sudo yum update -y # 安装必要的软件包 sudo yum install -y binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat unixODBC unixODBC-devel
关闭防火墙和 SELinux
⚠️ 这一步是为了简化安装,在生产环境中请务必配置正确的防火墙规则和 SELinux 策略。
-
关闭防火墙:
systemctl stop firewalld systemctl disable firewalld
-
关闭 SELinux:
- 临时关闭(重启后失效):
setenforce 0
- 永久关闭(需要重启):
vi /etc/selinux/config # 将 SELINUX=enforcing 改为 SELINUX=disabled # 保存退出 :wq
- 临时关闭(重启后失效):
创建 Oracle 用户和组
# 创建 oinstall 和 dba 组 groupadd oinstall groupadd dba # 创建 oracle 用户,并将其加入 oinstall 和 dba 组 useradd -g oinstall -G dba oracle # 设置 oracle 用户的密码 passwd oracle # 创建安装目录并设置权限 mkdir -p /oracle/app/oracle/product/11.2.0/dbhome_1 chown -R oracle:oinstall /oracle chmod -R 775 /oracle
配置内核参数
编辑 /etc/sysctl.conf 文件:

vi /etc/sysctl.conf
在文件末尾添加或修改以下内容:
# Oracle 11g R2 Settings fs.file-max = 6815744 kernel.shmall = 4194304 kernel.shmmax = 1073741824 # 通常设置为物理内存的一半,单位为字节 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 fs.aio-max-nr = 1048576
使配置生效:
sysctl -p
配置用户限制
编辑 /etc/security/limits.conf 文件:
vi /etc/security/limits.conf
在文件末尾添加以下内容:

oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft stack 10240 oracle hard stack 32768
编辑 /etc/pam.d/login 文件:
vi /etc/pam.d/login
添加或修改以下行:
session required pam_limits.so
编辑 /etc/profile 文件:
vi /etc/profile
在文件末尾添加:
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
第二部分:安装 Oracle 软件
下载 Oracle 安装包
从 Oracle 官网下载适用于 Linux x86_64 的安装包:
linux.x64_11gR2_database_1of2.ziplinux.x64_11gR2_database_2of2.zip
将这两个文件上传到 Linux 服务器的 /tmp 目录下。
解压安装包
切换到 oracle 用户:
su - oracle
解压文件:
cd /tmp unzip linux.x64_11gR2_database_1of2.zip unzip linux.x64_11gR2_database_2of2.zip
解压后,会在 /tmp 目录下生成一个 database 文件夹。
配置安装环境变量
编辑 oracle 用户的 .bash_profile 文件:
vi ~/.bash_profile
在文件末尾添加以下内容(请根据你的实际安装路径调整):
# Oracle Settings export ORACLE_BASE=/oracle/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1 export ORACLE_SID=orcl # 全局数据库名,可以自定义 export PATH=$PATH:$ORACLE_HOME/bin export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
使配置生效:
source ~/.bash_profile
运行安装程序
进入 database 目录,运行 runInstaller:
cd /tmp/database ./runInstaller
此时会弹出图形化安装界面,如果无法显示,请确保你是在 X Window 环境下(例如使用 Xshell 或 MobaXterm 等支持 X11 转发的工具连接)。
第三部分:图形化安装步骤
-
配置安全更新:
- 取消勾选 "I wish to receive security updates via My Oracle Support"。
- 点击 "Next"。
-
选择安装选项:
- 选择 "Create and configure a database"。
- 点击 "Next"。
-
选择系统类型:
- 选择 "Server Class"。
- 点击 "Next"。
-
选择典型安装:
- 选择 "Single Instance Database installation"。
- 点击 "Next"。
-
选择安装类型:
- 选择 "Typical Installation"。
- Oracle Base:会自动填充
/oracle/app/oracle。 - Software Location:会自动填充
/oracle/app/oracle/product/11.2.0/dbhome_1。 - Global Database Name:输入你之前设置的
orcl。 - Database File Storage:选择 "File System",使用 "Use Common Location for All Database Files"。
- Character Set:选择 "Use Unicode (AL32UTF8)"。
- Administrative Password:为
SYS,SYSTEM,SYSMAN等用户设置一个强密码。 - 点击 "Next"。
-
先决条件检查:
- 安装程序会检查系统配置,如果出现红色叉号,通常是内核参数或限制设置问题,请返回第一部分检查。
- 点击 "Fix and Check Again" 进行修复,直到所有项目都通过。
- 点击 "Next"。
-
概要:
确认安装信息无误,点击 "Install"。
-
安装过程:
-
安装过程会持续较长时间,请耐心等待,终端会自动弹出,并以
oracle用户身份执行一些脚本,不要关闭终端。 -
当看到类似
Performing root operation...的提示时,打开一个新的终端窗口,以root用户身份执行以下脚本:# 切换到 root 用户 su - # 执行脚本(路径可能略有不同) /oracle/app/oraInventory/orainstRoot.sh /oracle/app/oracle/product/11.2.0/dbhome_1/root.sh # 执行完毕后,退出 root 用户 exit
-
回到原来的安装窗口,点击 "OK"。
-
-
安装完成:
- 看到 "Installation Complete" 界面,点击 "Close"。
- 安装程序可能会提示你运行
dbca或netca,你可以直接关闭它,我们手动运行。
第四部分:创建数据库实例
-
运行数据库配置助手 (DBCA):
dbca
-
数据库操作:
- 选择 "Create a Database",点击 "Next"。
- 数据库模板:选择 "General Purpose or Transaction Processing",点击 "Next"。
- 数据库标识符:
- Global Database Name:
orcl - SID:
orcl - 点击 "Next"。
- Global Database Name:
- 管理选项:保持默认,点击 "Next"。
- 数据库身份验证:选择 "Use the same administrative password for all accounts",输入密码,点击 "Next"。
- 数据库文件所在位置:保持默认,点击 "Next"。
- 恢复配置:保持默认,点击 "Next"。
- :保持默认,点击 "Next"。
- 初始化参数:保持默认,点击 "Next"。
- 数据库存储:保持默认,点击 "Next"。
- 创建选项:选择 "Create Database",点击 "Finish"。
- 确认:点击 "OK" 开始创建。
创建数据库也需要一些时间,请耐心等待,完成后,点击 "Exit" 退出 DBCA。
第五部分:验证安装
-
监听器状态:
lsnrctl status
应该能看到监听器正在运行,并监听了 1521 端口。
-
连接数据库:
sqlplus / as sysdba
进入 SQL*Plus 后,执行以下命令:
SQL> SELECT status FROM v$instance; -- 应该返回 OPEN SQL> EXIT
-
测试远程连接 (可选): 如果需要远程连接,请确保防火墙是开启状态,并已正确配置了端口,你可以使用 SQL Developer 或其他数据库连接工具进行测试。
常见问题与排错
./runInstaller: not found:检查unzip是否成功,database目录下是否有runInstaller文件。error while loading shared libraries: libXtst.so.6:缺少依赖库,运行yum install libXtst。PRVF-4654:通常是内核参数fs.aio-max-nr设置不正确,检查/etc/sysctl.conf并确保sysctl -p生效。ORA-27102: out of memory:通常是shmmax设置过小,或者物理内存不足,检查/etc/sysctl.conf中的shmmax值。ORA-12514: TNS:listener does not currently know of service requested in connect descriptor:监听器未启动或数据库服务未注册,先启动监听器lsnrctl start,然后启动数据库sqlplus / as sysdba->startup。
至此,您已成功在 Linux 系统上安装并配置了 Oracle 11g 数据库。
