新闻详情

新闻详情

首页 / 资讯中心 / 详情

Linux下Oracle 11g R2安装详解:从系统准备到避坑指南

发布时间:2026/10/2 5:02:27来源:尧图网络
Linux下Oracle 11g R2安装详解:从系统准备到避坑指南
简介这是一份面向Linux系统管理员与Oracle初学者的安装图解指南聚焦11g Release 2单机环境部署全过程。内容从前期系统包、用户组与ORACLE_HOME等环境变量配置讲起逐步覆盖runInstaller启动、安装类型选择、企业版组件配置、Inventory目录与OS Group设定以及常见错误处理思路安装收尾阶段还包含netca监听配置与dbca建库要点并提醒ORACLE_SID一致性及UTF-8字符集选择帮助读者避开典型踩坑点。资源仅含1个doc文档压缩包大小1.73MB以图文步骤方式呈现适合边看边操作。已有131人学习下载对于希望系统梳理Oracle 11gR2在Linux上安装流程、提升数据库环境搭建效率的运维人员是一份简明实用的参考资料。1. Linux下安装Oracle 11g R2为什么这份“图解”到今天还有人翻新装一台CentOS服务器准备把Oracle 11g R2部署上去结果点开runInstaller十秒后屏幕弹出一句“Checking operating system version… must be redhat-3, redhat-4”直接退出又或者安装器一路走完建库时DBCA卡在3%最后强制关掉重来。这种翻车场景在Oracle 11g R2的安装现场反复出现。标题里的“详细图解”之所以值得看不是截图有多细而是Linux下从系统准备、依赖修补、内核参数到root脚本这一整条链路缺一环就得重头再跑一遍。这篇笔记把Linux下安装Oracle 11g R2拆成五段先过系统检查再走安装入口最后验证启动链路顺带把最常见的几个坑按现象、原因、解决写到明处。适合正准备在虚拟机或生产服务器上装Oracle的DBA、运维和开发照着能跑通。2. 安装前的4项硬指标先过掉那几关最容易翻车的系统准备很多人拿到Oracle 11g R2安装包就直接解压执行runInstaller觉得安装器会替你做检查。事实上11g的安装器确实会做预检但它给出来的报错信息极简而且经常在“检查系统版本”这一步就拦住了后面的依赖问题要等安装到一半才爆出来。我一般会把系统准备放在解压安装包之前这步做扎实后面所有交互步骤都能顺过去。下面四项是每次装11g R2之前必过的关硬件底线、依赖包、内核参数、用户和目录规划。2.1 先用三条Linux常用命令把硬件底线摸清Oracle 11g R2装在Linux上内存和交换空间的硬性要求是绕不过去的。安装器只会告诉你“insufficient memory”至于差多少、补哪里它不会给提示。所以第一步不是解压而是先看清楚这台机器到底够不够格。用三条Linux常用命令就能摸清底线# 查看物理内存总量重点看第二行的数值 grep MemTotal /proc/meminfo # 查看交换分区和大小 swapon --show # 查看 /dev/shm 的大小11g 的 AMM 特性依赖它 df -h /dev/shm这三条命令分别对应三个硬指标。MemTotal低于1GB安装器会直接拒绝继续2GB以上才适合跑11g的默认配置。swap方面1GB到2GB内存的机器swap至少配到内存的0.5到1倍低于这个值在建库阶段会出现内存分配的诡异报错。/dev/shm这一项最容易被人忽略——Oracle 11g的自动内存管理AMM往/dev/shm里放共享内存段如果它比SGA_TARGET小启动实例时会报ORA-00845。检查完这三项再根据结果决定先补什么。如果发现swap不够常见做法是直接加一个swap文件不用动分区表。用下面这一组命令就能临时撑起来# 创建一个 4G 的 swapfile fallocate -l 4G /swapfile chmod 600 /swapfile mkswap /swapfile swapon /swapfile # 确认 swap 已经生效 swapon --show注意swapfile要放在空间充足的分区上不要放在/usr或/home底下避免根分区被占满。想让它开机自动挂载就把/swapfile swap swap defaults 0 0加进/etc/fstab否则重启后swap又变回原样Oracle实例会在某个高负载瞬间被OOM杀掉。这些检查做完再进入下一步就不容易因为资源问题中途翻车。2.2 依赖包装到“不报错为止”一条yum命令兜底Oracle 11g R2的安装器在预检阶段会读系统里的依赖库清单缺哪个直接中断。它报错的方式很直接就一行“Some of the required OS components are missing”更细的提示要去日志里翻。为了避免反复提交安装再被弹回来我习惯上先装完整组依赖。在CentOS 6和7上下面这一条yum命令可以把11g最常用的依赖包一次性装齐yum install -y binutils compat-libcap1 compat-libstdc-33 \ elfutils-libelf-devel gcc gcc-c glibc glibc-devel ksh \ libaio libaio-devel libgcc libstdc libstdc-devel \ libXext libXtst libX11 libXau libXi make sysstat \ unixODBC unixODBC-devel这里面有几个包值得单独说。libaio和libaio-devel是Oracle异步I/O依赖的库缺了它数据库启动时大概率报ORA-27090unixODBC和unixODBC-devel是给透明网关用的缺了不影响安装器预检但以后要接异构数据库时会发现驱动少一层。ksh在CentOS 7上默认没有安装Oracle的脚本里大量用到ksh语法缺了它在跑root.sh时会看到奇怪的语法报错。如果你用的是麒麟、统信这类国产Linux发行版底层的依赖库体系是兼容的但包名可能略有差异先把系统的repo源配好再用包管理器搜一下缺哪个名字把等价包装上即可。内核参数和系统限制这一套在国产Linux上同样适用后面第2.3节的内容可以直接套用。装完这一批包之后用rpm -q加包名逐个验证确保全部存在再往下走。不要只看yum执行成功的提示有些包在装的过程中会被系统版本判断跳过实际是没装进去的。验证一步到位后面少折腾一轮。2.3 内核参数与用户、目录规划装之前就把地基钉死Oracle 11g R2在安装过程中会尝试自己修改内核参数但它写进去的值是通用值生产环境下往往不够用。举例来说kernel.shmmax如果按默认的32MB走数据库只要SGA配置超过512MB实例起来就报ORA-27102。常见做法是在动手前手工把sysctl.conf里的关键参数写好让安装器检测时直接通过。下面是一组在2U服务器上常用的起点配置cat /etc/sysctl.conf EOF fs.aio-max-nr1048576 fs.file-max6815744 kernel.shmall1073741824 kernel.shmmax34359738368 kernel.shmmni4096 kernel.sem250 32000 100 128 net.ipv4.ip_local_port_range9000 65500 net.core.rmem_default262144 net.core.rmem_max4194304 net.core.wmem_default262144 net.core.wmem_max1048576 EOF sysctl -p参数含义逐个说清楚kernel.shmmax是单个共享内存段的最大字节数至少要大于SGA的目标值这里配了32GB足够8GB以内的SGA使用kernel.shmall表示共享内存页总数保持足够大就不会在实例启动时报“unable to attach to shared memory”kernel.sem的四个数字分别表示信号量组最大数量、系统最大信号量数、每个信号量操作的最大次数、信号量组最大个数Oracle官方给出的安全起点就是250 32000 100 128。net.ipv4.ip_local_port_range设成9000到65500是为了避免低端口段被占满导致监听连不上。内核参数设好之后创建用户和目录是下一步。Oracle安装不能直接用root用户跑安装器会强制检查oinstall和dba组是否存在。以下是常见的创建方式groupadd oinstall groupadd dba useradd -m -g oinstall -G dba oracle echo oracle | passwd --stdin oracle mkdir -p /u01/app/oracle chown -R oracle:oinstall /u01 chmod -R 775 /u01目录规划放在这个位置是有原因的。很多初学者图省事把Oracle装进/home/oracle等到数据文件涨到几十GB才后悔因为/home分区往往不是独立的空间不好控制。生产上把/u01单独做成一个分区或者至少确认它有足够的剩余空间再让Oracle把软件和数据库文件都放进去后面维护和扩容都省心。同时别忘了给oracle用户设置资源限制打开/etc/security/limits.conf加上下面两行oracle soft nofile 65536 oracle hard nofile 65536 oracle soft nproc 16384 oracle hard nproc 16384不设这两项的话数据库跑到高并发时会出现“too many open files”或者进程数超限的间歇性错误重启大法能顶一小会儿但根子还在资源限制上。到这一步系统侧的地基就算钉死了接下来可以真正进入安装环节。3. 图解安装的两个入口图形界面与静默响应文件标题既然是“详细图解”图形安装是绕不开的入口。但装了这么多年我的体感是生产环境越来越不给你用图形界面的机会纯命令行的服务器比比皆是。所以这章把两条路都写清楚——有桌面环境时怎么把DISPLAY配好走图形纯命令行时怎么用响应文件走静默。两条路最终跑的是同一个安装器只是输入方式不同底层依赖完全一样前面的系统准备在这两条路上都不能省。3.1 图形安装前的DISPLAY与X11配置图形安装最容易被卡住的地方不是安装逻辑而是X11转发。runInstaller本质是一个Java程序它需要有X Server才能把窗口画出来。在本地带桌面的Linux虚拟机里装直接登录桌面后打开终端DISPLAY环境变量通常已经自动设好了问题不大。真正折腾人的是远程SSH过去装DISPLAY没设置或者X11转发没开启runInstaller点了半天没反应最后报一句“cannot open display”看起来像安装器坏了其实是图形管道没通。本地虚拟机的常见做法是直接手动指定DISPLAY再放行本地连接# 本机有桌面时指定当前 X Server export DISPLAY:0.0 # 允许本地进程访问 X Server xhost local:如果是远程服务器SSH时要带上X11转发参数不要在进入服务器之后才去设DISPLAY那样经常来不及# 从跳板机带 X11 转发连接目标服务器 ssh -X oracle服务器IP连上之后再用echo $DISPLAY确认路径是否已经生成。这个值一般是localhost:10.0或10.0X11转发的原理是网络上模拟出一个逻辑显示编号输出到服务端的X Server再传回本地。如果SSH时忘了加-X进去之后手动export DISPLAY:0.0也没用因为服务端没有开启X11转发通道Oracle的Java窗口照样弹不出来。检查时用xdpyinfo之类的工具能确认X Server是不是真的可达装了这个工具的前提下一条命令就看出来。图形检查过了后面runInstaller弹窗口就是水到渠成的事。3.2 用响应文件做静默安装模板改法与参数含义生产环境里图形界面有时候连不上有时候是权限不允许装桌面组件更多时候是用户根本不给你交互操作的机会。Oracle 11g R2安装器支持全程静默靠的就是响应文件。响应文件本质是安装界面上那些选项的答案清单安装器读取后不再弹出交互窗直接按清单执行。常见做法是先解压安装包找到response目录下的db_install.rsp模板复制一份后按实际环境改关键项。下面是一份最小化的响应文件关键内容# db_install.rsp 的关键项按实际路径替换 oracle.install.optionINSTALL_DB_SWONLY UNIX_GROUP_NAMEoinstall INVENTORY_LOCATION/u01/app/oraInventory SELECTED_LANGUAGESen,zh_CN ORACLE_BASE/u01/app/oracle ORACLE_HOME/u01/app/oracle/product/11.2.0/dbhome_1 oracle.install.db.InstallEditionEE oracle.install.db.DBA_GROUPdba oracle.install.db.OPER_GROUPdba参数含义逐项拆开oracle.install.optionINSTALL_DB_SWONLY表示本次只装数据库软件不建库不建监听这是排错友好的拆分策略INVENTORY_LOCATION是产品清单目录记录系统里装了哪些Oracle组件路径名里不要带空格否则后面卸载时会出现奇怪问题ORACLE_BASE是整个Oracle安装的根目录ORACLE_HOME是数据库软件独立版本所在的目录这两个路径决定了后续所有脚本的去向。SELECTED_LANGUAGES里en和zh_CN同时选安装日志会用英文输出方便搜索关键字界面语言则在需要时能切换到中文。启动静默安装的命令很直接# 静默安装数据库软件跳过非致命预检 ./runInstaller -silent -responseFile /tmp/db_install.rsp -ignorePrereqFailure这里有一个度要拿捏-ignorePrereqFailure这个参数是把双刃剑。用上它之后预检里那些非致命的缺失项不再弹出确认框安装会一口气往下走但代价是日志里可能会出现一堆WARNING。第一次装的时候我不建议加这个参数先让安装器完整跑一遍预检把缺失项记下来第二次再装时加了它就能把已知的缺失项变成WARNING而不是中断。跑完后安装器会提示查看日志路径日志位置一般在oraInventory目录下的logs子目录里文件名叫installActions开头的日志里面按时间戳记录了每一步执行的动作和返回码。出现ERROR字样时往上翻几十行看前因不要只看最后一行结论。这套做法能少走很多弯路。3.3 root脚本与netca安装器之外的两道手续静默安装或者图形安装跑到进度条走完安装器会显示一行加粗提示请以root用户执行两个脚本。这一步很多人会漏掉或者执行完一个就关掉终端。两个脚本分别是orainstRoot.sh和root.sh前者给oraInventory目录写入正确的权限后者配置Oracle环境并生成/usr/local/bin下的脚本入口。不执行这两个脚本的后果是在建库完成那一刻sqlplus起不来报“ORA-12547: TNS lost contact”这类模糊错误查半天查不到原因最后发现是root.sh没跑。执行方式没有特殊之处按提示给的路径分别跑# 两个脚本都要求以 root 身份执行 cd /u01/app/oraInventory ./orainstRoot.sh cd /u01/app/oracle/product/11.2.0/dbhome_1 ./root.shroot.sh执行过程中会询问是否把本地bin目录加入PATH选默认的yes即可。它还会往/etc/oratab里写一行实例记录这一行是后面用dbstart等脚本的基础如果这里被跳过重启后数据库不会自动启动。软件装完之后监听需要单独配置。图形方式可以运行netca在纯命令行环境里用netca的静默模式更省事# 以 oracle 用户执行静默配置默认监听 netca /silent -responsefile /u01/app/oracle/product/11.2.0/dbhome_1/network/response/netca.rspnetca运行完用lsnrctl status验证监听是否已经监听1521端口。如果输出里出现“The listener supports no services”说明监听进程起来了但还没有注册任何实例这是正常的等数据库建好后再执行一次状态检查就会看到服务名。到这一步数据库软件和监听都装完建库工作就交给DBCA了它同样支持静默模式也能走图形界面下一章会把常见的问题放在坑里讲。4. 安装必踩的5个坑从ORA-27102到DBCA超时Oracle 11g R2的安装过程是一个半黑匣子很多错误提示不会直接告诉你“少了哪个包”只给一个编号你需要自己反推。这一章把我遇到最多的5个坑按“现象→原因→解决”写清楚照着排查比满屏搜索日志高效得多。4.1 现象./runInstaller 点了没反应双击runInstaller或者执行命令后终端卡住没有任何输出过一会儿才冒出一个Java异常。原因通常有两个一是DISPLAY没设置Java虚拟机尝试打开图形窗口失败二是系统缺少X11相关的图形库窗口画不出来。排查方式很简单先确认你是在有桌面的环境里执行还是SSH远程执行分别按3.1节的方式设置DISPLAY设置完还不行用ldd检查runInstaller依赖的动态库是否缺失。常见缺libXext和libXtst补装包名在2.2节的yum命令里已经包含单独补两个包也能解决。最省事的判断方法是把DISPLAY设好之后跑一个xclock试试图形窗口能弹出来runInstaller就能弹出来这是一个通用的验证思路。4.2 现象ORA-27102: out of memory这个错误出现在数据库实例启动阶段而不是安装阶段但根子往往在安装前的内核参数。ORA-27102字面意思是“内存不够”实际上绝大多数情况是共享内存段申请失败常见原因是kernel.shmmax配得比SGA小或者kernel.shmall设得过低Oracle启动时需要创建一个和SGA匹配的共享内存段申请不到就报这个错。解决方法是回到2.3节检查sysctl.conf里的值确认kernel.shmmax大于SGA_TARGET执行sysctl -p重载然后用ipcs -m看看当前系统里有哪些共享内存段被占用把不需要的段先释放掉再启动。如果/dev/shm挂载得不够大还要检查它的空间AMM特性下这也会表现为ORA-00845而不是ORA-27102两种错误一起排查效率更高。4.3 现象DBCA建库到一半卡死DBCA图形界面卡住不动或者静默模式建库时长时间停留在某一步不往下走最后被运维手动杀掉。这种现象我要么看到它卡在内存分配要么卡在创建数据文件。内存侧通常是swap空间不足建库阶段Oracle会频繁使用内存做排序和缓冲swap不够时系统进入高负载“卡死”其实是它在反复换页数据文件侧则是目标分区空间不足尤其是上面第2.3节没有给/u01单独分区的场景。解决方式分两步先用free -m和df -h确认物理内存、swap和/u01所在分区的剩余量缺哪个补哪个再有针对性地重启DBCA任务。另外还要注意DBCA建库时不要开着大流量的监控脚本反复查询系统视图那会加剧内存竞争让建库时间雪上加霜。4.4 现象sqlplus连不上提示 ORA-12541sqlplus登录时报ORA-12541: TNS:no listener这是监听层的问题说明客户端无法连接到监听进程。原因有两种大部分时候是监听进程根本没起来少部分时候是tnsnames.ora里的HOST配置写错。解决顺序是先执行lsnrctl status如果输出里提示“TNS:no listener”说明监听进程不存在执行lsnrctl start启动如果监听已经显示OK再看tnsnames.ora里HOST一栏的地址是不是当前机器的主机名或IP装的时候如果改了主机名这里经常残留旧值。改动后执行lsnrctl reload让监听重新加载配置。注意11g R2的监听默认只监听1521端口如果端口被其他进程占用监听起来会失败用netstat -tlnp | grep 1521看一眼就知道被谁占了。4.5 现象重启机器后监听起不来这是最让人头疼的一类问题装的时候一切正常重启后sqlplus连不上检查发现监听进程不存在。常见原因是oracle用户的环境变量没有持久化退出终端再登录后ORACLE_HOME和ORACLE_SID都没有了lsnrctl命令找不到监听程序。解决方法是把下面的环境变量写进oracle用户的.bash_profileexport ORACLE_BASE/u01/app/oracle export ORACLE_HOME$ORACLE_BASE/product/11.2.0/dbhome_1 export ORACLE_SIDorcl export PATH$ORACLE_HOME/bin:$PATH写完之后用source .bash_profile立即生效再重启监听确认。另外一个原因是开机自启没有配置Linux重启后Oracle没被拉起。常见做法是把dbstart脚本加进/etc/rc.local或者写一个systemd service生产环境建议用systemd方式管理这样监听和实例能被按顺序启动异常退出时还能自动拉起。5. 装完后的第一件事用三条命令验证整条链路安装、建库、配监听都做完不要急着交工。我见过一个同事装完数据库imp导入的时候才发现监听根本没注册服务白白折腾一晚上。装完后花两分钟跑三条命令把链路验证一遍心里就踏实了。第一条命令是监听状态检查lsnrctl status输出里重点看两句一句是“The listener supports no services”还是“Service orcl has 1 instance(s)”后者说明实例已经向监听注册成功另一句是“Listening Endpoints Summary”里是否写了1521端口。如果显示no services多半是实例还没启动或者动态注册还没完成或者在tnsnames.ora里配置了静态条目。11g R2的常见情况是实例启动后自动向监听注册需要几秒钟稍等再查即可。第二条命令是登录实例验证sqlplus / as sysdba以sysdba身份登录成功后执行下面这条SQL看实例状态select instance_name, status, startup_time from v$instance;status显示“OPEN”代表实例处于打开状态可以对外提供服务如果是“MOUNTED”或“STARTED”说明数据库只到挂载或启动阶段还没有完全打开用alter database open补上。startup_time是最近一次启动时间如果这个时间晚于你预期的重启时间说明实例曾被拉起来过但可能有人手动停掉了。第三条命令是测试监听到实例的真实连接这一步很多新手会漏掉却恰恰是链路验证的关键sqlplus system/密码localhost:1521/orcl这里不输入用户名密码直接测“数据库是否可连”而Oracle的很多报错只会出现在登录后第一条SQL执行时。用system账号通过监听连一次能确保从客户端到监听、从监听再到实例整条链路没有死角。注意把“orcl”替换成你建库时实际的SID如果建库时用的服务名不是SID这里就需要按服务名连接。我习惯在交付前再把第2章的检查项快速过一遍把常用命令记成一张表贴在部署笔记里。这张表就是我的部署前检查单每次装完都照着核对免得漏项检查项命令合格标准物理内存free -m总量不低于2G交换空间swapon --show存在且大小不低于内存的0.5倍共享内存盘df -h /dev/shm剩余空间大于SGA目标值依赖包rpm -q libaio libaio-devel均已安装内参数sysctl kernel.shmmax值大于SGA_TARGET用户权限id oracle属于oinstall和dba组资源限制ulimit -noracle用户显示65536有一条血泪经验我想留着最后说我第一次独立装Oracle 11g的时候root.sh执行完看到脚本提示“oracle user environment set up successfully”就以为万事大吉退出登录再回来建库sqlplus崩了一下午最后发现是.bash_profile没写环境变量。从那次以后我所有环境变量的持久化检查都放在建库之前完成不再指望安装器帮你做。希望这份装了无数遍攒下来的流程能帮你在Linux下安装Oracle 11g R2时少走一趟冤枉路。本文还有配套的精品资源点击获取
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

STM32+HX711拉力传感器高精度采集实战:从原理到标定滤波 2026/10/2 5:52:30

STM32+HX711拉力传感器高精度采集实战:从原理到标定滤波

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
VS Code集成Claude API实战:从零构建安全可控的AI编程副驾 2026/10/2 5:52:23

VS Code集成Claude API实战:从零构建安全可控的AI编程副驾

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
网络安全入门学习路线:从网络协议基础到实战靶场 2026/10/2 5:52:17

网络安全入门学习路线:从网络协议基础到实战靶场

1. 入行之前,先搞清楚“网络安全”到底在做什么这些年经常有人问我:“我想学网络安全,但网上一搜全是互相矛盾的内容,有人说门槛高,有人说初中毕业就能干,我该信谁?”说实话,这种混乱…

阅读更多 →
FACT:用细粒度跨变量卷积建模动态交互,破解多变量时序预测难题 2026/10/2 5:52:17

FACT:用细粒度跨变量卷积建模动态交互,破解多变量时序预测难题

做多变量时间序列预测这几年,我最头疼的不是把单条曲线的趋势拉准,而是变量和变量之间的关系。一开始我也迷信 Transformer 那套,觉得让注意力自己去“发现”变量间的相关性就完事了,结果跑电力负荷、交通流这类数据时很快发现&am…

阅读更多 →
数字黄金:个人内容资产的确权与长期保存技术 2026/10/2 5:52:17

数字黄金:个人内容资产的确权与长期保存技术

我无法根据当前输入生成符合要求的博文。原因在于:您提供的输入内容中,项目正文为空、关键词未列出、摘要描述缺失,仅有一个项目标题“CSW博客《数字黄金》”和若干无关的占位字段(如“最新网络热词:”后无实际内容&am…

阅读更多 →
XCTF总决赛解题赛全解析:从CTF赛制到安全能力实战进阶 2026/10/2 5:52:16

XCTF总决赛解题赛全解析:从CTF赛制到安全能力实战进阶

1. 为什么说 XCTF 总决赛值得每个安全人关注第九届 XCTF 总决赛来了。这两天我的朋友圈基本被刷屏,不只是因为比赛本身的奖金和名次,而是因为“全球网安大神齐聚”这几个字背后,站着一批真正代表国内甚至国际顶尖水平的安全选手和战队。作为一…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉