ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Linux系统Oracle 11g R2数据库完整安装与配置实战指南

Linux系统Oracle 11g R2数据库完整安装与配置实战指南 1. 项目概述为什么要在Linux上安装Oracle 11g如果你是一名后端开发、DBA或者系统运维迟早会碰到一个任务在Linux服务器上部署Oracle数据库。Oracle 11g R2虽然已经不是最新的版本但在很多传统企业、金融系统和遗留项目中它依然是稳定运行的“老将”。选择在Linux上部署通常是看中了其出色的稳定性、优异的性能表现以及对服务器硬件资源的精细控制能力这远比在Windows Server上跑Oracle要来得“硬核”和高效。我经历过多次从零开始的Oracle 11g安装从CentOS、Red Hat到Oracle Linux踩过的坑不计其数。网上教程很多但要么步骤缺失要么权限设置语焉不详导致安装过程像开盲盒。这篇内容我会把一个完整的、可复现的Oracle 11g R211.2.0.4在Linux以CentOS 7为例上的安装过程拆解清楚。目标很明确让你跟着步骤走一次成功避免那些“经典”的报错比如ins_emagent.mk错误、图形界面弹不出、监听器起不来等等。无论你是为了搭建测试环境还是为生产系统做准备这篇详尽的指南都能作为你的操作手册。2. 安装前的核心准备系统与资源规划安装Oracle不是简单的yum install它更像是一场精密的“外科手术”术前准备决定了手术的成败。很多人安装失败八成问题都出在准备工作没做到位。2.1 操作系统与硬件资源核查首先确认你的Linux发行版和内核版本。Oracle 11g R2官方认证的主流Linux包括Red Hat Enterprise Linux (RHEL)、Oracle Linux (OL)、SUSE Linux Enterprise Server (SLES)。社区版的CentOS与RHEL完全兼容是我们最常用的选择。以CentOS 7.x为例通过cat /etc/redhat-release和uname -r来确认。硬件资源是硬门槛达不到标准安装程序会直接拒绝。以下是官方及实践推荐的最小要求内存至少1 GB RAM。但这是“能装”的标准对于任何有意义的用途建议物理内存不低于2 GB。交换分区Swap的大小有明确公式当物理内存介于1 GB到2 GB之间时Swap应为物理内存的1.5倍介于2 GB到16 GB时与物理内存等大超过16 GB时为16 GB。例如你有4 GB内存Swap分区应不小于4 GB。用free -g和swapon -s检查。磁盘空间这是最容易出问题的地方。/tmp目录至少需要1 GB空闲空间。Oracle软件本身安装需要大约3.5 GB到5 GB。更重要的是数据库文件所在的位置这取决于你未来数据的规模。对于一个基本的、空的数据库建议预留至少10 GB以上的空间。使用df -h命令仔细检查各挂载点的可用空间。网络确保主机名解析正常。一个常见的坑是/etc/hosts文件配置不正确导致图形化安装界面卡住或监听器无法注册。你需要配置一个静态IP并在/etc/hosts文件中将IP地址、完整主机名FQDN和短主机名都映射好。例如192.168.1.100 oracle-server.example.com oracle-server2.2 软件依赖包安装一个都不能少Oracle依赖大量的系统软件包分为binutils、compat-lib、gcc、glibc、libaio、libXext等数十个。手动一个个安装极其繁琐且易遗漏。最稳妥的方法是使用YUM仓库来分组安装。首先配置好可用的YUM源如基础的Base源和EPEL源。然后安装最关键的两组包# 安装Oracle预安装包Oracle官方为RHEL/CentOS提供的便利包它会检查并安装大部分依赖 yum install -y oracle-rdbms-server-11gR2-preinstall # 这个包会顺带创建一个oracle用户和oinstall, dba等组极大简化了准备工作。 # 但preinstall包可能不包含图形化安装所需的全部X11库手动补充一些常见缺失的 yum install -y xorg-x11-utils xorg-x11-xauth xorg-x11-server-utils libXrender libXrandr libXtst安装完成后oracle-rdbms-server-11gR2-preinstall这个包已经帮你完成了90%的系统配置工作包括内核参数调整、用户创建、资源限制设置等。这是官方推荐的最佳实践能避免无数坑。2.3 创建Oracle用户与环境变量配置如果没使用预安装包你需要手动创建用户和组groupadd oinstall groupadd dba groupadd oper useradd -g oinstall -G dba,oper oracle echo “your_password” | passwd --stdin oracle接下来是环境变量配置这是Oracle运行的灵魂。以oracle用户身份编辑其家目录下的~/.bash_profile文件在末尾添加以下核心变量export ORACLE_BASE/u01/app/oracle # Oracle产品的顶级目录 export ORACLE_HOME$ORACLE_BASE/product/11.2.0/dbhome_1 # 具体数据库软件的安装路径 export ORACLE_SIDorcl # 你将要创建的数据库实例名可自定义 export PATH$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH$ORACLE_HOME/lib:/lib:/usr/lib export NLS_LANGAMERICAN_AMERICA.AL32UTF8 # 设置字符集避免中文乱码注意ORACLE_BASE和ORACLE_HOME所指向的目录其所有者必须是oracle:oinstall并且oracle用户需要有读写执行权限。通常我们会创建/u01这样的独立分区或目录来存放与操作系统分离便于管理和备份。务必使用mkdir -p创建目录并用chown -R oracle:oinstall /u01更改所有权。3. 安装介质准备与图形化安装启动Oracle 11g的安装介质需要从Oracle官网下载通常有两个压缩文件linux.x64_11gR2_database_1of2.zip和linux.x64_11gR2_database_2of2.zip。你需要一个OTN账户免费注册才能下载。3.1 解压与准备安装文件将下载的zip文件上传到Linux服务器的某个目录例如/opt/software。务必使用oracle用户来操作后续步骤切换用户su - oracle。cd /opt/software unzip linux.x64_11gR2_database_1of2.zip unzip linux.x64_11gR2_database_2of2.zip解压后会生成一个database目录这就是安装源。3.2 解决图形化界面GUI安装的关键问题在无图形界面的服务器上我们需要通过X11转发X11 Forwarding来在本地电脑上显示安装界面。这是整个安装过程中最容易卡住新手的环节。在Windows客户端你需要一个支持X11转发的SSH工具比如Xshell配合Xmanager或者MobaXterm内置X Server。以MobaXterm为例直接使用其SSH会话它就自动处理了X11转发。在Linux/Mac客户端确保X11转发功能开启SSH连接时加上-X或-Y参数ssh -Y oracleyour_server_ip。在服务器端以oracle用户登录后执行xclock命令测试。如果能在你本地电脑上弹出一个时钟窗口说明X11转发成功。如果失败请检查SSH服务端配置/etc/ssh/sshd_config中X11Forwarding是否设为yes。服务器上是否安装了xorg-x11-xauth包。客户端的防火墙是否放行了X11转发的相关连接。3.3 启动安装程序与响应文件进入解压后的database目录运行./runInstaller。如果一切正常Oracle Universal Installer (OUI)的图形界面应该会在你的本地电脑上弹出。实操心得如果./runInstaller提示DISPLAY环境变量未设置请执行export DISPLAYyour_client_ip:0.0例如export DISPLAY192.168.1.50:0.0。如果提示“无法使用命令/usr/bin/xdpyinfo自动检查显示器颜色”可以尝试在runInstaller命令后加上-ignoreSysPrereqs参数来忽略某些系统先决条件检查但这只是绕过检查前提是你确认系统配置已达标。安装界面启动后我强烈建议取消“我希望通过My Oracle Support接收安全更新”的勾选否则它会要求你填写CSI号码并可能因为网络问题导致安装界面卡住。4. 安装步骤详解与关键配置选择图形化安装界面主要分为几个关键阶段每一步的选择都影响深远。4.1 安装选项与安装类型首先选择“仅安装数据库软件”。为什么不一键安装数据库因为将软件安装和数据库创建分开是更清晰、更可控的做法。你可以在软件安装成功后从容地使用DBCADatabase Configuration Assistant来创建符合你具体需求的数据库包括字符集、存储结构等关键参数避免使用OUI内置的模板可能带来的不灵活性。接下来在“安装类型”中选择“单实例数据库安装”。对于高可用环境如RAC那是另一个复杂的主题。4.2 典型安装配置这是核心配置页面Oracle基目录会自动读取你环境变量中设置的$ORACLE_BASE例如/u01/app/oracle。确认无误。软件位置会自动拼接为$ORACLE_HOME例如/u01/app/oracle/product/11.2.0/dbhome_1。确认无误。数据库文件位置这是未来数据库文件数据文件、控制文件、重做日志的存放目录。建议设置为$ORACLE_BASE/oradata例如/u01/app/oracle/oradata。务必确保此目录有足够空间且权限正确oracle:oinstall。数据库类型选择“企业版”以获得完整功能。全局数据库名和SID例如可以都设置为orcl。SID就是你的环境变量ORACLE_SID。字符集这是重中之重一旦创建后极难修改。除非有明确的遗留系统要求否则请务必选择“Unicode标准”即AL32UTF8。这能完美支持全球所有语言字符包括中文避免未来出现乱码的噩梦。管理口令为重要的管理账户如SYS, SYSTEM, DBSNMP等设置口令。你可以选择“对所有账户使用相同的口令”以简化。请设置一个强密码并牢记。4.3 先决条件检查与处理OUI会进行一轮全面的系统检查。如果前期准备充分这里应该全是绿色的“成功”或“警告”。需要特别关注的是“状态”为“失败”的项。一个经典的“失败”项是关于pdksh包的。Oracle 11g文档要求pdksh但RHEL/CentOS 7默认提供的是ksh。实际上ksh已经兼容。你可以直接编辑$ORACLE_HOME/install/oraparam.ini文件找到[Certified Versions]部分将Linuxredhat-3,SuSE-9,redhat-4,UnitedLinux-1.0,asianux-1,asianux-2这一行添加redhat-7或直接改为Linuxredhat-3,SuSE-9,redhat-4,UnitedLinux-1.0,asianux-1,asianux-2,redhat-5,redhat-6,redhat-7。然后回到安装界面点击“重新检查”这个错误就会消失。另一个常见问题是“物理内存”或“交换空间”不足的警告。如果只是轻微不足例如Swap差几百MB可以临时增加一个交换文件来应对检查sudo dd if/dev/zero of/swapfile bs1M count1024 # 创建1GB文件 sudo mkswap /swapfile sudo swapon /swapfile安装完成后可以将其删除sudo swapoff /swapfile sudo rm /swapfile。4.4 安装执行与root脚本通过检查后点击“安装”OUI开始复制文件、链接库、编译程序。这个过程可能需要20分钟到1小时取决于服务器性能。安装进度达到100%后会弹出一个至关重要的提示窗口标题是“执行配置脚本”。它会给出两个需要以root身份运行的脚本路径例如/u01/app/oraInventory/orainstRoot.sh/u01/app/oracle/product/11.2.0/dbhome_1/root.sh不要关闭这个窗口新开一个终端用root用户登录依次执行这两个脚本。orainstRoot.sh主要作用是创建/etc/oraInst.loc文件记录Oracle清单目录的位置并设置清单目录的权限。root.sh这是核心脚本它会执行一系列特权操作比如创建/etc/oratab文件数据库实例注册表为ORACLE_HOME下的某些可执行文件设置setuid位如oracle二进制文件以便oracle用户能以更高权限执行某些操作如启动监听器需要绑定1024以下端口。root.sh脚本执行过程中会输出大量信息最后看到“Finished product-specific root actions.”即表示成功。执行完毕后回到OUI的提示窗口点击“确定”。5. 使用DBCA创建数据库软件安装成功后OUI会退出。现在我们有了一个空的Oracle软件家目录$ORACLE_HOME但还没有数据库实例。接下来使用DBCA来创建。5.1 启动DBCA并选择创建数据库确保环境变量已正确加载source ~/.bash_profile然后在终端X11转发已就绪中输入dbca启动Database Configuration Assistant。第一步选择“创建数据库”。第二步选择“一般用途或事务处理”。这是最通用的模板。第三步输入“全局数据库名”和“SID”与之前安装时设置的一致如orcl。第四步管理选项。取消“配置Enterprise Manager”的勾选。Oracle 11g的EM Grid Control配置复杂且占用资源对于学习和测试环境我们可以用更轻量的工具如SQL Developer来管理。第五步数据库身份证明。为SYS和SYSTEM用户设置口令可以与之前相同。第六步存储类型。选择“文件系统”并指定“数据库文件位置”为之前规划的$ORACLE_BASE/oradata。第七步恢复配置。如果非生产环境可以选择“不启用自动备份”。第八步数据库内容。保持默认或根据需要选择是否安装示例方案如HR人力资源示例。第九步初始化参数。这是关键步骤内存选择“典型”分配适当比例的内存如40%的物理内存。生产环境需“定制”并精细调整SGA和PGA。字符集再次确认是“AL32UTF8”。连接模式选择“专用服务器模式”。第十步存储位置。检查数据文件、控制文件、重做日志文件的位置和大小可以保持默认。第十一步创建选项。勾选“创建数据库”和“生成数据库创建脚本”可用于日后参考。点击“完成”。DBCA会展示一个摘要确认无误后点击“确定”开始创建数据库。这个过程会持续较长时间它会创建数据文件、系统表空间、用户表空间并编译大量的数据字典视图和PL/SQL包。耐心等待直至出现“数据库创建完成”的提示。5.2 验证数据库状态数据库创建完成后进行基本验证# 切换到oracle用户并设置正确的环境ORACLE_SID su - oracle export ORACLE_SIDorcl # 使用SQL*Plus连接 sqlplus / as sysdba在SQL提示符下执行SELECT name, open_mode, database_role FROM v$database; SELECT instance_name, status, host_name FROM v$instance;应该能看到数据库名为ORCL状态为OPEN实例状态为OPEN。执行exit退出SQL*Plus。6. 配置监听器与网络服务数据库实例运行起来了但外部客户端还无法连接。我们需要配置监听器Listener它是客户端和数据库实例之间的“接线员”。6.1 启动与检查监听器Oracle安装后默认会有一个监听器配置文件$ORACLE_HOME/network/admin/listener.ora。通常对于单实例默认配置我们可以直接启动它。# 启动监听器 lsnrctl start # 查看监听器状态 lsnrctl statusstatus命令会显示监听器正在监听的地址通常是(DESCRIPTION(ADDRESS(PROTOCOLtcp)(HOSTyour_hostname)(PORT1521)))以及已注册的服务。刚启动时数据库实例可能还未自动注册服务列表中可能是空的。6.2 配置TNSNAMES.ORA并测试连接为了让客户端包括本机的SQL*Plus能方便地连接我们需要配置一个本地网络服务名。编辑$ORACLE_HOME/network/admin/tnsnames.ora文件如果不存在则创建添加如下内容ORCL (DESCRIPTION (ADDRESS (PROTOCOL TCP)(HOST localhost)(PORT 1521)) (CONNECT_DATA (SERVER DEDICATED) (SERVICE_NAME orcl) # 这里使用全局数据库名即SERVICE_NAME ) )保存后测试连接tnsping orcl如果显示“OK (XX msec)”说明网络配置正确。然后使用服务名连接数据库sqlplus system/your_passwordorcl能成功登录说明从软件安装、数据库创建到网络配置的整个链路已经全部打通。6.3 设置开机自启动可选但重要对于服务器环境我们需要确保Oracle实例和监听器在系统重启后能自动启动。常见的方法是创建系统服务脚本。创建数据库启动/关闭脚本以root身份 编辑/etc/init.d/oracle内容大致如下需要根据实际环境修改ORACLE_HOME,ORACLE_SID,ORACLE_OWNER#!/bin/bash # chkconfig: 345 99 10 export ORACLE_HOME/u01/app/oracle/product/11.2.0/dbhome_1 export ORACLE_SIDorcl export PATH$ORACLE_HOME/bin:$PATH case “$1” in ‘start’) su - $ORACLE_OWNER -c “$ORACLE_HOME/bin/dbstart $ORACLE_HOME” ;; ‘stop’) su - $ORACLE_OWNER -c “$ORACLE_HOME/bin/dbshut $ORACLE_HOME” ;; esac赋予执行权限chmod x /etc/init.d/oracle。创建监听器启动/关闭脚本 通常dbstart和dbshut脚本会连带启动/停止监听器取决于$ORACLE_HOME/bin/dbstart中ORACLE_HOME_LISTNER的设置。更稳妥的方法是单独配置。可以编辑/etc/init.d/oracle在start和stop部分分别加上lsnrctl start和lsnrctl stop。使用chkconfig添加服务chkconfig --add oracle chkconfig oracle on这样当服务器运行在3、4、5级别时Oracle服务会自动启动。7. 安装后常见问题与深度排查即使按照步骤操作也可能遇到问题。这里记录几个最经典的“坑”及其解决方案。7.1 图形界面OUI/DBCA无法启动症状执行./runInstaller或dbca后无反应或报错“无法打开显示器”。排查echo $DISPLAY确认变量已设置应为your_client_ip:0.0或:0.0。在服务器端用oracle用户执行xclock测试。如果失败检查客户端X Server是否运行服务器SSH配置X11Forwarding yes以及防火墙是否允许X11连接端口6000。尝试使用xhost 命令在客户端执行允许任何主机连接X Server仅限测试环境有安全风险。备选方案如果X11转发实在搞不定可以使用静默安装模式。这需要你先在一个有图形界面的环境中运行安装程序生成一个响应文件response file然后修改该文件最后在无图形界面的服务器上通过命令行./runInstaller -silent -responseFile /path/to/response.rsp完成安装。这是生产环境的标准做法。7.2 INS-20802错误与内核参数调整症状在OUI先决条件检查时提示“物理内存不足”或“交换空间不足”。解决这不是警告是硬性失败。必须增加物理内存或交换空间。增加Swap的方法如前文所述使用dd和mkswap。修改内核参数后需要执行sysctl -p使其生效或者直接重启服务器。7.3 监听器启动失败或客户端连接超时症状lsnrctl start失败或tnsping通但sqlplus连接超时。排查检查监听器状态lsnrctl status。确认它确实在运行并监听在正确的IP和端口1521。检查防火墙这是最常见的原因。确保服务器防火墙放行了1521端口。# CentOS 7使用firewalld sudo firewall-cmd --permanent --add-port1521/tcp sudo firewall-cmd --reload # 或者临时关闭防火墙测试仅用于排查 sudo systemctl stop firewalld检查数据库实例注册在SQL*Plus中执行ALTER SYSTEM REGISTER;手动强制实例向监听器注册。然后再次查看lsnrctl status看服务列表里是否出现了你的SID或SERVICE_NAME。检查listener.ora和tnsnames.ora确保两个文件中的HOST名一致且都能正确解析建议直接使用IP地址以避免主机名解析问题。检查是否有语法错误如括号不匹配。7.4 ORA-01034: ORACLE not available 与 ORA-27101症状sqlplus / as sysdba可以连接这是操作系统认证不经过监听器但sqlplus sys/passwordorcl as sysdba失败报ORA-01034和ORA-27101。排查首先确认实例是否真的启动了。用sqlplus / as sysdba连接后执行SELECT status FROM v$instance;。如果是STARTED而不是OPEN可能需要执行ALTER DATABASE OPEN;。如果实例没启动检查ORACLE_SID环境变量是否设置正确。echo $ORACLE_SID。检查$ORACLE_HOME/dbs目录下是否存在与ORACLE_SID对应的参数文件initorcl.ora或spfileorcl.ora和密码文件pwdorcl.ora。ORA-27101通常与共享内存有关。检查/dev/shm的挂载和大小以及内核参数kernel.shmall,kernel.shmmax的设置是否足够大。整个安装过程本质上是对Linux系统管理、Oracle体系结构和网络配置的一次综合实践。耐心和细致是成功的关键。每次操作前理解命令的目的每次报错后学会看日志$ORACLE_HOME/cfgtoollogs下的安装日志、$ORACLE_BASE/diag/rdbms/...下的数据库告警日志alert_orcl.log、监听器日志$ORACLE_HOME/network/log/listener.log。这些日志文件是排查问题的金钥匙。
返回列表