温馨提示×

如何在linux升级oracle

小樊
33
2026-10-21 23:48:26
栏目: 云计算

在 Linux 上升级 Oracle 数据库(以 Oracle Database 为例,常见场景是从 11g/12c/19c 升级到更高版本,如 19c→21c 或 19c→23c)通常有以下几种方式。下面我按最常见、最稳妥的思路给你说明。


一、升级前准备(非常重要)

1. 查看当前环境

sqlplus / as sysdba
SQL> select version from product_component_version;
uname -a
cat /etc/os-release

2. 阅读官方升级文档(必须)

Oracle 官方文档最权威:

  • https://docs.oracle.com/en/database/
  • 搜索:Database Upgrade Guide <版本>

3. 备份(绝不能省略)

  • RMAN 全备
  • 导出重要 schema(expdp)
  • 备份 ORACLE_HOME 和参数文件
rman target /
RMAN> backup database plus archivelog;

4. 检查升级前置条件

$ORACLE_HOME/jdk/bin/java -jar \
$ORACLE_HOME/rdbms/admin/preupgrade.jar

或(12c 以后):

$ORACLE_HOME/bin/dbupgrade -c

二、常见升级方式

方式一:原地升级(In-Place Upgrade)

同一台服务器、同一 ORACLE_HOME 升级

适合:

  • 小版本升级(19.3 → 19.20)
  • 维护窗口充足

步骤:

  1. 安装新补丁(OPatch)
  2. 执行升级工具
dbupgrade
  1. 编译无效对象
@?/rdbms/admin/utlrp.sql

⚠️ 风险较高,回退困难


方式二:新家目录升级(Out-of-Place,推荐)

安装新 ORACLE_HOME,再升级数据库

步骤:

  1. 安装新版本 Oracle 软件(新 ORACLE_HOME)
  2. 拷贝参数文件、密码文件
  3. 使用新 HOME 启动并升级
export ORACLE_HOME=/u01/app/oracle/product/21c
dbupgrade

✅ 可快速回退
✅ 生产环境推荐


方式三:Data Pump 逻辑升级(跨大版本)

导出 → 新建库 → 导入

expdp system/pwd full=y dumpfile=full.dmp
impdp system/pwd full=y dumpfile=full.dmp

适合:

  • 11g → 19c
  • 操作系统更换

三、升级后检查

select status from v$instance;
select * from dba_registry_sqlpatch;
@?/rdbms/admin/utlrp.sql

四、常见坑点

  • ❌ 直接用 root 升级
  • ❌ 忽略 OS 包依赖
  • ❌ 不备份就升级
  • ❌ 忽略 COMPATIBLE 参数

五、如果你愿意,我可以更具体帮你

你可以告诉我:

  1. 当前 Oracle 版本(如 11.2.0.4 / 19.3)
  2. 目标版本(如 19c / 21c)
  3. Linux 发行版(RHEL / CentOS / Oracle Linux)
  4. 单实例还是 RAC

我可以直接给你一步一步可执行的命令清单。

0 踩