
简介Oracle 11gR211.2.0.4Linux x86-64 安装介质面向需要在 Linux 服务器上部署 Oracle 数据库的 DBA、运维工程师与数据库学习者。该版本为 Oracle 11g 的经典稳定版常用于企业生产环境搭建、RAC 与 Data Guard 实验、OCP 备考及旧系统迁移验证。资源包共 1041 个文件以 906 个 jar 组件、44 个 sh 安装脚本、24 个 xml 配置、17 个 properties 及 nls、rsp、ini 等安装辅助文件为主另有 runInstaller、cvuhelper、lsnodes 等可执行工具压缩包整体约 625.64MB。需注意该介质被分割为 7 个分卷必须集齐全部压缩包并置于同一目录下共同解压缺一不可。目前已有 1276 人学习下载适合希望获取完整官方安装包、搭建本地实验环境或排查安装依赖问题的读者参考使用。1. 从一个 4of7 压缩包说起Oracle 11gR2 在 Linux x86-64 上到底怎么装手里拿到p13390677_112040_Linux-x86-64_4of7.zip这种文件名的人多半不是第一次碰 Oracle。这个命名规则拆开看p13390677是补丁集编号112040对应 11.2.0.4 这个版本Linux-x86-64是平台4of7说明它是七份压缩包里的第四份。很多人第一次看到会懵——为什么是 4of7 而不是一个完整包因为 Oracle 11gR2 的安装介质按平台和组件拆成了多个 zip数据库本体、Grid Infrastructure、客户端、示例库各占一份你得先把七份凑齐再解压。这篇要讲的就是在 Linux x86-64 上从这套介质出发把 Oracle 11gR2 单实例装起来跑通并且知道哪些参数不能乱动。适合手上有这套包、准备在测试环境或内网搭库的 DBA 和运维也适合需要复现老系统的后端工程师。11gR2 虽然老但存量系统里它还在跑装它这件事本身就是一个绕不开的基本功。2. 装之前先把账算清介质、系统与内核参数2.1 七份包里到底该解哪几份p13390677_112040_Linux-x86-64这套介质七份的分工大致是1of7 和 2of7 是 Database 安装文件3of7 是 Grid Infrastructure4of7 通常是 Database 的第二部分或客户端相关5of7、6of7 是 Grid 的后续部分7of7 是 Examples 或补丁。实际装单实例数据库你至少需要 1of7、2of7如果 4of7 属于 Database 组件也要一起解。判断方法很简单把 zip 解压后看目录出现database/且里面有runInstaller的就是你要的。# 先建好存放介质的目录避免解压到根分区撑爆 mkdir -p /u01/soft/oracle11g cd /u01/soft/oracle11g # 逐个解压unzip 会自动合并到 database 目录 unzip -q p13390677_112040_Linux-x86-64_1of7.zip unzip -q p13390677_112040_Linux-x86-64_2of7.zip unzip -q p13390677_112040_Linux-x86-64_4of7.zip # 确认安装器存在 ls -l database/runInstaller这里-q是静默解压避免刷屏。解压后如果database/下同时有stage/和runInstaller说明介质完整。注意别把七份全解到同一个目录还指望它自动识别——Oracle 的安装器只认database/这一层结构多解了 Grid 的包反而会让runInstaller报组件冲突。2.2 Linux x86-64 上的依赖包与内核参数Oracle 11gR2 对系统有硬性要求缺一个包安装器就直接退出。常见做法是先装依赖再改内核参数。以 CentOS 7 / RHEL 7 为例依赖包清单如下yum install -y binutils compat-libcap1 compat-libstdc-33 \ gcc gcc-c glibc glibc-devel ksh libaio libaio-devel \ libgcc libstdc libstdc-devel libXext libXtst libX11 \ libXau libXi make sysstat unixODBC unixODBC-develcompat-libstdc-33这个包在较新的源里可能没有需要单独找 rpm 装缺它会在链接阶段报libstdc.so.5找不到。内核参数改/etc/sysctl.conf# 追加以下内容 fs.aio-max-nr 1048576 fs.file-max 6815744 kernel.shmall 2097152 kernel.shmmax 4294967295 kernel.shmmni 4096 kernel.sem 250 32000 100 128 net.ipv4.ip_local_port_range 9000 65500 net.core.rmem_default 262144 net.core.rmem_max 4194304 net.core.wmem_default 262144 net.core.wmem_max 1048576 # 生效 sysctl -pkernel.shmmax设成 4294967295 是 4GB 减 1对大多数测试库够用如果物理内存大于 8GB可以按内存一半来设。kernel.sem四个值分别是信号量集上限、系统级信号量上限、单次操作信号量上限、信号量集数量写错会导致数据库启动时报ORA-27154。改完用sysctl -p确认没有报错再继续。2.3 用户、目录与资源限制Oracle 不允许用 root 装库必须建独立的oracle用户和oinstall、dba组。目录规划上ORACLE_BASE和ORACLE_HOME要分开别把数据文件也塞进ORACLE_HOME。groupadd oinstall groupadd dba useradd -g oinstall -G dba oracle passwd oracle mkdir -p /u01/app/oracle mkdir -p /u01/app/oraInventory chown -R oracle:oinstall /u01/app chmod -R 775 /u01/app资源限制改/etc/security/limits.conf追加oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft stack 10240 oracle hard stack 32768nofile给到 65536 是为了避免安装过程中文件描述符耗尽stack给到 32768 是 11gR2 安装器的硬要求低于这个值会在runInstaller启动时直接报错退出。改完重新登录oracle用户用ulimit -a确认生效。3. 静默安装还是图形安装两种路径的取舍与命令3.1 图形安装的启动条件与 X11 转发图形安装最直观但前提是你有 X11 环境。常见做法是在本地用 Xmanager 或 VcXsrv通过 SSH 把DISPLAY转发到服务器。服务器上先确认xauth和xclock能跑# 在 oracle 用户下 export DISPLAY你的本地IP:0.0 xclockxclock能弹出来说明 X11 通了。然后进database/目录执行cd /u01/soft/oracle11g/database ./runInstaller图形界面里几个关键选择配置类型选「创建和配置数据库」系统类选「服务器类」安装类型选「单实例数据库安装」版本选「企业版」。SID 建议用orcl字符集选AL32UTF8别选默认的WE8ISO8859P1否则后面中文乱码会让你后悔。安装器走到最后会提示用 root 执行两个脚本/u01/app/oraInventory/orainstRoot.sh /u01/app/oracle/product/11.2.0/dbhome_1/root.sh这两个脚本必须按顺序执行orainstRoot.sh建 inventory 目录root.sh配oraenv和dbhome。跳过任何一个后面dbca建库都会失败。3.2 静默安装的响应文件怎么写没有图形环境时静默安装是唯一选择。核心是准备一个db_install.rsp响应文件关键参数如下oracle.install.optionINSTALL_DB_SWONLY ORACLE_HOSTNAME你的主机名 UNIX_GROUP_NAMEoinstall INVENTORY_LOCATION/u01/app/oraInventory SELECTED_LANGUAGESen,zh_CN ORACLE_HOME/u01/app/oracle/product/11.2.0/dbhome_1 ORACLE_BASE/u01/app/oracle oracle.install.db.InstallEditionEE oracle.install.db.DBA_GROUPdba oracle.install.db.OPER_GROUPdba oracle.install.db.config.starterdb.typeGENERAL_PURPOSE oracle.install.db.config.starterdb.globalDBNameorcl oracle.install.db.config.starterdb.SIDorcl oracle.install.db.config.starterdb.characterSetAL32UTF8 oracle.install.db.config.starterdb.memoryOptiontrue oracle.install.db.config.starterdb.memoryLimit2048 oracle.install.db.config.starterdb.password.ALL你的密码 DECLINE_SECURITY_UPDATEStrueoracle.install.optionINSTALL_DB_SWONLY表示只装软件不建库建库交给dbca单独做这样可控性更强。memoryLimit2048是给实例分配的内存上限单位 MB测试环境给 2GB 够用。DECLINE_SECURITY_UPDATEStrue必须写否则安装器会卡在联网检查那一步。执行命令cd /u01/soft/oracle11g/database ./runInstaller -silent -responseFile /u01/soft/oracle11g/db_install.rsp \ -ignorePrereq -waitforcompletion-ignorePrereq是跳过前置检查只在确认依赖都装齐的情况下用否则会把真正的问题掩盖掉。-waitforcompletion让命令阻塞到安装结束方便看日志。安装完成后同样要跑那两个 root 脚本。3.3 用 dbca 静默建库软件装完用dbca建实例。静默建库需要另一个响应文件或者直接用命令行参数dbca -silent -createDatabase \ -templateName General_Purpose.dbc \ -gdbName orcl -sid orcl \ -responseFile NO_VALUE \ -characterSet AL32UTF8 \ -memoryPercentage 30 \ -emConfiguration NONE \ -datafileDestination /u01/app/oracle/oradata \ -redoLogFileSize 100 \ -recoveryAreaDestination /u01/app/oracle/fast_recovery_area-memoryPercentage 30表示用物理内存的 30% 给 SGA 和 PGA比写死数值更灵活。-emConfiguration NONE是不配 Enterprise Manager11gR2 的 EM 基于 Java启动慢还占端口测试环境没必要开。建库过程会跑几分钟结束后用sqlplus / as sysdba连进去select status from v$instance;看到OPEN就算成了。4. 装完只是开始监听、字符集与启动排错4.1 监听器配置与常见连接失败建库时dbca一般会自动配监听但静默模式下有时不会。手动配用netca或直接写listener.oraLISTENER (DESCRIPTION_LIST (DESCRIPTION (ADDRESS (PROTOCOL TCP)(HOST 你的主机名)(PORT 1521)) ) )改完用lsnrctl start启动lsnrctl status看状态。连接报ORA-12541: TNS:no listener八成是监听没起或者端口被占报ORA-12514: TNS:listener does not currently know of service是服务名没注册检查local_listener参数和service_names。lsnrctl status里能看到Service orcl has 1 instance(s)才算注册成功。4.2 字符集选错之后的补救如果建库时手滑选了WE8ISO8859P1后面存中文会变成问号。补救办法是改字符集但只能在数据量小的时候做-- 以 sysdba 登录 SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER SYSTEM ENABLE RESTRICTED SESSION; ALTER SYSTEM SET JOB_QUEUE_PROCESSES0; ALTER SYSTEM SET AQ_TM_PROCESSES0; ALTER DATABASE OPEN; ALTER DATABASE CHARACTER SET INTERNAL_USE AL32UTF8; SHUTDOWN IMMEDIATE; STARTUP;INTERNAL_USE是跳过字符集超集检查只在新库、无业务数据时用。有数据的情况下强行改会导致乱码不可逆血泪经验是建库前就把字符集定死别指望事后补救。4.3 启动报 ORA-00845 与 /dev/shm 的关系11gR2 用 AMM 自动内存管理时依赖/dev/shm。如果/dev/shm小于MEMORY_TARGET启动会报ORA-00845: MEMORY_TARGET not supported on this system。查一下df -h /dev/shm如果只有 1GB 而MEMORY_TARGET设了 2GB要么调小MEMORY_TARGET要么扩/dev/shmmount -o remount,size4G /dev/shm写进/etc/fstab才能持久化。这个坑在容器里尤其常见因为容器默认/dev/shm只有 64MB。5. 避坑清单装 11gR2 最容易翻车的五个地方现象runInstaller启动后闪退日志里报DISPLAY not set。原因图形安装依赖 X11DISPLAY没导出或者 X11 转发没开。 解决确认 SSH 配置里X11Forwarding yes本地 X Server 在跑export DISPLAY本地IP:0.0后再执行xclock验证。现象安装到 70% 报Error in invoking target agent nmhs。原因缺少compat-libstdc-33或libaio-devel链接阶段找不到符号。 解决补装依赖包然后点 Retry不用从头再来。现象dbca建库到 30% 卡住不动。原因/etc/hosts里主机名没解析或者解析到了 127.0.0.1。 解决在/etc/hosts里加一行真实IP 主机名确保hostname命令返回的名字能 ping 通。现象数据库启动报ORA-27102: out of memory。原因kernel.shmmax小于 SGA 需求或者MEMORY_TARGET超过/dev/shm。 解决调大kernel.shmmax和/dev/shm重启系统后sysctl -p生效。现象用sqlplus本地连没问题远程连报ORA-12514。原因监听器没注册服务或者service_names只包含 SID 不包含全局库名。 解决alter system set service_namesorcl scopeboth;然后lsnrctl reload再lsnrctl status确认服务列表。6. 装完之后怎么验证这套库真的能用装完不验证等于没装。我一般按三步走先确认实例状态再跑一轮读写最后看告警日志有没有隐藏错误。第一步实例级检查-- 以 sysdba 登录 SELECT instance_name, status, database_status FROM v$instance; SELECT name, open_mode, log_mode FROM v$database; SELECT tablespace_name, bytes/1024/1024 AS mb FROM dba_data_files;status要是OPENopen_mode要是READ WRITElog_mode看是ARCHIVELOG还是NOARCHIVELOG测试库不归档也行但要知道自己在哪个模式。第二步建个测试表跑读写CREATE TABLE t_smoke (id NUMBER, name VARCHAR2(50)); INSERT INTO t_smoke VALUES (1, 测试中文); COMMIT; SELECT * FROM t_smoke; DROP TABLE t_smoke;能插能查能删说明字符集、表空间、权限都正常。中文显示不乱码说明AL32UTF8生效了。第三步看告警日志tail -100 $ORACLE_BASE/diag/rdbms/orcl/orcl/trace/alert_orcl.log重点看有没有ORA-开头的错误尤其是ORA-00600和ORA-07445这两个是内部错误出现就说明安装过程有隐患。没有的话这套库就算立住了。最后说个习惯我装完任何 Oracle 库都会把db_install.rsp、listener.ora、tnsnames.ora和sysctl.conf的改动备份到一个目录里下次装同版本直接复用省得重新踩一遍依赖和参数的坑。11gR2 这套介质虽然老但把这一遍走通后面装 12c、19c 的逻辑是相通的差别只在响应文件参数和依赖包版本。希望帮到你。本文还有配套的精品资源点击获取