简介:这份文档面向需要在虚拟机中搭建CentOS 6.5-x86_64开发或测试环境的运维与测试人员,系统梳理了从操作系统安装到常用组件部署的完整流程。内容涵盖Red Hat 5.6_x64基础系统安装、静态网络配置、VMware虚拟工具安装、mpiag与oracle用户创建,以及SSH、FTP、telnet、SVN、JDK、buildc、RF和Oracle数据库等组件的安装与配置,并针对root访问限制、防火墙、SELinux、DNS反向解析等常见问题给出处理思路。资源包共1个docx文件,约32KB,以图文步骤形式记录关键命令与配置文件修改位置,便于对照操作。目前已有384人学习下载,适合刚接触Linux部署、需要快速复现CentOS 6.5环境并完成Oracle相关组件安装的读者参考,也可作为自动化测试环境搭建的排错手册。
1. 虚拟机里装 CentOS 6.5:一份被 Oracle 10g 逼出来的部署清单
如果你手上有一份虚拟机安装CentOS6.5-x86_64系统.docx,别急着当成普通装机教程翻过去。这份文档真正值钱的地方,是它把「装系统」和「装 Oracle 10g 数据库」绑在了一起——硬盘必须给到 30G,因为 Oracle 装完加上自动化测试跑一轮,20G 就没了;网络必须配静态 IP,因为后面数据库监听、SVN 导出、FTP 传包全依赖固定地址;防火墙必须关,因为 1521 端口和 21 端口在默认策略下根本不通。它适合谁?适合那些需要在隔离环境里复现一套老版本 Linux 开发测试栈的工程师,尤其是被 Oracle 10g 安装卡过脖子的人。这份文档不是官方手册,是一份带着血泪经验的现场记录,里面每个配置项背后都有具体的失败场景在撑着。
2. 装系统与配网络:从 30G 硬盘到静态 IP 的硬性约束
2.1 为什么硬盘必须给 30G,以及安装时的三个硬性选择
在虚拟机里新建这台机器时,硬盘容量直接拉到 30G,不要用默认的 20G。原因在文档里写得很直白:Oracle 数据库安装完成后,自动化测试跑起来会用掉 20G 左右。如果你只给 20G,装完数据库可能连临时表空间都扩不了,更别说后面还要放 SVN 导出的代码包和 buildc 框架的编译产物。
安装操作系统时,文档指定的是 RedHat 5.6_x64,序列号550dd56b51499bd5。这里有个容易翻车的地方:CentOS 6.5 和 RedHat 5.6 的内核版本、库文件路径有差异,但文档里 Oracle 安装部分又明确要求改/etc/redhat-release来绕过版本检查。所以实际部署时,你装的是 CentOS 6.5,但系统里要伪装成 RedHat 4 或 5 来骗过 Oracle 的安装程序。安装语言选中文,防火墙直接禁用——不是建议,是必须。后面 FTP 和 telnet 的配置里反复出现SELINUX=disabled和iptables stop,说明这套环境对安全策略的容忍度极低。
安装完成后第一件事,把终端快捷方式放到桌面。这个操作看似无关紧要,但后面配置网络、创建用户、装 JDK 全要开终端,有个桌面图标能省不少事。
2.2 静态 IP 配置:ifcfg-eth0 里每个参数的实际含义
网络配置是这套环境能不能跑通的第一道坎。文档里给了两套方案:一套是静态 IP 直连,一套是 NAT 链接方式。先看静态 IP 的配置文件/etc/sysconfig/network-scripts/ifcfg-eth0:
# 网络配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 # 接口名称,必须和实际网卡一致 BOOTPROTO=static # 静态配置,DHCP 则写 dhcp BROADCAST=10.10.126.255 # 广播地址,此行可省略 HWADDR=B2:23:38:50:3E:6B # 网卡物理地址,虚拟机里要核对 ONBOOT=yes # 开机自动加载,不写这行重启后网络不启动 IPADDR=10.10.126.235 # IP 地址,也可用 10.10.126.244 NETMASK=255.255.255.0 # 子网掩码 GATEWAY=10.10.126.1 # 默认网关 TYPE=Ethernet # 网络类型 USERCTL=yes # 允许普通用户控制网卡 IPV6INIT=no # 关闭 IPv6,避免解析干扰 PEERDNS=yes # 允许 DHCP 覆盖 resolv.conf这里有几个参数值得展开说。BOOTPROTO=static和none在效果上等价,但文档里 NAT 方案用的是none,说明两种写法都认。HWADDR在虚拟机克隆场景下必须改,否则会和新虚拟机的网卡地址冲突,导致网络时通时断。ONBOOT=yes是最容易被漏掉的一行,漏了之后每次重启都要手动ifup eth0。
DNS 配置在/etc/resolv.conf:
# DNS 服务器配置文件 nameserver 202.107.117.11 nameserver 210.83.210.155配完之后重启网络服务:
service network restart如果重启后ping不通网关,先检查HWADDR是否和虚拟机实际网卡地址一致。在 VMware 里用ip link show eth0能看到真实 MAC 地址。另一个常见问题是GATEWAY写错,导致能 ping 通同网段机器但出不了外网。
NAT 方式的配置略有不同,BOOTPROTO=none,IPADDR换成192.168.50.132,GATEWAY换成192.168.50.1。NAT 模式下虚拟机通过宿主机的网络出口访问外网,适合宿主机本身没有独立公网 IP 的场景。选哪种方式取决于你的虚拟机网络模式:桥接用静态 IP 方案,NAT 用 NAT 方案,不要混着抄。
2.3 安装 VMware Tools:让虚拟机和宿主机之间的文件拖拽能用
虚拟工具不装,虚拟机和宿主机之间没法直接拖文件,后面传 JDK 安装包、Oracle 补丁包会非常痛苦。文档里给的是 VMware 环境的操作步骤:
# 挂载 VMware Tools 光盘后执行 mkdir /home/temp cp /media/VMware\ Tools/VMwareTools-9.6.1-1378637.tar.gz /home/temp cd /home/temp gzip -d VMwareTools-9.6.1-1378637.tar.gz tar -xvf VMwareTools-9.6.1-1378637.tar cd vmware-tools-distrib/ ./vmware-install.plvmware-install.pl执行过程中会问一堆路径,一路回车用默认值就行。装完重启,宿主机和虚拟机之间的复制粘贴、文件拖拽就通了。注意cp命令里VMware\ Tools中间有个空格,反斜杠是转义,直接写VMware Tools不加引号会报错。
3. 用户、服务与基础环境:从 mpiag 到 JDK 的逐项落地
3.1 创建 mpiag 和 oracle 用户,以及 SSH 的 root 访问配置
用户创建本身不复杂,但顺序有讲究:
useradd mpiag passwd mpiag useradd oracle passwd oracle先建 mpiag 再建 oracle,因为后面 Oracle 安装时要把 mpiag 加到 oracle 组里,顺序反了要额外处理组关系。密码按文档要求设置,oracle 用户的密码后面在数据库配置里会用到。
SSH 默认已经安装并开启,但 root 用户默认不可访问。文档给的做法是改/etc/sysconfig/selinux:
# 将 SELINUX=enforcing 改为 SELINUX=disabled vi /etc/sysconfig/selinux改完立即生效。另一个影响体验的问题是 SSH 登录慢,原因是 sshd 在做 DNS 反向解析。在/etc/ssh/sshd_config尾部加一行:
UseDNS no这行加上之后,SSH 连接基本秒开。如果不加,每次登录要等十几秒,后面用 SVN 导出代码、用 scp 传文件时会非常难受。
3.2 FTP 和 telnet:两个老服务的配置与 root 访问放行
FTP 服务端用的是vsftpd-2.0.5-16.el5_5.1.x86_64.rpm,安装后启动并设置开机自启:
service vsftpd start chkconfig vsftpd on默认端口 21 没开,需要改 iptables:
vi /etc/sysconfig/iptables # 增加一行 -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT让 root 用户能登录 FTP,要改三个文件:/etc/vsftpd/ftpusers和/etc/vsftpd/user_list里 root 前面加#注释掉,/etc/vsftpd/vsftpd.conf里把userlist_enable=YES改成NO。改完重启 vsftpd。
这里有个文档里特别标注的坑:如果 FTP 不能显示文件列表也不能创建文件,大概率是 SELinux 没关干净。检查/etc/selinux/config,确认SELINUX=disabled,然后重启。另一个坑是 FTP 登录验证密码特别慢,原因是/etc/resolv.conf里的 DNS 在反向解析,把 nameserver 那两行注释掉再重启 vsftpd 就能解决。
telnet 服务端安装telnet-server-0.17-39.el5.x86_64.rpm,改/etc/xinetd.d/telnet里disable为no,然后service xinetd restart。让 root 用户能 telnet 登录,文档给了两种方法,方法 1 改/etc/pam.d/login实测重启后没好用,方法 2 改/etc/securetty加上pts/0到pts/3不需要重启即可生效。直接用方法 2。
3.3 SVN、JDK 和 buildc 框架:环境变量与符号链接的细节
SVN 客户端默认已装,但中文路径会报Can't convert string from 'UTF-8' to native encoding错误。解决办法是在.bashrc里加:
export LC_ALL=zh_CN.GBKJDK 安装的是jdk-6u37-linux-x64.bin,装到/usr/java目录:
mkdir /usr/java cp /home/temp/jdk-6u37-linux-x64.bin /usr/java cd /usr/java ./jdk-6u37-linux-x64.bin rm -f jdk-6u37-linux-x64.bin装完后建符号链接,让系统能找到 java 和 javac:
cd /usr/bin ln -s -f /usr/java/jdk1.6.0_37/jre/bin/java ln -s -f /usr/java/jdk1.6.0_37/bin/javac环境变量在.bashrc里配:
export JAVA_HOME=/usr/java/jdk1.6.0_37/ export JRE_HOME=/usr/java/jdk1.6.0_37/jre export PATH=$PATH:/usr/java/jdk1.6.0_37/bin export CLASSPATH=$CLASSPATH:./:/usr/java/jdk1.6.0_37/lib:/usr/java/jdk1.6.0_37/jre/libbuildc 框架从 SVN 导出后安装:
cd /home/temp svn export http://10.10.125.156/svn0/mpiag/users/wangtzh/kernel_buildc-0.3.2 cd kernel_buildc-0.3.2 python setup.py install cd .. chmod 777 /usr/bin/buildcchmod 777这一步是为了让非 root 用户也能执行 buildc,生产环境里更稳妥的做法是chmod 755加组权限控制,但文档里直接给了 777,说明这套环境对权限管控要求不高。
4. Oracle 10g 安装:内核参数、环境变量与四个典型报错
4.1 解压安装包与配置 oracle 用户的 .bashrc
Oracle 安装包是10201_database_linux_x86_64.cpio.gz,解压方式:
gzip -d 10201_database_linux_x86_64.cpio.gz cpio -idv < 10201_database_linux_x86_64.cpio解压后得到database目录。在跑runInstaller之前,先把 oracle 用户的.bashrc改好。文档里给的配置比较长,核心是这几段:
# Oracle 环境 ORACLE_BASE=/home/oracle; export ORACLE_BASE ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1; export ORACLE_HOME ORACLE_SID=orcl; export ORACLE_SID; ORACLE_TERM=xterm; export ORACLE_TERM # 库路径 LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:$ORACLE_HOME/rdbms/lib export LD_LIBRARY_PATH # Shell 搜索路径 PATH=$PATH:$ORACLE_HOME/bin; export PATH # 字符集设置 export NLS_LANG=AMERICAN_AMERICA.UTF8 export LC_ALL=CNLS_LANG和LC_ALL这两个变量直接决定数据库图形化安装界面能不能正常显示中文,以及后面 sqlplus 里查出来的数据会不会乱码。文档里特别说明,LANG和LANGUAGE用于保证文字非乱码,NLS_LANG=AMERICAN_AMERICA.UTF8和LC_ALL=C是给图形化安装界面用的。如果装完发现 sqlplus 里中文显示成问号,回头检查这两个变量。
4.2 内核参数调整:sysctl.conf 里每个值的实际作用
不调内核参数,Oracle 安装检查会报一堆警告。在/etc/sysctl.conf尾部加:
# For Oracle kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 fs.file-max = 65536 net.ipv4.ip_local_port_range = 1024 65000 net.core.rmem_default = 262144 net.core.rmem_max = 262144 net.core.wmem_default = 262144 net.core.wmem_max = 262144kernel.shmmni是共享内存段最大数量,4096 够用。kernel.sem四个值分别是信号量集合中的信号量数、系统级最大信号量数、每个信号量操作的最大数、系统级最大信号量集合数。fs.file-max是文件句柄上限,65536 对这套环境足够。net.ipv4.ip_local_port_range是本地端口范围,1024 到 65000 覆盖了 Oracle 监听可能用到的端口。rmem和wmem是网络读写缓冲区,调大能改善数据库网络传输性能。
改完执行/sbin/sysctl -p激活。
4.3 安装过程中的四个典型报错与处理
文档里记录了四个安装时遇到的报错,每个都有明确的解决路径。
第一个是操作系统版本检查失败,报Checking operating system version: must be redhat-3, SuSE-9, redhat-4... Failed。两种改法:改/etc/redhat-release内容,把Red Hat Enterprise Linux Server release 5.6 (Tikanga)改成Red Hat Enterprise Linux Server release 4 (Tikanga);或者改database/install/oraparam.ini,在[Certified Versions]的Linux=后面加上redhat-5。推荐第二种,不动系统文件,影响面小。
第二个是libXp.so.6: cannot open shared object file,缺libXp-1.0.0-8.1.el5.i386.rpm,装上就行。
第三个是DISPLAY设置时 Xlib 报No protocol specified。在 root 用户下执行xhost +,然后回到 oracle 用户重新跑./runInstaller。
第四个是数据库字符集选择。文档明确建议用Simplified Chinese ZHS16GBK,不要用ZGS32 GB18030,因为后者导入 sqlplus 语句会有乱码。这个选择直接影响后面数据导入导出的兼容性。
4.4 启动数据库与监听配置
装完数据库后,用 oracle 用户登录,按四步启动:
lsnrctl start sqlplus /nolog SQL> conn /as sysdba SQL> startup监听配置在tnsnames.ora里,文档给了一个示例:
mpiag28 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.126.188)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl) ) )验证监听是否通:
sqlplus /nolog conn A28/A28@mpiag28 select table_name from user_tables;能查出表名就说明监听和数据库都正常。
5. 避坑与排查:五个让部署卡住的真实问题
5.1 现象:mpiag 用户执行 sqlplus 报权限错误
原因:/home/oracle目录权限太严,mpiag 用户读不到 Oracle 的可执行文件。
解决:su - root后执行chmod -R 777 /home/oracle。文档里直接给了 777,生产环境可以改成chmod -R 755再把 mpiag 加到 oracle 组。
5.2 现象:启动数据库报 ORA-27121 unable to determine size of shared memory segment
原因:Oracle 可执行文件没有设置正确的 setuid 位,非 oracle 用户无法访问共享内存。
解决:
su - oracle cd $ORACLE_HOME/bin chmod 6751 oracle执行后ls -l oracle应该看到-rwsr-s--x权限。这个坑的典型特征是:oracle 用户自己连没问题,mpiag 用户一连就报错。
5.3 现象:mpiag 用户不能执行 conn / as sysdba
原因:mpiag 不在 oracle 的 dba 组里。
解决:
su - root usermod -a -G oracle mpiag如果还需要 dba 组权限:
groupadd -g 151 dba usermod -a -G dba oracle usermod -a -G dba mpiag usermod -a -G oracle mpiag然后切到 oracle 用户创建对应账号:
su - oracle sqlplus / as sysdba create user ops$mpiag identified by mpiag;5.4 现象:FTP 登录后看不到文件列表,也不能创建文件
原因:SELinux 没关干净,或者 iptables 没放行被动模式端口。
解决:先确认/etc/selinux/config里SELINUX=disabled,重启。如果还不行,检查 iptables 是否放行了 FTP 被动模式需要的端口范围。文档里只放了 21 端口,被动模式还需要额外端口,临时方案是直接service iptables stop。
5.5 现象:Oracle 补丁安装报 OUI-11108 Packages information not specified
原因:/etc/redhat-release里的版本号不被补丁安装程序识别。
解决:把/etc/redhat-release内容改成Red Hat Enterprise Linux Server release 4。这个坑和 4.3 节第一个报错是同一个根源,改法一样。
6. 补丁安装与验证:一个被忽略但必须走的收尾步骤
Oracle 补丁包p8202632_10205_Linux-x86-64.zip的安装,文档里说得很实在:据说 Java 版 trigger 只装原数据库不好用,需要打补丁,虽然后来 Java 版 trigger 不使用了,但补丁还是要打。现网数据库补丁未做版本要求,但流程不能省。
操作步骤:
# 先关闭数据库 sqlplus / as sysdba SQL> shutdown immediate # 解压补丁包 unzip p8202632_10205_Linux-x86-64.zip cd Disk1 ./runInstaller # 安装完成后执行升级脚本 sqlplus / as sysdba SQL> startup upgrade SQL> @/home/oracle/product/10.2.0/db_1/rdbms/admin/catupgrd.sqlcatupgrd.sql跑完之后,数据库的数据字典就更新到补丁对应的版本了。这一步如果跳过,后面用 Java 版 trigger 或者某些新特性时会遇到莫名其妙的兼容性问题。
验证补丁是否装成功,可以查dba_registry里的组件版本:
select comp_name, version, status from dba_registry;如果status列有INVALID的组件,需要重新跑utlrp.sql编译无效对象。
还有一个容易被忽略的收尾:/etc/security/limits.conf里加 oracle 用户的资源限制:
# vi /etc/security/limits.conf oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536同时在/etc/pam.d/login里加:
session required /lib/security/pam_limits.so这两处不加,Oracle 在高负载下可能报ORA-00020: maximum number of processes exceeded或者文件句柄不够的错误。
从那以后我每次部署这套环境,都会在装完 Oracle 后强制走一遍dba_registry查询和limits.conf检查,这两个地方不出问题,后面跑自动化测试基本不会翻车。希望帮到你。
本文还有配套的精品资源,点击获取