当前位置: 首页 > news >正文

Oracle 11g R2 企业版在CentOS 7上的保姆级安装教程(附常见报错修复方案)

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
http://www.jsqmd.com/news/949333/

相关文章:

  • Windows 10下用Python 3.10搞定Mamba复现:从CUDA版本冲突到Triton安装的保姆级排坑记录
  • 告别工具切换!用PotatoTool这一个Java工具搞定红队流量解密、Shiro反序列化和IP溯源
  • Python实战:基于OpenCV与Pyzbar构建本地化二维码扫描器
  • 如何快速搭建Sunshine游戏串流服务器:面向初学者的完整指南
  • FastGithub轻松上手:5分钟搞定GitHub访问加速,告别龟速下载
  • 手把手教你用PinnacleQt和PySide6复刻一个“网易云音乐”风格的桌面客户端
  • TSDZ2中置电机非标车架改装:扭矩传感器应用与工程实践详解
  • RePKG终极指南:5分钟解锁Wallpaper Engine隐藏资源宝库
  • 5V升压8.4V2A充电芯片:2A充电时电感饱和电流需大于4.5A
  • 基于OpenPose的太极拳动作识别工具:含预训练模型、标注数据集与多版本可视化界面
  • 别再手动复制粘贴了!用poi-tl + Java搞定Word领料单自动生成(附完整源码)
  • 新手必看:Ozone11臭氧插件在FL Studio 21里的保姆级安装与激活教程
  • 基于MSP432与TMP006的红外测温系统:嵌入式到Python实时可视化全链路实践
  • 2026年6月贵阳三家黄金回收专业深度测评与避坑指南,谁才是最靠谱的那家 - 速递信息
  • PotatoTool实战:手把手教你解密冰蝎4.0流量和Log4j2混淆日志(附Java 11+环境配置)
  • 如何快速高效下载HLS视频流:m3u8下载器实战技巧全解析
  • ICT 与 FCT 测试在 PCBA 制程中有什么作用?
  • 终极Beyond Compare 5授权密钥生成与激活完全指南
  • 成本大降22万!江苏万高电机采购案例解析 - 资讯纵览
  • 如何高效配置TrafficMonitor插件:专业用户的完整桌面监控方案
  • 从Polycam扫描到网页展示:用A-Frame和3DGS快速搭建你的虚拟植物园
  • 2026年6月泰州装修公司实力排行 基于业主口碑优选 - 奔跑123
  • 别只当母带工具!解锁Ozone11在混音阶段的5个隐藏用法(以人声为例)
  • 油田含油污水过滤罐智能监测系统设计
  • ComfyUI ControlNet Aux DWPose姿态估计器:从安装到实战的完整指南
  • 告别抓瞎!用AST和Babel手把手还原极验4滑块验证码混淆JS(附完整Node.js脚本)
  • 基于Arduino与ANT+协议的智能骑行台坡度模拟器DIY全解析
  • APK-Installer:如何在Windows上告别模拟器臃肿,实现轻量级Android应用安装?
  • 微信小程序手机端白屏?别慌,可能是SSL证书链没配全(保姆级排查指南)
  • 【课程设计/毕业设计】基于SpringBoot与微信小程序的运动场馆服务平台基于springboot+微信小程序的体育馆预约系统【附源码、数据库、万字文档】