升级前需查阅Oracle官方文档,确认新版本与操作系统版本(如Oracle 12c及以上不支持Linux 6以下版本)、现有应用程序(如自定义PL/SQL程序、第三方工具)、硬件配置(如CPU架构、内存容量)的兼容性,避免因不兼容导致升级失败。
使用RMAN(Recovery Manager)进行全库备份(包括数据文件、控制文件、归档日志),并验证备份的可恢复性(如通过RESTORE VERIFY ONLY命令)。同时备份数据库配置文件(如listener.ora、tnsnames.ora、spfile),确保升级异常时可快速恢复。
kernel.shmall、kernel.shmmax,需满足Oracle内存需求)、文件句柄(fs.file-max,建议设置为10万以上)、异步I/O(fs.aio-max-nr,建议设置为65536以上)、网络参数(net.core.rmem_max、net.core.wmem_max,建议设置为1MB以上),确保满足Oracle运行要求。libaio、libaio-devel、gcc、make),可通过yum install或rpm命令安装。ORACLE_HOME所在分区有足够空间(建议预留2倍当前数据库大小),系统有足够内存(建议升级后内存占用不超过物理内存的70%)和CPU资源。Oracle数据库更新主要通过补丁集(PSU/CPU)和个别补丁实现,常用工具为opatch。
opatch版本符合补丁要求(如Oracle 11.2.0.4需opatch 11.2.0.3.16及以上),通过opatch version命令检查版本,通过opatch prereq CheckApplicable命令验证补丁适用性。ORACLE_HOME目录(如使用tar命令打包),防止补丁应用失败导致数据丢失。sqlplus / as sysdba执行shutdown immediate)、监听器(lsnrctl stop)、Enterprise Manager进程,避免补丁应用冲突。opatch apply命令(如opatch apply p24436313_112040_Linux-x86-64.zip),等待补丁应用完成并检查日志(位于$ORACLE_HOME/cfgtoollogs/opatch目录)。opatch lsinventory命令查看已安装补丁列表,确认目标补丁已成功安装。@$ORACLE_HOME/rdbms/admin/utlrp.sql脚本,编译数据库中的无效对象(如存储过程、函数、视图),避免因对象无效导致业务异常。$ORACLE_HOME/cfgtoollogs/catbundle或$ORACLE_BASE/cfgtoollogs/catbundle目录下的日志文件(如catbundle_PSU_<SID>_APPLY_<TIMESTAMP>.log),确认补丁应用无错误。Oracle数据库版本升级分为物理升级(直接升级现有数据库)和逻辑升级(通过数据泵导出导入数据),常用方法为物理升级。
/u01/app/oracle/product/19.3.0),避免覆盖现有版本,安装时选择“自定义安装”并勾选“Database软件”。preupgrade.jar工具生成升级脚本和报告(如java -jar preupgrade.jar -dbhome $ORACLE_HOME -outputDir /tmp/upgrade),检查数据库兼容性问题(如不支持的参数、对象)。sqlplus / as sysdba执行shutdown immediate)、监听器(lsnrctl stop)。STARTUP UPGRADE命令启动数据库,此时数据库处于升级状态,允许执行升级脚本。$ORACLE_HOME/rdbms/admin/dbupgrade.sql),脚本会自动升级数据字典、存储过程、触发器等数据库对象,等待脚本执行完成。SHUTDOWN IMMEDIATE关闭数据库,再使用STARTUP命令正常启动数据库,验证数据库版本(SELECT * FROM v$version;)。utlrp.sql脚本,编译数据库中的无效对象,确保所有对象正常运行。$ORACLE_HOME),释放磁盘空间。top、vmstat等工具监控CPU、内存、磁盘I/O使用率,避免资源耗尽导致升级失败。