news 2026/6/19 12:28:55

【Oracle】Ubuntu 部署 Oracle 10g 的完整实战复盘

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Oracle】Ubuntu 部署 Oracle 10g 的完整实战复盘

说实话,如果是新项目,我绝对不会首选 Oracle 10g。但工作中你难免会遇到一些老系统的迁移工作,这就没有办法了。之前我也分享过使用 Docker 来进行快速部署,但并不是每个项目都能允许我这样做,因此 Oracle 的 Linux 部署多多少少也要会一点(可能是公司的业务缘故,我参与的项目用 Oracle 的还是比较多)。

但不得不说 Oracle 10g 对系统环境的苛刻程度,反而非常适合用来测试自己的 Linux 基本功。

一、Oracle 部署的难点不在 Oracle

真正的难点在这三点:

  1. Oracle 假设你在用RHEL / CentOS
  2. Ubuntu 的库版本、包名、目录结构都不一样
  3. 安装脚本写死了很多“旧时代假设”

过往的经验告诉我,Oracle 安装失败,80% 是系统没准备好,而不是安装步骤错了。

二、安装前准备

1.操作系统选择

Oracle 10g 对内核和 glibc 非常挑剔。在 Ubuntu 上,我默认遵循三个原则:

  • 尽量使用 LTS 版本
  • 不追新内核(重点)
  • 不混用奇怪的第三方源

2.创建 Oracle 专用用户与用户组

这个是多次惨痛经历换来的教训,不要用 root 跑 Oracle

groupaddoinstallgroupadddbauseradd-g oinstall -G dba oraclepasswdoracle

在 Oracle 的世界里,用户就相当于“安全边界”、“权限模型”和“安装与运行的唯一载体”,这就是底线。

3.目录规划

mkdir-p /u01/app/oraclechown-R oracle:oinstall /u01chmod-R775/u01

永远不用随意路径,免得出现奇奇怪怪的情况

三、内核参数与系统限制

这是最关键、最容易被忽略的一步

1.修改/etc/sysctl.conf

fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.shmall = 2097152 kernel.shmmax = 2147483648 kernel.shmmni = 4096 net.ipv4.ip_local_port_range = 9000 65500

然后:

sysctl -p

以上参数不能“照抄”,这是 Oracle 对系统资源的最低预期而已,建议根据用户的实际情况进行配置。

2.用户级限制/etc/security/limits.conf

oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536

如果这里没配置好,那么你会发现你安装的时候虽然能够通过,但数据库启动时会死的很难看。

四、Ubuntu 与 Oracle 依赖冲突(重点)

Oracle 10g 依赖了一堆早已被 Ubuntu 淘汰的库。

我遇到最多的是 libaio、libstdc++5 和 gcc 的版本不匹配问题。

我的解决办法是:

  • 缺什么 → 查包名 → 找 Ubuntu 对应版本
  • 没有 → 用兼容包 / 手动安装
  • 能不用--force就不用

坦白说,有时候真的会被折腾到没脾气,因此现在我是宁可多花时间补依赖,也不轻易破坏系统包管理一致性。

五、Oracle 安装

如果将上面的难关都过了,后面基本上就没什么问题了。

su- oracle ./runInstaller

安装过程我只盯三件事:

  1. 警告(Warning)和错误(Error)
  2. 是否卡在 linking 阶段
  3. 是否提示 kernel / OS 不支持

很多“看起来可怕的警告”,其实都可以忽略的。譬如,系统版本校验失败,swap 大小不满足推荐值等。但当出现“共享内存不足”,“文件句柄不够”、“权限错误”的时候就应该注意了,这些才是致命的。

六、root.sh

安装过程中会提示执行:

/u01/app/oracle/oraInventory/orainstRoot.sh /u01/app/oracle/product/10.2.0/db_1/root.sh

这是我唯一一次允许 root 介入 Oracle 安装流程(这没有办法)。但原则上只执行安装器明确要求的 root 操作,其余一律不要多做。

七、环境变量

oracle用户下的.bash_profile我是这样写的:

exportORACLE_BASE=/u01/app/oracleexportORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1exportORACLE_SID=orclexportPATH=$PATH:$ORACLE_HOME/bin

以前的我会选择将配置拆的稀碎,然后到处引用。经过多年的淬炼,现在的我不追求“灵活”,只追求“可读”、“可复制”、“可复现”。

八、我最怕的几类错误

当出现:

  • ORA-27102: out of memory
  • ORA-01034: ORACLE not available
  • ORA-12541: TNS:no listener

我知道肯定是我系统又没有配置好了,因为这些错误的出现 90% (盲猜)指向:

  • 内核参数
  • 用户限制
  • 环境变量

这意味着我又要重头检查一遍了,艹。

九、真正学到的东西

Oracle 并没有教会我如何使用数据库,它逼着我学会了如何对待一台 Linux 服务器。

从那之后,我对系统的态度不再是“尽量让它跑起来”,而是“在明确理解代价的前提下,让它长期、可控、可恢复地运行”。

这可能是我从 Oracle 安装这件事里,真正带走、并且一直沿用至今的东西。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/19 11:25:31

央企网页应用中,JAVA如何支持多附件的分块上传?

“救命啊!毕业设计要翻车了!” 作为福州某高校计算机系最会摸鱼的大三咸鱼,最近被毕业设计逼得差点把键盘啃了。导师让我做个文件管理系统,要求支持10G大文件上传、断点续传、文件夹层级保留、全浏览器兼容…最要命的是必须用原生…

作者头像 李华
网站建设 2026/6/19 11:26:40

通义千问3-14B显存峰值高?流式输出优化部署案例

通义千问3-14B显存峰值高?流式输出优化部署案例 1. 为什么你的Qwen3-14B显存爆了? 你有没有遇到这种情况:明明RTX 4090有24GB显存,加载一个FP8量化后才14GB的Qwen3-14B模型,结果一跑就OOM(Out of Memory&…

作者头像 李华
网站建设 2026/6/19 11:25:30

手把手教你部署GPT-OSS-20B,网页端玩转开源大模型

手把手教你部署GPT-OSS-20B,网页端玩转开源大模型 你是否也曾在深夜翻遍GitHub,只为找到一个能在本地运行、又足够聪明的开源大模型?现在,这个愿望终于可以实现了。今天我们要聊的是 GPT-OSS-20B —— 一个社区重构的高性能语言模…

作者头像 李华
网站建设 2026/6/19 11:24:37

用Qwen-Image-Layered做了个AI修图工具,效果超出预期

用Qwen-Image-Layered做了个AI修图工具,效果超出预期 最近在尝试一个非常有意思的图像处理镜像——Qwen-Image-Layered。它最让我惊艳的地方,是能把一张普通图片自动拆解成多个RGBA图层,每个图层都对应画面中的不同元素。这意味着你可以像在…

作者头像 李华
网站建设 2026/6/13 20:10:23

通义千问3-14B推理中断?长上下文稳定运行部署教程

通义千问3-14B推理中断?长上下文稳定运行部署教程 1. 为什么Qwen3-14B常在长文本推理中“卡住”——不是模型不行,是环境没配对 你是不是也遇到过:加载Qwen3-14B后,输入一段20万字的PDF摘要,模型刚吐出几行就静默、显…

作者头像 李华