Oracle 11g R2 单实例数据库软件安装实战:从环境准备到疑难排错
1. 环境准备打好地基才能盖高楼安装Oracle数据库就像盖房子地基没打好后面全是坑。我见过太多人一上来就急着点安装向导结果被各种报错打得措手不及。咱们先把准备工作做扎实后面就能一路畅通。操作系统兼容性检查是第一步。Oracle 11g R2对Linux版本有明确要求红帽6/7、CentOS 6/7都是经过认证的。我遇到过有人在Ubuntu上硬装结果被依赖问题折磨得死去活来。建议用以下命令确认系统版本cat /etc/redhat-release # 红帽系系统 lsb_release -a # 其他Linux发行版内存和交换空间必须达标。官方要求至少1GB物理内存实际建议2G以上交换空间有个简单公式内存小于2G时交换空间内存2倍内存2G-8G时内存1.5倍内存大于8G时内存1倍。用free -m命令就能查看free -m磁盘空间要预留充足。光软件安装就需要至少4.5GB再加上数据文件、日志文件等建议准备20GB以上空间。我习惯用df -h查看挂载点最好单独给/oracle挂载点df -h /opt创建用户和组这个步骤很多人会忽略。Oracle不允许用root直接安装需要专门的oracle用户。按这个顺序操作groupadd oinstall groupadd dba useradd -g oinstall -G dba oracle passwd oracle内核参数调整直接影响数据库性能。编辑/etc/sysctl.conf加入这些关键参数完成后执行sysctl -p生效fs.aio-max-nr 1048576 fs.file-max 6815744 kernel.shmall 2097152 kernel.shmmax 536870912 kernel.shmmni 4096 sem 250 32000 100 1282. 安装介质获取与校验Oracle官网的下载页面像迷宫我第一次找安装包花了半小时。现在分享个快捷路径登录Oracle官网后在菜单选择Downloads → Database → Oracle Database 11g Release 2。下载的两个主要文件通常是linux.x64_11gR2_database_1of2.ziplinux.x64_11gR2_database_2of2.zip校验文件完整性太重要了我有次安装到一半报错最后发现是下载时网络波动导致文件损坏。用md5sum对比官网提供的校验值md5sum linux.x64_11gR2_database_1of2.zip解压时要两个包一起解压到同一目录。常见错误是只解压第一个包结果缺少文件unzip linux.x64_11gR2_database_1of2.zip -d /opt/oracle unzip linux.x64_11gR2_database_2of2.zip -d /opt/oracle解压完成后会生成database目录里面的runInstaller就是安装入口。但先别急着运行还要设置环境变量export ORACLE_BASE/opt/oracle export ORACLE_HOME$ORACLE_BASE/product/11.2.0/dbhome_1 export PATH$ORACLE_HOME/bin:$PATH建议把这些写入oracle用户的.bash_profile避免每次登录都要重新设置。3. 图形化安装步步为营运行./runInstaller后第一个界面就有坑——那个默认勾选的接收安全更新。我建议取消勾选否则要配置Oracle支持账号对新手完全是负担。安装选项选择很关键。看到这三个选项时创建和配置数据库默认选项仅安装数据库软件升级现有数据库选第二个仅安装数据库软件。为什么因为这样能把软件安装和建库分开操作更可控。我见过新手选默认选项结果建库时参数配错又要重装。单实例vs集群安装这个界面要特别注意。除非你要装RAC否则一定选Single instance database installation。有次我手快点了默认的RAC选项后面配置网络时直接懵了。语言选择建议保持英文。添加中文支持会增大安装包体积而且可能遇到字符集问题。数据库建好后随时可以添加语言支持。企业版vs标准版的选择要看实际需求。企业版功能全但贵标准版性价比高但缺少高级功能。如果是学习环境选标准版就够了。安装路径配置时ORACLE_BASE建议用/opt/oracleORACLE_HOME用$ORACLE_BASE/product/11.2.0/dbhome_1。注意路径不要有空格或特殊字符否则后面各种脚本会报错。4. 依赖问题排错实战依赖检查环节绝对是新手噩梦。Oracle的检查非常严格经常报一些其实可以忽略的警告。我总结了几种典型情况缺失依赖包是最常见的。报错会明确告诉你缺什么包比如libaio-develkshcompat-libstdc用yum安装即可但要注意权限问题。建议先用root安装这些基础包yum install -y libaio-devel ksh compat-libstdc elfutils-libelf-devel版本过高警告很烦人。比如系统装了libstdc-4.8但Oracle要求4.3。这时可以勾选右上角的Ignore All只要不是错误(error)就可以继续。pdksh问题是个历史遗留坑。Oracle现在实际用的是ksh但检查脚本还在找pdksh。解决方法很简单yum install -y ksh ln -s /bin/ksh /bin/pdksh # 建立软链接骗过检查ins_emagent.mk报错这个坑我踩过三次错误信息长这样Error in invoking target agent nmhs of makefile /opt/.../ins_emagent.mk解决方法是用vim编辑这个文件找到约176行修改为$(MK_EMAGENT_NMECTL) -lnnz11改完后点Retry就能继续安装了。这个问题的本质是Oracle的makefile没适配新版Linux的库链接方式。5. 收尾工作与验证安装进度条走完后别急着关窗口最后要用root执行两个脚本/opt/oracle/oraInventory/orainstRoot.sh /opt/oracle/product/11.2.0/dbhome_1/root.sh第一个脚本设置inventory目录权限第二个脚本注册环境变量。执行root.sh时会问本地bin目录路径直接回车用默认的/usr/local/bin就行。验证安装很简单用oracle用户执行sqlplus /nolog SQL connect / as sysdba如果能看到Connected to an idle instance就说明软件安装成功了。这时候数据库还没创建可以用DBCA工具继续建库。环境变量固化容易被忽略。在oracle用户的.bash_profile中加入这些行export ORACLE_BASE/opt/oracle export ORACLE_HOME$ORACLE_BASE/product/11.2.0/dbhome_1 export PATH$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH$ORACLE_HOME/lib:/usr/lib最后提醒一点安装日志在$ORACLE_HOME/cfgtoollogs目录下遇到问题先查日志。我帮人排查问题时发现90%的报错都能在日志里找到明确原因。