阅读量:6
CentOS环境下Oracle数据库更新通用步骤
一、升级前准备工作
- 备份数据
升级前必须对数据库进行完整备份,包括使用RMAN进行全量备份(rman target / BACKUP DATABASE;)或Data Pump导出(expdp system/password@db schemas=SCHEMA_NAME dumpfile=SCHEMA_NAME.dmp),确保数据安全。 - 检查系统兼容性
- 确认CentOS系统版本符合Oracle新版本要求(如CentOS 7.9支持Oracle 19c及以上);
- 检查硬件资源(内存、磁盘空间:
ORACLE_HOME需预留至少10GB以上空间); - 验证内核参数(如
shmmax、shmall、semmsl等)是否满足Oracle新版本要求,可通过/etc/sysctl.conf调整并执行sysctl -p生效。
- 下载新版本软件与补丁
从Oracle官方网站下载目标版本的Oracle Database软件包(如19c、21c的.zip安装包)及所需补丁(如OPatch工具、CPU/PSU补丁),并上传至CentOS服务器。 - 环境预检
- 确认Oracle用户及组(
oinstall、dba)已存在,若不存在则创建(groupadd oinstall; groupadd dba; useradd -g oinstall -G dba oracle; passwd oracle); - 检查当前Oracle版本(
sqlplus / as sysdba SELECT * FROM v$version;)及补丁级别(SELECT ACTION_TIME, VERSION, COMMENTS FROM sys.DBA_REGISTRY_HISTORY;)。
- 确认Oracle用户及组(
二、停止Oracle相关服务
- 停止监听器
使用lsnrctl命令停止监听器:lsnrctl stop。 - 关闭数据库实例
以sysdba身份登录SQL*Plus,执行立即关闭:若无法立即关闭,可尝试sqlplus / as sysdba SHUTDOWN IMMEDIATE;SHUTDOWN ABORT(需谨慎,可能导致数据不一致)。
三、安装新版本Oracle软件
- 解压软件包
将下载的Oracle软件包解压至目标目录(如/u01/app/oracle/product/19.0.0/dbhome_1):unzip /path/to/oracle_database_19c_software.zip -d /u01/app/oracle/product/19.0.0/dbhome_1 - 设置环境变量
编辑/etc/profile或用户.bash_profile,添加以下内容(根据实际路径调整):执行export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1 export ORACLE_SID=orcl # 替换为实际SID export PATH=$ORACLE_HOME/bin:$PATHsource /etc/profile使变量生效。 - 应用补丁(若有)
使用OPatch工具安装下载的补丁(如OPatch本身或CPU补丁):应用后检查补丁是否成功(cd /u01/app/oracle/product/19.0.0/dbhome_1/OPatch ./opatch apply /path/to/patch/p6880880_190000_Linux-x86-64.zip./opatch lsinventory)。
四、升级数据库实例
- 选择升级方式
- 图形化工具(推荐新手):使用Database Upgrade Assistant(DBUA),执行
/u01/app/oracle/product/19.0.0/dbhome_1/dbua/runInstaller,按向导提示选择“升级现有数据库”即可。 - 命令行方式(适合自动化):
升级过程中会自动执行脚本(如cd /u01/app/oracle/product/19.0.0/dbhome_1/rdbms/admin sqlplus / as sysdba @catupgrd.sqlcatupgrd.sql、utlrp.sql编译无效对象)。
- 图形化工具(推荐新手):使用Database Upgrade Assistant(DBUA),执行
- 监控升级过程
查看alert_(位于.log $ORACLE_BASE/diag/rdbms/)日志文件,跟踪升级进度及错误信息。/ /trace/
五、升级后验证与优化
- 检查版本信息
登录SQL*Plus,执行以下命令确认升级成功:确保所有组件状态为SELECT * FROM v$version; -- 查看数据库版本 SELECT COMP_ID, COMP_NAME, VERSION, STATUS FROM DBA_REGISTRY; -- 查看组件版本及状态VALID。 - 处理无效对象
编译无效对象(如存储过程、视图),执行:@?/rdbms/admin/utlrp.sql -- 自动编译无效对象 SELECT COUNT(*) FROM dba_objects WHERE status != 'VALID'; -- 检查剩余无效对象数量 - 优化初始化参数
根据新版本要求调整内存参数(如SGA_TARGET、PGA_AGGREGATE_TARGET),例如:重启数据库使参数生效:ALTER SYSTEM SET SGA_TARGET=2G SCOPE=SPFILE; ALTER SYSTEM SET PGA_AGGREGATE_TARGET=1G SCOPE=SPFILE;sqlplus / as sysdba SHUTDOWN IMMEDIATE; STARTUP;。 - 测试功能与性能
执行常规业务操作(如查询、插入),验证数据库功能是否正常;使用AWR或ASH报告分析性能变化。
六、注意事项
- 停机时间:升级过程需停机,建议在业务低峰期操作,并提前通知相关人员;
- 回滚方案:若升级失败,可通过备份恢复至旧版本(需保留旧版本的
ORACLE_HOME); - 文档记录:详细记录每一步操作(如补丁号、升级时间、遇到的问题及解决方法),便于后续排查。