Oracle 11g R2企业版在CentOS 7上的完整安装与排错指南

在企业级数据库领域,Oracle 11g R2依然保持着广泛的应用基础。尽管新版本不断推出,但许多关键业务系统仍依赖于这个经过时间验证的稳定版本。本文将带领你完成从系统准备到最终验证的全过程,特别针对CentOS 7环境中可能遇到的各类"坑点"提供解决方案。

1. 环境准备与系统配置

安装Oracle数据库前,充分的准备工作能避免后续80%的常见问题。CentOS 7作为稳定可靠的企业级Linux发行版,是运行Oracle 11g R2的理想选择。

1.1 硬件与操作系统要求

确保你的系统满足以下最低配置:

  • 内存 :至少2GB(建议4GB以上)
  • 交换空间 :物理内存的1.5-2倍
  • 磁盘空间 :/tmp目录至少1GB,安装目录建议分配15GB以上
  • 处理器 :x86_64架构,支持SSE2指令集

使用以下命令检查系统资源:

# 检查内存和交换空间
free -h

# 检查磁盘空间
df -h

# 检查CPU架构
uname -m

1.2 系统包依赖安装

Oracle 11g R2对系统软件包有特定要求,CentOS 7默认仓库中的部分包版本可能不符合。执行以下命令安装必要依赖:

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

注意:当遇到 pdksh 报错时,直接安装 ksh 即可。Oracle实际上已改用 ksh ,但检查脚本中仍引用 pdksh

1.3 内核参数调整

编辑 /etc/sysctl.conf 文件,添加或修改以下参数:

fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
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

应用修改:

sudo sysctl -p

2. Oracle用户与环境变量配置

2.1 创建Oracle用户和组

Oracle不建议直接使用root用户安装,应创建专用用户和组:

sudo groupadd oinstall
sudo groupadd dba
sudo useradd -g oinstall -G dba oracle
sudo passwd oracle

2.2 目录结构与权限设置

创建Oracle安装目录并设置适当权限:

sudo mkdir -p /opt/oracle
sudo mkdir -p /opt/oraInventory
sudo chown -R oracle:oinstall /opt/oracle /opt/oraInventory
sudo chmod -R 775 /opt/oracle /opt/oraInventory

2.3 环境变量配置

以oracle用户登录,编辑 ~/.bash_profile 文件,添加以下内容:

export ORACLE_BASE=/opt/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
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

使配置生效:

source ~/.bash_profile

3. 安装过程详解

3.1 安装文件准备

从Oracle官网下载以下两个文件:

  • linux.x64_11gR2_database_1of2.zip
  • linux.x64_11gR2_database_2of2.zip

解压文件:

unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip

3.2 图形界面安装

启动安装程序前,确保已配置DISPLAY变量:

export DISPLAY=:0.0
xhost +

进入解压后的database目录,运行安装程序:

./runInstaller

安装过程中的关键选择:

  1. 取消选中"I wish to receive security updates via My Oracle Support"
  2. 选择"Skip software updates"
  3. 安装选项选择"Install database software only"
  4. 选择"Single instance database installation"
  5. 数据库版本选择"Enterprise Edition"
  6. 指定安装位置为之前配置的 /opt/oracle

3.3 解决预检查问题

安装程序会执行系统检查,可能报告以下问题及解决方案:

  • 包版本过高警告 :Oracle检查脚本可能无法识别较新的库版本,勾选右上角的"Ignore All"忽略这些警告
  • 缺少包错误 :根据提示使用yum安装缺失的包
  • pdksh缺失 :安装ksh包即可

4. 常见错误与解决方案

4.1 ins_emagent.mk错误

安装过程中可能遇到如下错误:

Error in invoking target 'agent nmhs' of makefile '/opt/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk'

解决方法:

vim $ORACLE_HOME/sysman/lib/ins_emagent.mk

找到第176行左右,修改为:

$(MK_EMAGENT_NMECTL) -lnnz11

4.2 链接阶段错误

如果安装过程中出现链接错误,尝试以下步骤:

  1. 检查 $ORACLE_HOME/bin 目录是否存在
  2. 确保 oracle 用户对该目录有写权限
  3. 验证环境变量设置是否正确

4.3 图形界面启动失败

如果安装程序无法启动图形界面:

  1. 确保已安装必要的X11库:
sudo yum install xorg-x11-xauth xorg-x11-utils xorg-x11-server-utils
  1. 检查DISPLAY变量设置:
echo $DISPLAY
  1. 如果通过SSH连接,使用-X或-Y选项:
ssh -X user@hostname

5. 安装后配置

5.1 执行root脚本

安装接近完成时,会提示需要以root身份执行两个脚本:

sudo /opt/oracle/oraInventory/orainstRoot.sh
sudo /opt/oracle/product/11.2.0/dbhome_1/root.sh

5.2 创建数据库

使用Database Configuration Assistant(DBCA)创建数据库:

dbca

在图形界面中:

  1. 选择"Create a Database"
  2. 选择"General Purpose or Transaction Processing"模板
  3. 指定全局数据库名称和SID
  4. 配置管理选项(通常保持默认)
  5. 设置数据库凭据
  6. 选择存储类型(通常使用文件系统)
  7. 指定数据库文件位置
  8. 配置恢复选项
  9. 选择是否安装示例方案
  10. 配置内存、进程数和字符集
  11. 最后确认并创建数据库

5.3 验证安装

检查数据库状态:

sqlplus / as sysdba
SQL> SELECT status FROM v$instance;

启动和停止数据库:

# 启动
sqlplus / as sysdba
SQL> STARTUP

# 停止
SQL> SHUTDOWN IMMEDIATE

6. 日常管理与维护

6.1 自动启动设置

创建 /etc/init.d/oracle 服务脚本:

#!/bin/bash
# chkconfig: 345 99 10
# description: Oracle auto start-stop script.

ORACLE_HOME=/opt/oracle/product/11.2.0/dbhome_1
ORACLE_OWNER=oracle

case "$1" in
'start')
    su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
    ;;
'stop')
    su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME"
    ;;
*)
    echo "Usage: $0 {start|stop}"
    exit 1
esac
exit 0

设置权限并启用服务:

sudo chmod 755 /etc/init.d/oracle
sudo chkconfig --add oracle
sudo chkconfig oracle on

6.2 备份策略

基本RMAN备份命令示例:

rman target /
RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;

6.3 性能监控

常用监控命令:

-- 查看会话
SELECT sid, serial#, username, status FROM v$session;

-- 查看资源使用
SELECT * FROM v$sysmetric WHERE metric_name IN ('CPU Usage Per Sec', 'Database CPU Time Ratio');

-- 查看表空间使用
SELECT tablespace_name, round(SUM(bytes)/1024/1024) "Size (MB)", 
       round(SUM(bytes)/1024/1024 - NVL(SUM(free_bytes)/1024/1024,0)) "Used (MB)",
       round(NVL(SUM(free_bytes)/1024/1024,0)) "Free (MB)",
       round((SUM(bytes)/1024/1024 - NVL(SUM(free_bytes)/1024/1024,0))/(SUM(bytes)/1024/1024)*100,2) "Used %"
FROM (SELECT tablespace_name, bytes, NULL free_bytes FROM dba_data_files
      UNION ALL
      SELECT tablespace_name, NULL bytes, bytes free_bytes FROM dba_free_space)
GROUP BY tablespace_name;

7. 安全加固建议

7.1 基本安全措施

  1. 修改默认密码:
ALTER USER sys IDENTIFIED BY new_password;
ALTER USER system IDENTIFIED BY new_password;
  1. 限制网络访问: 编辑 $ORACLE_HOME/network/admin/sqlnet.ora ,添加:
tcp.validnode_checking = yes
tcp.invited_nodes = (localhost, 192.168.1.100)
  1. 启用数据加密:
-- 创建加密表空间
CREATE TABLESPACE secure_ts
DATAFILE '/path/to/secure_ts.dbf' SIZE 100M
ENCRYPTION USING 'AES256'
DEFAULT STORAGE(ENCRYPT);

7.2 审计配置

启用基本审计:

-- 启用审计
AUDIT CREATE SESSION;

-- 查看审计记录
SELECT username, action_name, timestamp 
FROM dba_audit_trail
ORDER BY timestamp DESC;

7.3 补丁更新

定期检查并应用最新的PSU(Patch Set Updates):

  1. 从Oracle支持网站下载最新补丁
  2. 阅读补丁说明文档
  3. 使用OPatch工具应用补丁:
cd /path/to/patch
opatch apply
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐