CentOS7一键部署Oracle11g实战指南[附脚本]

发布时间:2026/7/30 0:54:04

CentOS7一键部署Oracle11g实战指南[附脚本] 1. 为什么需要一键部署Oracle11g每次手动部署Oracle数据库就像搭积木——看似简单实际要处理上百个依赖项和配置参数。我见过不少运维同事在安装Oracle11g时光是解决pdksh依赖包的问题就能折腾一整天。传统安装方式需要手动处理以下痛点依赖地狱缺少libaio、compat-libstdc等基础库会导致安装中断系统配置复杂需要手动调整内核参数、创建swap分区、配置用户权限图形界面依赖必须通过VNC远程桌面操作对服务器环境要求苛刻警告陷阱内存不足、swap空间不够等警告会让强迫症患者崩溃去年我们团队为某银行做系统迁移需要在20台CentOS7服务器上部署Oracle11g。按传统方式安装平均每台要花费4小时。后来开发的自动化脚本把时间压缩到30分钟以内——这就是我分享这个一键部署方案的初衷。2. 环境准备与脚本解析2.1 硬件配置建议虽然Oracle11g官方最低要求是1GB内存但实测下来生产环境建议4核CPU/8GB内存/50GB存储测试环境2核CPU/4GB内存/20GB存储也能运行Swap空间物理内存的1.5倍可通过脚本自动调整2.2 脚本核心功能我提供的自动化脚本CentOS7Oracle11gInstallHelper主要包含这些魔法#!/bin/bash # 安装基础依赖 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 # 创建Oracle用户组 groupadd oinstall groupadd dba groupadd oper useradd -g oinstall -G dba,oper oracle echo oracle:your_password | chpasswd # 配置内核参数 cat /etc/sysctl.conf EOF fs.aio-max-nr 1048576 fs.file-max 6815744 kernel.shmall 2097152 kernel.shmmax 2147483648 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 EOF sysctl -p # 自动配置Swap空间动态计算1.5倍内存 MEM$(free -m | awk /Mem:/{print $2}) SWAP$((MEM * 3 / 2)) dd if/dev/zero of/var/swap bs1M count${SWAP} ...脚本通过yum自动安装所有依赖包比手动逐个安装更可靠。曾经有同事漏装compat-libstdc-33导致安装程序直接崩溃。3. 实战部署全流程3.1 VNC图形化环境配置Oracle安装程序需要图形界面这是很多命令行高手的盲区。脚本已内置VNC服务配置# 配置VNC服务 yum install -y tigervnc-server cp /lib/systemd/system/vncserver.service /etc/systemd/system/vncserver:1.service sed -i s/USER/oracle/g /etc/systemd/system/vncserver:1.service systemctl daemon-reload sudo -u oracle vncpasswd EOF your_vnc_password your_vnc_password EOF systemctl start vncserver:1连接时使用服务器IP:5901端口密码为脚本中设置的your_vnc_password。建议使用TigerVNC Viewer比RealVNC对Linux支持更好。3.2 数据库安装文件处理将下载的linux.x64_11gR2_database_1of2.zip和linux.x64_11gR2_database_2of2.zip上传到/home/oracle后# 解压安装包自动检测文件存在性 [ -f /home/oracle/linux.x64_11gR2_database_1of2.zip ] \ unzip /home/oracle/linux.x64_11gR2_database_1of2.zip -d /home/oracle [ -f /home/oracle/linux.x64_11gR2_database_2of2.zip ] \ unzip /home/oracle/linux.x64_11gR2_database_2of2.zip -d /home/oracle解压后会出现database目录这就是Oracle著名的runInstaller所在位置。遇到过有新手把zip包直接解压到根目录导致文件权限混乱的惨剧。4. 安装后关键配置4.1 解决经典错误ins_emagent.mk这是Oracle11g在CentOS7上的著名坑点脚本已包含自动修复# 预修改emagent.mk文件 ORACLE_HOME/home/oracle/app/oracle/product/11.2.0/dbhome_1 sed -i s/^\(\s*\)\($(MK_EMAGENT_NMECTL)\)/\1#\2/ \ ${ORACLE_HOME}/sysman/lib/ins_emagent.mk这个修改是为了绕过新版本glibc的兼容性问题。有次我在客户现场忘记处理结果安装到70%突然弹窗报错客户CTO就在背后站着...4.2 防火墙与自启动配置生产环境必须的加固操作# 开放Oracle端口 firewall-cmd --permanent --add-port1521/tcp firewall-cmd --reload # 设置Oracle开机启动 cat /etc/oratab EOF orcl:/home/oracle/app/oracle/product/11.2.0/dbhome_1:Y EOF数据库监听启动有个冷知识如果遇到TNS-12555错误可能是/etc/hosts文件没有正确配置主机名解析。建议在脚本中加入echo 127.0.0.1 $(hostname) /etc/hosts5. 验证与日常运维5.1 连接测试技巧除了常用的sqlplus / as sysdba我更喜欢用这种带日志的测试方式# 记录连接过程详情 sqlplus -L sys/your_passwordorcl as sysdba EOF install.log select * from v\$version; exit; EOF如果连接失败install.log会显示具体错误。曾经有客户误删了$ORACLE_HOME/network/admin/listener.ora导致监听服务起不来就是通过日志发现的。5.2 备份策略示例建议在脚本最后添加自动备份配置# 每天凌晨1点全量备份 cat /home/oracle/rman_backup.sh EOF #!/bin/bash export ORACLE_HOME/home/oracle/app/oracle/product/11.2.0/dbhome_1 export PATH$PATH:$ORACLE_HOME/bin rman target / CMDS run { allocate channel ch1 device type disk; backup database plus archivelog; release channel ch1; } CMDS EOF chmod x /home/oracle/rman_backup.sh (crontab -l 2/dev/null; echo 0 1 * * * /home/oracle/rman_backup.sh) | crontab -这个备份方案在我们金融客户那运行了三年成功恢复了7次人为误删数据。记住没有备份的数据库就像走钢丝不系安全带。

相关新闻