在 Linux 上“升级 Oracle”通常有几种不同场景,先确认你要的是哪一种,再按对应方式操作。下面按常见场景系统说明。
一、先明确:你要升级的是哪种?
- Oracle Database(数据库)
- 小版本(如 19.3 → 19.16)
- 大版本(如 11g → 19c / 21c)
- Oracle Client(客户端)
- Oracle Grid / ASM(RAC 环境)
- Oracle 软件补丁(PSU / RU / RUR)
下面以 Oracle Database 单机环境 为主说明。
二、升级前准备(非常重要)
1. 查看当前版本
sqlplus / as sysdba
SQL> select * from v$version;
2. 备份(必须)
- RMAN 全备
- 导出重要用户(expdp)
- 备份
ORACLE_HOME、/etc/oratab、listener.ora、tnsnames.ora
3. 检查操作系统
- 内核参数
- 依赖包(glibc、libaio 等)
- 空间(ORACLE_BASE 至少 10–20G 空闲)
三、小版本升级(RU / PSU 补丁)
例如:19.3 → 19.16
1. 停止数据库和监听
lsnrctl stop
sqlplus / as sysdba
shutdown immediate
2. 使用 OPatch 打补丁
$ORACLE_HOME/OPatch/opatch apply
3. 执行数据字典升级
cd $ORACLE_HOME/rdbms/admin
sqlplus / as sysdba
@catrelod.sql
4. 重启并验证
startup
select version from v$instance;
四、大版本升级(如 11g → 19c)
方式一:DBUA(推荐)
- 安装新版本 ORACLE_HOME(不覆盖旧目录)
- 启动 DBUA
$NEW_ORACLE_HOME/bin/dbua
- 按向导完成升级
方式二:手工升级(适合生产)
- 安装新 Oracle 软件
- 修改
ORACLE_HOME 指向新目录
- 执行:
@catupgrd.sql
- 编译对象:
@utlrp.sql
五、Oracle Client 升级
rpm -e oracle-instantclient*
更新:
LD_LIBRARY_PATH
PATH
tnsnames.ora
六、RAC / ASM 升级
顺序必须是:
- Grid Infrastructure
- Oracle Database
- 逐个节点滚动升级
七、常见错误
- OPatch 版本太低 → 先升级 OPatch
- 空间不足 → 清理 audit / trace
- 字符集不一致 → 升级前检查
八、我可以更具体地帮你
你可以补充:
- Oracle 版本(如 11.2 / 19c)
- Linux 发行版(RHEL / CentOS / Oracle Linux)
- 单机还是 RAC
- 升级类型(补丁 / 大版本)
我可以直接给你一步步命令级方案。