CentOS 7.9部署Oracle 11g实战避坑手册
当你在凌晨三点的机房盯着屏幕上闪烁的光标,耳边只有服务器风扇的嗡鸣,而Oracle安装进度条卡在84%纹丝不动时——这份手册正是为你准备的。不同于标准安装教程,这里记录的每个解决方案都来自真实生产环境中的血泪教训,我们将用最直接的方式攻克那些官方文档从未提及的"幽灵故障"。
1. 依赖包安装的隐形陷阱
阿里云镜像源失效时的应急方案往往被大多数教程忽略。当执行
yum install
命令出现
Could not resolve host
错误时,按以下步骤操作:
# 备份原有repo文件
mkdir -p /etc/yum.repos.d/backup && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/
# 下载CentOS基础repo文件
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# 清理并重建缓存
yum clean all && yum makecache
字体配置的坑更为隐蔽。即使按照常规流程部署了中文字体,安装界面仍可能出现乱码。这是因为Oracle安装器会检查特定字体路径:
# 创建字体链接(关键步骤!)
ln -s /usr/share/fonts/zh_CN/TrueType/zysong.ttf /usr/share/fonts/default/Typefaces/
fc-cache -fv # 刷新字体缓存
依赖包完整清单分类 :
| 类别 | 必须安装的包 | 典型错误提示 |
|---|---|---|
| 编译工具 | gcc-c++ binutils-devel make | "Error in invoking target 'agent nmectl'" |
| 兼容库 | compat-libstdc++-33 glibc-devel.i686 | "Unsupported glibc version" |
| 图形支持 | libXext.i686 libXtst.i686 | "X11 display connection failed" |
| 系统工具 | ksh unixODBC-devel elfutils-libelf-devel | "pdksh not found" |
特别注意:在最小化安装的CentOS中,必须额外安装
xorg-x11-utils包,否则图形安装界面会闪退且无错误提示。
2. 图形界面安装的黑暗森林
DISPLAY配置问题堪称Oracle安装的第一大拦路虎。当遇到
Can't connect to X11 window server
错误时,按以下流程排查:
-
在本地终端验证X11转发是否正常:
# 在本地机器执行(非服务器) echo $DISPLAY # 应返回类似 :0 或 localhost:10 的值 -
在服务器端设置正确的DISPLAY变量(根据实际连接方式调整):
# 直接物理机操作 export DISPLAY=:0.0 # 通过SSH隧道连接 export DISPLAY=localhost:10.0 -
权限控制常被忽视的关键命令:
# 以root执行(危险但必要) xhost +SI:localuser:oracle
X11常见故障对照表 :
| 故障现象 | 根本原因 | 解决方案 |
|---|---|---|
| 白屏/闪退 | 内存不足 | 增加swap空间至4GB以上 |
| 鼠标键盘无响应 | 权限冲突 |
执行
xhost +
后重启Xorg服务
|
| 花屏/乱码 | 字体配置错误 | 重新链接字体文件并刷新缓存 |
遇到进度84%卡住时,不要急着重启安装。新建终端窗口检查日志:
tail -f /tmp/OraInstallYYYY-MM-DD_HH-MM-SS/installActions.log
通常会发现正在静默执行
linking binaries
操作,大型数据库此过程可能持续30分钟以上。
3. 高频致命错误实战修复
3.1 ins_emagent.mk错误终极方案
这个经典错误有五种变体,传统修改
ins_emagent.mk
文件的方法可能失效。推荐以下根治方案:
# 进入报错文件目录
cd $ORACLE_HOME/sysman/lib
# 备份原始文件
cp ins_emagent.mk ins_emagent.mk.bak
# 使用sed进行智能替换
sed -i 's/^\(\s*\)\$\(MK_EMAGENT_NMECTL\)/\1\$(MK_EMAGENT_NMECTL) -lnnz11/g' ins_emagent.mk
3.2 交换空间不足的应急处理
当安装程序报
swap space is less than required
时,快速扩展swap的方法:
# 创建临时swap文件(4GB示例)
dd if=/dev/zero of=/tmp/swapfile bs=1M count=4096
chmod 600 /tmp/swapfile
mkswap /tmp/swapfile
swapon /tmp/swapfile
# 验证结果
free -m
重要提示:该方法创建的swap在重启后失效,永久生效需修改/etc/fstab文件。
3.3 sqlplus命令找不到的深度解析
环境变量配置正确但依然出现
sqlplus: command not found
时,按此流程检查:
-
验证ORACLE_HOME实际路径:
ls -ld $ORACLE_HOME/bin/sqlplus -
检查动态链接库:
ldd $ORACLE_HOME/bin/sqlplus若出现
not found提示,需安装对应的库文件 -
终极解决方案(当环境变量加载异常时):
# 直接使用绝对路径 /home/oracle/app/oracle/product/11.2.0/dbhome_1/bin/sqlplus /nolog
4. 安装后运维的隐藏关卡
4.1 系统重启后的自启动配置
大多数教程遗漏的关键服务注册步骤:
# 创建oracle服务文件
cat > /etc/systemd/system/oracle-rdbms.service <<EOF
[Unit]
Description=Oracle RDBMS
After=syslog.target network.target
[Service]
Type=forking
User=oracle
Group=oinstall
Environment="ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1"
ExecStart=$ORACLE_HOME/bin/dbstart $ORACLE_HOME
ExecStop=$ORACLE_HOME/bin/dbshut $ORACLE_HOME
[Install]
WantedBy=multi-user.target
EOF
# 启用服务
systemctl daemon-reload
systemctl enable oracle-rdbms
4.2 监听服务异常处理
当
lsnrctl start
失败时,按此顺序排查:
-
检查监听日志:
tail -100 $ORACLE_HOME/network/log/listener.log -
重新创建监听配置:
netca -silent -responseFile $ORACLE_HOME/assistants/netca/netca.rsp -
强制重启监听:
lsnrctl stop ps -ef | grep tns | grep -v grep | awk '{print $2}' | xargs kill -9 lsnrctl start
4.3 空间监控与自动维护
添加以下cron任务防止表空间爆满:
# oracle用户下执行
crontab -e
添加内容:
0 3 * * * /home/oracle/scripts/check_tablespace.sh
配套脚本示例:
#!/bin/bash
$ORACLE_HOME/bin/sqlplus -s / as sysdba <<EOF
set heading off
set feedback off
spool /tmp/tablespace_alert.log
SELECT 'ALTER TABLESPACE '||tablespace_name||' ADD DATAFILE ''/path/to/newfile.dbf'' SIZE 1G AUTOEXTEND ON NEXT 100M MAXSIZE 10G;'
FROM dba_tablespaces
WHERE status='ONLINE' AND contents='PERMANENT'
AND tablespace_name NOT LIKE 'UNDO%'
AND (SELECT ROUND(used_percent,2) FROM dba_tablespace_usage_metrics
WHERE tablespace_name=a.tablespace_name) > 85;
spool off
@/tmp/tablespace_alert.log
EOF

531

被折叠的 条评论
为什么被折叠?



