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 -m1.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 -p2. Oracle用户与环境变量配置
2.1 创建Oracle用户和组
Oracle不建议直接使用root用户安装,应创建专用用户和组:
sudo groupadd oinstall sudo groupadd dba sudo useradd -g oinstall -G dba oracle sudo passwd oracle2.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/oraInventory2.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_profile3. 安装过程详解
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.zip3.2 图形界面安装
启动安装程序前,确保已配置DISPLAY变量:
export DISPLAY=:0.0 xhost +进入解压后的database目录,运行安装程序:
./runInstaller安装过程中的关键选择:
- 取消选中"I wish to receive security updates via My Oracle Support"
- 选择"Skip software updates"
- 安装选项选择"Install database software only"
- 选择"Single instance database installation"
- 数据库版本选择"Enterprise Edition"
- 指定安装位置为之前配置的
/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) -lnnz114.2 链接阶段错误
如果安装过程中出现链接错误,尝试以下步骤:
- 检查
$ORACLE_HOME/bin目录是否存在 - 确保
oracle用户对该目录有写权限 - 验证环境变量设置是否正确
4.3 图形界面启动失败
如果安装程序无法启动图形界面:
- 确保已安装必要的X11库:
sudo yum install xorg-x11-xauth xorg-x11-utils xorg-x11-server-utils- 检查DISPLAY变量设置:
echo $DISPLAY- 如果通过SSH连接,使用-X或-Y选项:
ssh -X user@hostname5. 安装后配置
5.1 执行root脚本
安装接近完成时,会提示需要以root身份执行两个脚本:
sudo /opt/oracle/oraInventory/orainstRoot.sh sudo /opt/oracle/product/11.2.0/dbhome_1/root.sh5.2 创建数据库
使用Database Configuration Assistant(DBCA)创建数据库:
dbca在图形界面中:
- 选择"Create a Database"
- 选择"General Purpose or Transaction Processing"模板
- 指定全局数据库名称和SID
- 配置管理选项(通常保持默认)
- 设置数据库凭据
- 选择存储类型(通常使用文件系统)
- 指定数据库文件位置
- 配置恢复选项
- 选择是否安装示例方案
- 配置内存、进程数和字符集
- 最后确认并创建数据库
5.3 验证安装
检查数据库状态:
sqlplus / as sysdba SQL> SELECT status FROM v$instance;启动和停止数据库:
# 启动 sqlplus / as sysdba SQL> STARTUP # 停止 SQL> SHUTDOWN IMMEDIATE6. 日常管理与维护
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 on6.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 基本安全措施
- 修改默认密码:
ALTER USER sys IDENTIFIED BY new_password; ALTER USER system IDENTIFIED BY new_password;- 限制网络访问: 编辑
$ORACLE_HOME/network/admin/sqlnet.ora,添加:
tcp.validnode_checking = yes tcp.invited_nodes = (localhost, 192.168.1.100)- 启用数据加密:
-- 创建加密表空间 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):
- 从Oracle支持网站下载最新补丁
- 阅读补丁说明文档
- 使用OPatch工具应用补丁:
cd /path/to/patch opatch apply