oracle在centos上如何升级
小樊
42
2025-10-25 22:53:12
Oracle在CentOS上的升级流程与注意事项
一、升级前准备
1. 兼容性检查
- 操作系统版本:确认CentOS版本符合Oracle目标版本的最低要求(如Oracle 19c需CentOS 6.7及以上,Oracle 21c需CentOS 8及以上);若系统版本过旧,可通过安装Oracle提供的
oraclelinux-release包模拟兼容环境(如将CentOS 8映射为Oracle Linux 8)。
- 硬件要求:检查服务器CPU(建议多核)、内存(Oracle 19c建议至少4GB,21c建议8GB及以上)、存储(足够空间存放备份及升级文件)是否符合新版本要求。
- 软件包依赖:安装Oracle要求的Linux系统包(如
binutils、compat-libstdc++、gcc、glibc、libaio、sysstat等),可通过rpm -q命令验证版本是否符合要求。
2. 备份数据
- 使用RMAN工具执行完整数据库备份(包括数据文件、控制文件、归档日志),或通过
expdp/impdp导出数据;同时备份$ORACLE_HOME目录、/etc/oratab文件、密码文件(orapwd生成的PWD<sid>.ora)及监听配置文件(listener.ora、tnsnames.ora)。
3. 环境配置
- 用户与组:确保Oracle用户属于
dba、oper组(如未创建oper组,可通过groupadd oper添加,并将Oracle用户加入usermod -aG oper oracle)。
- 环境变量:编辑Oracle用户的
~/.bash_profile文件,设置ORACLE_BASE(如/u01/app/oracle)、ORACLE_HOME(如/u01/app/oracle/product/19.0.0/dbhome_1)、ORACLE_SID(如orcl)、PATH(包含$ORACLE_HOME/bin)等变量,执行source ~/.bash_profile使配置生效。
二、具体升级步骤
1. 关闭现有Oracle服务
- 使用
sqlplus以sysdba身份登录数据库,执行SHUTDOWN IMMEDIATE关闭数据库实例;
- 执行
lsnrctl stop关闭监听服务;
- 若安装了OEM(企业管理器),执行
emctl stop dbconsole关闭OEM控制台。
2. 安装新版本Oracle软件
- 解压Oracle目标版本软件包(如
oracle_database_19c_linux_x86_64.zip)至ORACLE_HOME目录(如/u01/app/oracle/product/19.0.0/dbhome_1);
- 运行
runInstaller脚本,选择“升级现有数据库”选项,跟随向导配置ORACLE_HOME路径、组件选择(如选择“企业版”),完成软件安装;
- 安装完成后,在
root用户下执行$ORACLE_HOME/root.sh脚本(用于配置系统权限)。
3. 升级数据库实例
- 自动升级(推荐):使用Database Upgrade Assistant(DBUA)工具,执行
dbua命令(位于$ORACLE_HOME/bin目录),选择“Upgrade Oracle Database”选项,跟随向导选择源数据库(ORACLE_HOME)和目标数据库(新ORACLE_HOME),完成实例升级;
- 手动升级:若需自定义升级流程,可执行
sqlplus / as sysdba,输入STARTUP UPGRADE启动数据库至升级模式;执行@?/rdbms/admin/catupgrd.sql脚本(升级数据字典);升级完成后,执行SHUTDOWN IMMEDIATE关闭数据库,再执行STARTUP正常启动;最后执行@?/rdbms/admin/utlrp.sql编译无效的PL/SQL对象。
三、升级后验证与优化
1. 验证升级结果
- 执行
SELECT * FROM v$version;查看数据库版本,确认是否为目标版本;
- 执行
SELECT COMP_NAME, VERSION, STATUS FROM SYS.DBA_REGISTRY;检查所有组件状态(应为VALID);
- 执行
SELECT * FROM utl_recomp_errors;查看是否有编译错误(若有错误需逐一修复)。
2. 优化配置
- 调整内存参数:根据新版本要求修改
sga_target、pga_aggregate_target等参数(如Oracle 19c建议开启自动内存管理MEMORY_TARGET);
- 更新兼容性参数:检查
COMPATIBLE参数(如Oracle 19c默认值为19.0.0),确保其不低于升级前的版本且符合应用需求;
- 清理旧文件:删除旧版本
ORACLE_HOME目录(如/u01/app/oracle/product/11.2.0/dbhome_1),释放存储空间。
3. 监控与回滚
- 监控性能:使用
AWR(自动工作负载仓库)、ASH(活动会话历史)工具监控数据库性能,对比升级前后的响应时间、吞吐量等指标;
- 回滚计划:若升级失败,可通过备份数据恢复至原版本(如使用RMAN恢复数据文件,重新启动数据库至升级前状态)。
四、关键注意事项
- 内核参数调整:若升级至Oracle 19c及以上版本,需确保系统内核参数符合要求(如
vm.hugetlb_shm_group设置为dba组ID,kernel.sem、shmmax等参数足够大)。
- SELinux与防火墙:升级前关闭SELinux(
setenforce 0)和防火墙(systemctl stop firewalld),避免端口冲突或权限问题;升级后可重新开启,但需配置相应规则允许Oracle服务通信。
- 日志分析:升级过程中需监控
alert.log(位于$ORACLE_BASE/diag/rdbms/<sid>/<sid>/trace/目录)和install.log(位于$ORACLE_HOME/cfgtoollogs/dbua目录)日志,及时处理错误(如ORA-错误代码)。