简介这份资源面向需要在龙蜥Anolis操作系统上部署Oracle 11g数据库的运维与DBA人员提供了一套可自动化完成安装与数据恢复的整合包。Anolis OS作为阿里云维护的企业级Linux发行版是承载Oracle数据库的稳定基础环境而Oracle 11g的常规安装涉及依赖处理、环境变量配置、实例创建与监听器设置等繁琐环节本包通过脚本将这些步骤串联起来降低手动操作的门槛与出错概率。压缩包共11个文件以7个rpm安装包为主体辅以chkconfig服务配置、S01shm_load共享内存加载脚本、install.sh自动化安装脚本及conf配置文件整体约334.17MB覆盖从依赖安装到数据库初始化的关键环节。资源同时支持dmp文件的还原便于数据迁移与恢复场景。目前已有3017人学习下载适合希望快速搭建Oracle 11g实验或生产环境、并借助脚本提升部署效率的读者参考使用。1. 龙蜥系统上装 Oracle 11g一份 rpm 包到底能不能省掉半天折腾在龙蜥Anolis OS上装 Oracle 11g最耗时间的从来不是数据库本身而是前期依赖。官方安装介质是给 RHEL/OEL 准备的龙蜥的 glibc、libaio、ncurses 版本跟它默认预期经常对不上跑 runInstaller 之前先要过一遍依赖检查缺一个包就卡在 prerequisite 界面。这份「龙蜥 anolis 系统 oracle11g 安装包」把 Oracle 11g 需要的 rpm 依赖和安装介质打包在一起省掉的是逐个 yum 找包、逐个 rpm -ivh 试错的过程。它适合两类人一类是要在国产化环境里快速搭一套 Oracle 11g 做兼容性验证的 DBA另一类是接手了老系统、必须把 11g 跑在龙蜥上的运维。下面按「包是什么 → 怎么装 → 坑在哪」走一遍。2. 拆开这个包oracle11g.rpm 与依赖清单里到底有什么2.1 安装介质与依赖包的组成拿到一个标着 oracle11g 的 rpm 包第一件事不是急着装而是先看清楚它里面装的是什么。Oracle 11g 在 Linux 上的官方安装方式从来不是单个 rpm 搞定而是「安装介质runInstaller response file 一堆系统依赖 rpm」。所以这类打包资源通常分两层一层是 Oracle 自己的安装文件database 目录、response file 模板另一层是龙蜥上缺的依赖 rpm常见的有 libaio、libaio-devel、compat-libstdc、elfutils-libelf-devel、pdksh或 ksh、bc、binutils、make、sysstat 这些。先解包看清单别直接装# 建一个临时目录把 rpm 包解开看内容不直接安装 mkdir -p /tmp/oracle11g_inspect cd /tmp/oracle11g_inspect rpm2cpio /path/to/oracle11g.rpm | cpio -idmv # 看解出来的目录结构确认是安装介质还是依赖集合 find . -maxdepth 3 -type d | head -40rpm2cpio把 rpm 转成 cpio 流cpio -idmv解出来-i提取、-d建目录、-m保留时间戳、-v显示过程。这一步的意义是你能提前知道这个包是往/opt或/u01放安装文件还是往系统路径塞依赖库。如果解出来是一堆.rpm文件那它是依赖集合如果解出来是database/、response/这种目录那它是安装介质。2.2 龙蜥版本与 Oracle 11g 的兼容边界Oracle 11g 官方支持的最高认证版本大概到 RHEL 6/7 那一代龙蜥 8 基于较新的内核和 glibc直接跑会有兼容问题。所以选型上要清楚这份包解决的是「依赖能装上、安装程序能起来」不解决「Oracle 11g 在龙蜥 8 上被官方认证」。实际能跑但属于非认证组合生产环境要自己评估。判断兼容性先看两个东西# 看龙蜥版本和内核 cat /etc/os-release uname -r # 看 glibc 版本Oracle 11g 对 glibc 版本敏感 ldd --version | head -1/etc/os-release里的VERSION_ID告诉你这是龙蜥 7 还是 8。龙蜥 7 跟 RHEL 7 同代兼容性最好龙蜥 8 的 glibc 更新装 11g 时容易在链接阶段报GLIBC_2.xx not found之类的错。ldd --version看 glibc 主版本如果高于 2.17就要有心理准备部分二进制可能跑不起来需要额外处理。提示先确认你的龙蜥是 7 还是 8这决定了后面依赖包能不能直接用也决定了要不要额外做兼容处理。2.3 依赖 rpm 的安装顺序依赖包不是随便rpm -ivh *.rpm一把梭顺序错了会互相报依赖缺失。常见做法是先装基础库再装开发库最后装 Oracle 安装程序需要的工具。# 进入解出来的依赖目录按依赖层次分批装 cd /tmp/oracle11g_inspect/deps # 第一批基础运行库 rpm -ivh libaio-*.rpm libaio-devel-*.rpm # 第二批编译与工具链 rpm -ivh compat-libstdc-*.rpm elfutils-libelf-devel-*.rpm # 第三批Oracle 安装脚本依赖的 shell 和工具 rpm -ivh pdksh-*.rpm bc-*.rpm binutils-*.rpm make-*.rpm sysstat-*.rpmrpm -ivh里-i安装、-v显示详情、-h显示进度条。分批装的原因是libaio 是 Oracle 异步 IO 的基础必须先有compat-libstdc 提供老版本 C 运行库Oracle 11g 的二进制依赖它pdksh 是 Oracle 安装脚本里#!/bin/ksh的依赖龙蜥默认可能只有 bash缺了会在跑 root.sh 时报错。如果某个包报already installed说明系统已有跳过即可如果报Failed dependencies看它缺什么回到前一批补。3. 从零到库起来龙蜥上 Oracle 11g 的安装流程3.1 系统参数与用户环境准备Oracle 安装前必须调内核参数和用户限制否则安装程序会在 prerequisite 检查里直接标红。这一步跟发行版无关龙蜥上一样要做。# 1. 改内核参数写入 /etc/sysctl.conf cat /etc/sysctl.conf EOF kernel.shmmax 4294967295 kernel.shmall 1048576 kernel.shmmni 4096 kernel.sem 250 32000 100 128 fs.file-max 6815744 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 EOF # 生效 sysctl -p # 2. 改用户限制写入 /etc/security/limits.conf cat /etc/security/limits.conf EOF oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft stack 10240 EOFkernel.shmmax是单个共享内存段最大值Oracle 的 SGA 靠它kernel.shmall是共享内存总页数kernel.sem是信号量四个值分别是 SEMMSL、SEMMNS、SEMOPM、SEMMNIOracle 对这几个有最低要求。limits.conf里nproc是进程数、nofile是打开文件数、stack是栈大小装库时如果 nofile 太小安装到一半会报ORA-27123之类的错。接着建 oracle 用户和目录# 建用户组和用户 groupadd -g 54321 oinstall groupadd -g 54322 dba useradd -u 54321 -g oinstall -G dba oracle passwd oracle # 建安装目录注意属主 mkdir -p /u01/app/oracle/product/11.2.0/dbhome_1 chown -R oracle:oinstall /u01 chmod -R 775 /u01oinstall是 Oracle 清单组dba是数据库管理组这是 Oracle 的标准约定。目录属主必须是 oracle否则安装程序写不进去。/u01是 Oracle 的惯用挂载点你也可以换成别的路径但后面 response file 里的路径要跟着改。3.2 用 response file 静默安装图形界面在服务器上不一定有静默安装更稳。Oracle 11g 支持 response file把安装参数写进文件runInstaller 读它。# 切到 oracle 用户 su - oracle # 从解出来的介质里找 response file 模板 cd /tmp/oracle11g_inspect/database/response ls # 复制一份 db_install.rsp 改 cp db_install.rsp /tmp/my_db_install.rsp改 response file 的关键几项# 编辑 /tmp/my_db_install.rsp改这几行 oracle.install.optionINSTALL_DB_SWONLY ORACLE_HOSTNAMElocalhost UNIX_GROUP_NAMEoinstall INVENTORY_LOCATION/u01/app/oraInventory 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_GROUPdbaINSTALL_DB_SWONLY表示只装软件不建库建库后面用 dbca 单独做这样可控。ORACLE_HOME和ORACLE_BASE必须跟前面建的目录一致。InstallEditionEE是企业版如果你只有标准版介质就改成 SE。然后跑安装# 静默安装-silent 表示无图形-responseFile 指定参数文件 cd /tmp/oracle11g_inspect/database ./runInstaller -silent -responseFile /tmp/my_db_install.rsp -ignorePrereq # 安装过程中会提示用 root 跑两个脚本另开终端执行 # /u01/app/oraInventory/orainstRoot.sh # /u01/app/oracle/product/11.2.0/dbhome_1/root.sh-silent无图形模式-responseFile指定参数文件-ignorePrereq跳过前置检查。-ignorePrereq要慎用它跳过的是检查不是问题本身如果真有缺包装到一半还是会失败。root.sh 必须用 root 跑它负责建/etc/oratab和设置一些系统级链接。3.3 建库与监听配置软件装完后建库用 dbca 静默模式# 切回 oracle 用户建库 su - oracle dbca -silent -createDatabase \ -templateName General_Purpose.dbc \ -gdbName orcl \ -sid orcl \ -responseFile NO_VALUE \ -characterSet AL32UTF8 \ -sysPassword oracle123 \ -systemPassword oracle123 \ -datafileDestination /u01/app/oracle/oradata \ -redoLogFileSize 50 \ -emConfiguration NONE-gdbName是全局库名-sid是实例名-characterSet AL32UTF8是字符集中文环境建议用这个。-emConfiguration NONE不配 EM省资源也省事。建库过程会跑几分钟看日志确认没有 ORA- 错误。监听用 netca 或直接写 listener.ora# 配监听 netca -silent -responseFile /tmp/netca.rsp # 启动监听 lsnrctl start # 看监听状态 lsnrctl statusnetca静默配监听lsnrctl start启动lsnrctl status看服务是否注册。如果 status 里看不到 orcl 服务可能是库没起sqlplus / as sysdba进去startup一下。4. 避坑与排查龙蜥上装 11g 最容易翻车的几个点4.1 现象runInstaller 报 GLIBC 版本不满足原因龙蜥 8 的 glibc 比 Oracle 11g 预期的版本新但 Oracle 的二进制链接的是老符号或者反过来安装程序自带的 JRE 跟新 glibc 不兼容。解决先确认是哪个二进制报错ldd看它依赖的 glibc 版本。如果是 JRE 问题可以换用系统自带的 JDK 跑安装程序或者用-jreLoc指定。如果是库文件符号缺失常见做法是装 compat 包补老符号但龙蜥 8 上不一定有对应包这时候要考虑降到龙蜥 7 或者用容器跑。4.2 现象root.sh 执行时报 pdksh 找不到原因Oracle 的 root.sh 脚本头部是#!/bin/ksh龙蜥默认没装 ksh或者装了但路径不对。解决装 pdksh 或 ksh 包然后确认/bin/ksh存在。如果包名在龙蜥上叫ksh就yum install ksh。装完再跑 root.sh。4.3 现象dbca 建库到一半报 ORA-27125原因共享内存参数不够或者 oracle 用户的 memlock 限制太低。解决检查/etc/sysctl.conf里的kernel.shmmax和kernel.shmall确认值够大。再看/etc/security/limits.conf里 oracle 的memlock加上oracle soft memlock unlimited和oracle hard memlock unlimited重新登录 oracle 用户生效。4.4 现象监听起来了但客户端连不上原因龙蜥的防火墙默认开着1521 端口没放行或者 listener.ora 里绑定的地址不对。解决firewall-cmd --add-port1521/tcp --permanent然后firewall-cmd --reload。如果是云主机还要看安全组。listener.ora 里HOST建议写主机名或具体 IP别写 localhost否则外部连不上。4.5 现象安装完 sqlplus 能连但中文乱码原因客户端和服务端字符集不一致或者NLS_LANG没设。解决确认建库时字符集是 AL32UTF8客户端环境变量export NLS_LANGAMERICAN_AMERICA.AL32UTF8。如果服务端已经是别的字符集改起来麻烦建库时就该定好。5. 装完之后怎么验证这套 11g 是真能用的装完不代表能用得跑一遍验证。我一般按这个顺序来从实例到网络到数据一层层确认。先看实例状态su - oracle sqlplus / as sysdba # 在 sqlplus 里执行 select instance_name, status from v$instance; select name, open_mode from v$database;v$instance的 status 应该是 OPENv$database的 open_mode 应该是 READ WRITE。如果 status 是 MOUNTED说明库没完全打开alter database open;一下。再看监听注册lsnrctl status # 输出里应该能看到 orcl 服务状态 READY如果服务没注册alter system register;手动注册一下。然后建个测试表插数据验证读写-- 在 sqlplus 里 create table t_test (id number, name varchar2(50)); insert into t_test values (1, test); commit; select * from t_test;能建表、能插入、能查出来说明存储和内存都正常。最后验证远程连接从另一台机器用 sqlplus 或客户端工具连# 在客户端机器上 sqlplus system/oracle123//服务器IP:1521/orcl # 连上后查 select sysdate from dual;这一步过了说明监听、网络、认证都通了。注意验证时用的密码别用弱密码测试完记得改掉。生产环境更不能用 oracle123 这种。这套流程走下来从解包看清单、装依赖、静默安装、建库配监听到最后的验证基本能覆盖龙蜥上装 Oracle 11g 的主要环节。我自己的习惯是每装完一套就写个 checklist把 sysctl 参数、limits、目录属主、字符集这几项记下来下次装直接对照比翻文档快。从那以后我每次拿到新的 rpm 包都先 rpm2cpio 解开看清单再动手这个习惯帮我省过好几次装到一半发现包不对的返工。希望帮到你。本文还有配套的精品资源点击获取