恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
Anolis 8 静默安装 Oracle 11g 实战:依赖、内核参数与避坑指南
首页
资讯中心
/
Anolis 8 静默安装 Oracle 11g 实战:依赖、内核参数与避坑指南
Anolis 8 静默安装 Oracle 11g 实战:依赖、内核参数与避坑指南
发布时间:2026/10/6 9:02:38
简介这份资源面向需要在龙蜥Anolis操作系统上部署Oracle 11g数据库的运维与DBA人员提供了一套可直接落地的安装与恢复方案。Anolis OS作为阿里云维护的企业级Linux发行版是运行Oracle数据库的稳定基础环境而该包通过自动化脚本简化了原本繁琐的安装流程涵盖环境变量配置、依赖处理、RPM包安装、数据库实例创建、监听器配置及用户权限分配等环节同时支持通过数据泵工具还原dmp备份文件降低手动操作带来的出错概率。资源包共11个文件以7个rpm安装包为主另含sh安装脚本、chkconfig服务配置、conf参数文件及共享内存加载脚本等压缩包约334.17MB结构紧凑、用途明确。目前已有3010人学习下载适合希望快速在国产化系统上完成Oracle 11g部署与数据恢复的读者参考使用。1. 龙蜥 Anolis 上装 Oracle 11g为什么这件事比你想的更折腾在龙蜥 Anolis OS 上部署 Oracle 11g是很多国产化替代项目里绕不开的一关。Anolis 基于 Linux 内核 5.10glibc 版本比 Oracle 11g 发布时2007 年的环境新了不止一代而 Oracle 11g 的官方支持列表里根本没有 Anolis 这个名字。这意味着你拿到的那个linux.x64_11gR2_database_1of2.zip安装包直接解压跑runInstaller大概率会在依赖检查阶段就翻车。但现实需求摆在那里——大量存量业务系统跑在 Oracle 11g 上迁移到 Anolis 时数据库层不能随便换。这篇文章要解决的就是在 Anolis 8.x 上用静默安装方式把 Oracle 11g R2 跑起来包括依赖补齐、内核参数调整、建库建表空间、以及那些官方文档不会告诉你的坑。适合正在做国产化迁移的 DBA 和运维工程师也适合需要在 Anolis 上搭 Oracle 测试环境的后端开发。2. 装之前先把地基打牢Anolis 上的依赖与内核参数2.1 为什么 Anolis 8 装 Oracle 11g 会缺一堆包Oracle 11g 的runInstaller在预检查阶段会调用rpm -q去查一堆包比如binutils、compat-libstdc、gcc、glibc、libaio、libgcc、libstdc、make、sysstat、unixODBC等。Anolis 8 的默认最小化安装里这些包要么版本对不上要么根本没装。更麻烦的是compat-libstdc-33这个包——它提供的是 libstdc.so.5而 Anolis 8 的仓库里默认只有 libstdc.so.6。Oracle 11g 的某些二进制组件尤其是oracle可执行文件和sqlplus链接的是旧版 C 库缺了它连sqlplus都起不来。常见做法是先从 Anolis 的 AppStream 仓库装基础依赖再单独补compat-libstdc-33。如果仓库里找不到可以从 CentOS 7 的镜像里提取对应的 rpm 手动安装但要注意架构匹配x86_64。我一般会先跑一遍依赖检查脚本把缺的包列出来再逐个补而不是一股脑全装——装多了反而可能引入版本冲突。# 先更新系统并安装基础依赖 dnf update -y dnf install -y binutils gcc gcc-c make sysstat libaio libaio-devel \ libstdc libstdc-devel libgcc unixODBC unixODBC-devel \ elfutils-libelf elfutils-libelf-devel # 单独处理 compat-libstdc-33Anolis 8 默认没有 # 如果 dnf 找不到去 CentOS 7 镜像下载 rpm 后本地安装 dnf install -y compat-libstdc-33 || \ rpm -ivh compat-libstdc-33-3.2.3-72.el7.x86_64.rpm上面这段命令的逻辑是先用dnf把 Anolis 仓库里能装的依赖全部装齐然后用||做兜底——如果compat-libstdc-33在仓库里不存在就手动 rpm 安装。参数上注意libaio-devel必须装Oracle 的异步 I/O 依赖它unixODBC-devel是给 Oracle 的 ODBC 驱动用的不装的话预检查会报 warning。装完后用rpm -qa | grep逐个确认别只看命令返回码。2.2 内核参数不是抄模板得按内存算Oracle 11g 对共享内存、信号量、文件句柄有硬性要求Anolis 的默认值远远不够。很多人直接抄网上的sysctl.conf模板结果机器内存不一样kernel.shmmax设小了导致建库时 ORA-27102设大了又浪费。正确的做法是按物理内存算kernel.shmmax至少设为物理内存的一半kernel.shmall设为shmmax / 4096页大小kernel.shmmni设 4096信号量kernel.sem设250 32000 100 128。# 查看物理内存单位 KB grep MemTotal /proc/meminfo # 假设内存 16GB则 shmmax 85899345928GB # 写入 /etc/sysctl.d/99-oracle.conf cat /etc/sysctl.d/99-oracle.conf EOF fs.aio-max-nr 1048576 fs.file-max 6815744 kernel.shmall 2097152 kernel.shmmax 8589934592 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 EOF sysctl -p /etc/sysctl.d/99-oracle.conf这里kernel.shmmax的值要根据你机器的实际内存改16GB 内存设 8GB 是安全的。fs.aio-max-nr设 1048576 是为了避免 Oracle 的异步 I/O 报 ORA-27090。net.ipv4.ip_local_port_range从 9000 开始是为了避开 Oracle 监听器可能占用的低端口。改完sysctl -p生效后用sysctl -a | grep shm确认值已经变了。另外别忘了ulimit——在/etc/security/limits.d/99-oracle.conf里给 oracle 用户设nofile 65536、nproc 16384、stack 10240否则安装到一半会报“无法分配内存”。2.3 用户、目录、环境变量一步错步步错Oracle 安装对用户和目录的权限极其敏感。必须创建oinstall和dba两个组oracle 用户的主组是oinstall附加组是dba。ORACLE_BASE一般设/u01/app/oracleORACLE_HOME设/u01/app/oracle/product/11.2.0/db_1。目录权限必须是oinstall:dba且 775否则runInstaller会报“目录不可写”。groupadd -g 54321 oinstall groupadd -g 54322 dba useradd -u 54321 -g oinstall -G dba -m oracle passwd oracle mkdir -p /u01/app/oracle/product/11.2.0/db_1 chown -R oracle:oinstall /u01 chmod -R 775 /u01 # 切换到 oracle 用户配置环境变量 su - oracle cat ~/.bash_profile EOF export ORACLE_BASE/u01/app/oracle export ORACLE_HOME$ORACLE_BASE/product/11.2.0/db_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 EOF source ~/.bash_profile注意NLS_LANG设成AL32UTF8是为了避免中文乱码如果业务库是 ZHS16GBK这里要对应改。ORACLE_SID按项目命名规范来别用默认的orcl除非你确定不冲突。环境变量配完后用echo $ORACLE_HOME确认然后cd $ORACLE_HOME能进去才算对。3. 静默安装 Oracle 11g从解压到建库的完整命令链3.1 解压安装包与准备 response 文件Oracle 11g 的安装包通常是两个 ziplinux.x64_11gR2_database_1of2.zip和2of2.zip。解压后得到database目录里面runInstaller是图形化入口但 Anolis 服务器通常没图形界面所以要用静默模式。静默安装的核心是 response 文件——db_install.rsp负责装软件dbca.rsp负责建库。这两个文件在database/response/目录下有模板复制出来改关键参数即可。# 用 oracle 用户解压 su - oracle cd /tmp unzip linux.x64_11gR2_database_1of2.zip unzip linux.x64_11gR2_database_2of2.zip # 复制 response 模板 cd /tmp/database/response cp db_install.rsp db_install_custom.rsp cp dbca.rsp dbca_custom.rsp解压时注意磁盘空间——database目录解压后大约 2.5GB/tmp如果挂载的是小分区会爆。我一般会解压到/u01/soft下。db_install.rsp里必须改的参数有ORACLE_HOSTNAME用hostname命令查、UNIX_GROUP_NAMEoinstall、INVENTORY_LOCATION/u01/app/oraInventory、ORACLE_HOME、ORACLE_BASE、INSTALL_DB_SWONLYtrue只装软件不建库、oracle.install.db.InstallEditionEE企业版。SELECTED_LANGUAGES里加上en和zh_CN如果不需要中文可以只留en。3.2 跑 runInstaller 静默安装与 root 脚本response 文件改好后用runInstaller -silent -responseFile启动安装。这个过程会跑 10 到 20 分钟期间会检查依赖、链接二进制、复制文件。如果预检查报错日志在/u01/app/oraInventory/logs/下installActions*.log里能看到具体缺什么。安装到最后会提示用 root 执行两个脚本orainstRoot.sh和root.sh。cd /tmp/database ./runInstaller -silent -ignorePrereq -responseFile /tmp/database/response/db_install_custom.rsp # 安装完成后按提示切 root 执行 su - root /u01/app/oraInventory/orainstRoot.sh /u01/app/oracle/product/11.2.0/db_1/root.sh-ignorePrereq是跳过预检查的强制参数但我不建议一上来就用——先不加它跑一遍看看到底缺什么补完了再跑。如果预检查只报compat-libstdc-33缺失而你已经手动装了可以用-ignorePrereq跳过。root.sh会配置/etc/oratab和网络配置执行时如果提示覆盖dbhome文件选 yes。装完后用$ORACLE_HOME/bin/sqlplus -V验证能输出版本号说明软件层 OK。3.3 用 dbca 静默建库与建表空间软件装完只是空壳还得建数据库实例。dbca.rsp里关键参数GDBNAMEorcl、SIDorcl、SYSPASSWORD、SYSTEMPASSWORD、CHARACTERSETAL32UTF8、TOTALMEMORY按物理内存 40% 设、DATAFILEDESTINATION/u01/app/oracle/oradata、RECOVERYAREADESTINATION/u01/app/oracle/fast_recovery_area。建库过程会创建数据文件、控制文件、redo log耗时取决于磁盘性能。# 静默建库 dbca -silent -createDatabase -responseFile /tmp/database/response/dbca_custom.rsp # 建完后验证监听和实例 lsnrctl start sqlplus / as sysdba SQL select status from v$instance; SQL select name from v$datafile;建库完成后监听器默认可能没起用lsnrctl start启动。sqlplus / as sysdba能进去说明实例正常。接下来建业务表空间——这是热词里“新安装 oracle11g 如何建立表空间”对应的操作。我一般会建一个USERS之外的自定义表空间比如APP_DATA数据文件初始 1GB 自动扩展每次 100MB最大 10GB。CREATE TABLESPACE APP_DATA DATAFILE /u01/app/oracle/oradata/orcl/app_data01.dbf SIZE 1G AUTOEXTEND ON NEXT 100M MAXSIZE 10G EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO; -- 建用户并指定默认表空间 CREATE USER appuser IDENTIFIED BY App#2024 DEFAULT TABLESPACE APP_DATA TEMPORARY TABLESPACE TEMP QUOTA UNLIMITED ON APP_DATA; GRANT CONNECT, RESOURCE TO appuser;EXTENT MANAGEMENT LOCAL和SEGMENT SPACE MANAGEMENT AUTO是 11g 的推荐配置能减少碎片。QUOTA UNLIMITED给用户在该表空间的无限制配额生产环境按需收紧。建完后用select tablespace_name, status from dba_tablespaces;确认状态是 ONLINE。4. 避坑与排查Anolis 上装 Oracle 11g 的 5 个血泪教训4.1 预检查报 “libaio.so.1: cannot open shared object file”现象runInstaller跑到预检查阶段直接退出日志里写libaio.so.1找不到。原因Anolis 8 默认没装libaio或者装了但ldconfig缓存没更新。解决dnf install -y libaio libaio-devel然后ldconfig再用ldd $ORACLE_HOME/bin/oracle | grep libaio确认链接正常。如果还不行检查/etc/ld.so.conf.d/下有没有 oracle 的库路径。4.2 建库时 ORA-27102: out of memory现象dbca建库到 30% 左右报 ORA-27102实例起不来。原因kernel.shmmax设得比实际可用共享内存小或者kernel.shmall不够。解决ipcs -l看当前共享内存限制把shmmax调到物理内存的一半shmall调到shmmax/4096sysctl -p后重启dbca。注意 Anolis 的shmall默认值可能很小必须手动改。4.3 sqlplus 能连但中文显示乱码现象sqlplus里查中文数据全是问号或乱码。原因NLS_LANG没设或设成了WE8ISO8859P1。解决在 oracle 用户的.bash_profile里设export NLS_LANGAMERICAN_AMERICA.AL32UTF8如果数据库字符集是 ZHS16GBK 则改成AMERICAN_AMERICA.ZHS16GBK。改完source一下重新登录sqlplus。注意客户端和服务端字符集要匹配否则转换会丢数据。4.4 root.sh 执行报 “Failed to create /etc/oratab”现象root.sh跑到一半报无法创建/etc/oratab。原因/etc目录权限被改过或者 SELinux 拦截。解决先setenforce 0临时关 SELinux确认/etc是 755 且 root 可写再重跑root.sh。如果/etc/oratab已存在但内容为空手动写入orcl:/u01/app/oracle/product/11.2.0/db_1:N也能绕过。4.5 监听器起不来报 TNS-12541现象lsnrctl start后lsnrctl status显示 TNS-12541 no listener。原因listener.ora里HOST写的是主机名但/etc/hosts没解析或者端口 1521 被占用。解决cat /etc/hosts确认主机名对应 127.0.0.1netstat -tlnp | grep 1521看端口占用。如果listener.ora里HOST是主机名改成 IP 或确保 hosts 解析正确。改完lsnrctl reload再start。5. 装完之后验证、调优与一个省事的习惯装完 Oracle 11g 只是开始真正影响稳定性的是后续的验证和参数调优。我一般会跑一套最小验证sqlplus / as sysdba进去后查v$instance状态、v$datafile路径、dba_tablespaces状态、v$parameter里sga_target和pga_aggregate_target的值。然后建一张测试表插几条数据用expdp导出一遍再impdp导入确认数据泵可用。这套跑完基本能排除 90% 的安装遗留问题。调优方面Anolis 上跑 Oracle 11g 最容易忽略的是vm.swappiness。默认值 60 会导致 Oracle 的 SGA 被换出到 swap性能断崖式下跌。我一般设成 10在/etc/sysctl.d/99-oracle.conf里加vm.swappiness 10。另外vm.dirty_ratio和vm.dirty_background_ratio也建议调低到 10 和 5减少脏页堆积导致的 I/O 抖动。这些参数改完sysctl -p生效不用重启。验证项命令预期结果实例状态select status from v$instance;OPEN数据文件select name from v$datafile;路径存在且可读表空间select tablespace_name, status from dba_tablespaces;ONLINE监听lsnrctl statusREADY数据泵expdp system/xxx directorydpdir dumpfiletest.dmp tablesappuser.test_tab成功导出最后说一个我自己的习惯每次装完 Oracle我会把db_install.rsp和dbca.rsp里改过的参数单独记一个install-notes.txt连同sysctl.conf、limits.conf、.bash_profile一起打包存档。下次再装同版本直接复用这套配置省掉重新试错的时间。Anolis 的版本迭代比 Oracle 快得多今天能用的依赖包明天可能就换了名字留一份可复现的配置比什么都靠谱。希望帮到你。本文还有配套的精品资源点击获取