简介这份文档面向需要在虚拟机中搭建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 的配置里反复出现SELINUXdisabled和iptables stop说明这套环境对安全策略的容忍度极低。安装完成后第一件事把终端快捷方式放到桌面。这个操作看似无关紧要但后面配置网络、创建用户、装 JDK 全要开终端有个桌面图标能省不少事。2.2 静态 IP 配置ifcfg-eth0 里每个参数的实际含义网络配置是这套环境能不能跑通的第一道坎。文档里给了两套方案一套是静态 IP 直连一套是 NAT 链接方式。先看静态 IP 的配置文件/etc/sysconfig/network-scripts/ifcfg-eth0# 网络配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICEeth0 # 接口名称必须和实际网卡一致 BOOTPROTOstatic # 静态配置DHCP 则写 dhcp BROADCAST10.10.126.255 # 广播地址此行可省略 HWADDRB2:23:38:50:3E:6B # 网卡物理地址虚拟机里要核对 ONBOOTyes # 开机自动加载不写这行重启后网络不启动 IPADDR10.10.126.235 # IP 地址也可用 10.10.126.244 NETMASK255.255.255.0 # 子网掩码 GATEWAY10.10.126.1 # 默认网关 TYPEEthernet # 网络类型 USERCTLyes # 允许普通用户控制网卡 IPV6INITno # 关闭 IPv6避免解析干扰 PEERDNSyes # 允许 DHCP 覆盖 resolv.conf这里有几个参数值得展开说。BOOTPROTOstatic和none在效果上等价但文档里 NAT 方案用的是none说明两种写法都认。HWADDR在虚拟机克隆场景下必须改否则会和新虚拟机的网卡地址冲突导致网络时通时断。ONBOOTyes是最容易被漏掉的一行漏了之后每次重启都要手动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 方式的配置略有不同BOOTPROTOnoneIPADDR换成192.168.50.132GATEWAY换成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# 将 SELINUXenforcing 改为 SELINUXdisabled 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 没开需要改 iptablesvi /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_enableYES改成NO。改完重启 vsftpd。这里有个文档里特别标注的坑如果 FTP 不能显示文件列表也不能创建文件大概率是 SELinux 没关干净。检查/etc/selinux/config确认SELINUXdisabled然后重启。另一个坑是 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 客户端默认已装但中文路径会报Cant convert string from UTF-8 to native encoding错误。解决办法是在.bashrc里加export LC_ALLzh_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 和 javaccd /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 用户的 .bashrcOracle 安装包是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_SIDorcl; export ORACLE_SID; ORACLE_TERMxterm; 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_LANGAMERICAN_AMERICA.UTF8 export LC_ALLCNLS_LANG和LC_ALL这两个变量直接决定数据库图形化安装界面能不能正常显示中文以及后面 sqlplus 里查出来的数据会不会乱码。文档里特别说明LANG和LANGUAGE用于保证文字非乱码NLS_LANGAMERICAN_AMERICA.UTF8和LC_ALLC是给图形化安装界面用的。如果装完发现 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/A28mpiag28 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里SELINUXdisabled重启。如果还不行检查 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检查这两个地方不出问题后面跑自动化测试基本不会翻车。希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?