Oracle 11g R2安装踩坑实录:从报错‘agent nmhs’到成功启动的完整排错指南
2026/6/17 4:27:36 网站建设 项目流程

Oracle 11g R2安装实战:从'agent nmhs'报错到系统调优的全链路指南

在数据库技术领域,Oracle 11g R2依然占据着企业级应用的重要地位。尽管新版本不断推出,但大量传统系统仍运行在这一经典版本上。本文将分享一个完整的安装排错过程,从环境准备到后期优化,特别针对那些让DBA头疼的典型错误——比如著名的'agent nmhs' makefile报错。

1. 环境准备与前置检查

安装Oracle数据库从来不是简单的点击"下一步"就能完成的任务。在开始安装程序前,我们需要确保系统环境满足所有必要条件。

1.1 系统需求确认

首先检查操作系统版本是否兼容:

cat /etc/redhat-release uname -m

Oracle 11g R2对内存和交换空间有明确要求:

组件最小要求推荐配置
物理内存1GB4GB+
交换空间1.5倍内存2倍内存
临时空间1GB5GB
安装空间4.5GB20GB+

提示:使用free -mdf -h命令验证系统资源是否达标

1.2 依赖包安装

常见的依赖问题往往导致安装失败。以下是必须安装的软件包组:

yum groupinstall "Development Tools" yum install -y binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel glibc glibc-common glibc-devel gcc gcc-c++ libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel

特别注意两个容易遗漏的包:

  • pdksh问题:Oracle检查脚本仍使用这个旧名称,但实际应安装ksh
  • libXext:图形界面安装时必需的库

2. 安装过程中的典型错误处理

即使准备充分,安装过程中仍可能遇到各种报错。下面分析几个最常见的问题。

2.1 'agent nmhs' makefile错误

这个经典错误出现在安装进度约85%时,错误信息如下:

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

解决方法分三步:

  1. 定位问题文件:
vim $ORACLE_HOME/sysman/lib/ins_emagent.mk
  1. 找到第176行附近,修改为:
$(MK_EMAGENT_NMECTL) -lnnz11
  1. 保存后点击Retry继续安装

2.2 高版本库文件不被识别

Oracle安装检查脚本有时无法识别较新版本的库文件,尽管它们完全兼容。这时可以:

  1. 检查实际安装的库版本:
rpm -qa | grep libstdc++
  1. 如果确认版本高于要求但检查仍不通过,可以:
  • 临时安装旧版本库文件
  • 或直接勾选安装界面的"Ignore All"选项

2.3 权限与用户组配置

不正确的用户组设置会导致后续管理问题。建议采用以下配置:

  • 创建必要的用户和组:
groupadd oinstall groupadd dba useradd -g oinstall -G dba oracle
  • 设置目录权限:
chown -R oracle:oinstall /opt/oracle chmod -R 775 /opt/oracle

3. 安装后的必要配置

安装完成只是第一步,合理的配置才能发挥数据库最佳性能。

3.1 环境变量设置

在oracle用户下的.bash_profile中添加:

export ORACLE_HOME=/opt/oracle/product/11.2.0/dbhome_1 export PATH=$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib export ORACLE_SID=orcl

注意:每次修改后执行source ~/.bash_profile使配置生效

3.2 内存参数调整

修改$ORACLE_HOME/dbs/init.ora中的关键参数:

参数推荐值说明
sga_target物理内存的50%SGA总大小
pga_aggregate_target物理内存的20%PGA总大小
db_cache_sizeSGA的60%数据缓存区
shared_pool_sizeSGA的25%共享池大小

3.3 监听器配置

创建监听器配置文件$ORACLE_HOME/network/admin/listener.ora

LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) ) )

启动监听服务:

lsnrctl start

4. 性能优化与日常维护

数据库安装后的优化同样重要,这直接影响系统长期运行的稳定性。

4.1 AWR报告配置

启用自动工作负载仓库(AWR):

-- 修改快照保留策略 EXEC DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS( retention => 43200, -- 保留30天(分钟) interval => 60); -- 每小时收集一次

生成AWR报告:

@$ORACLE_HOME/rdbms/admin/awrrpt.sql

4.2 定期维护脚本

创建以下维护脚本并加入cron计划:

  1. 表空间监控:
SELECT tablespace_name, used_percent FROM dba_tablespace_usage_metrics WHERE used_percent > 80;
  1. 归档日志清理:
find $ORACLE_HOME/flash_recovery_area -name "*.arc" -mtime +7 -exec rm {} \;

4.3 备份策略设置

建议的RMAN备份配置:

CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS; CONFIGURE CONTROLFILE AUTOBACKUP ON; CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/backup/%U'; -- 完整备份脚本 RUN { BACKUP DATABASE PLUS ARCHIVELOG; DELETE NOPROMPT OBSOLETE; }

在实际项目中,我发现最容易被忽视的是安装后的参数调优。许多DBA花费大量时间解决安装问题,却忽略了简单的内存配置就能带来显著性能提升。例如,将sga_target设置为物理内存的50%-60%,往往能立即改善查询响应速度。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询