centos oracle数据库升级方法
CentOS系统升级Oracle数据库完整流程
一、升级前准备
1. 备份数据
升级前必须对数据库进行完整备份,推荐使用RMAN(Recovery Manager)进行全量备份,确保数据安全。示例命令:
rman target /
RMAN>
BACKUP DATABASE FORMAT '/u01/backup/%U.bak';
RMAN>
BACKUP CURRENT CONTROLFILE;
同时备份/etc/oratab
、listener.ora
、tnsnames.ora
等配置文件。
2. 检查系统兼容性
- 确认CentOS版本符合Oracle新版本要求(如Oracle 19c支持CentOS 7/8,Oracle 21c支持CentOS 8/Stream);
- 核对硬件配置(内存、磁盘空间、CPU)满足新版本最低需求(如Oracle 19c要求至少2GB内存);
- 使用Oracle官方提供的Pre-Upgrade Information Tool(位于新Oracle Home的
bin
目录下,如$ORACLE_HOME/bin/preupgrd.sql
)分析现有数据库,生成兼容性报告,提前解决潜在问题(如不兼容的参数、缺失的权限)。
3. 安装必要依赖包
通过yum
安装Oracle要求的系统依赖包,避免升级失败:
yum install -y gcc libaio-devel compat-libstdc++-33 elfutils-libelf-devel glibc-devel glibc-headers gcc-c++ libstdc++-devel unixODBC unixODBC-devel ksh
4. 准备新版本Oracle软件
- 从Oracle官方网站下载对应CentOS版本的新Oracle Database软件包(如
.zip
或.tar.gz
格式); - 解压到目标目录(如
/u01/app/oracle/product/19.0.0/dbhome_1
),并设置正确的权限(chown -R oracle:oinstall /u01/app/oracle
)。
二、停止现有数据库服务
升级前需完全停止数据库实例及监听器,避免数据损坏:
# 切换至oracle用户
su - oracle
# 停止监听器
lsnrctl stop
# 关闭数据库实例(IMMEDIATE模式确保数据一致性)
sqlplus / as sysdba <
<
EOF
SHUTDOWN IMMEDIATE;
EXIT;
EOF
三、安装新版本Oracle软件
进入新Oracle Home目录,运行安装脚本(图形界面或静默模式):
# 图形界面安装(需X11转发)
./runInstaller
# 静默模式安装(适用于自动化部署)
./runInstaller -silent -responseFile /path/to/response_file.rsp
安装完成后,运行opatch apply
应用最新补丁(如CPU、PSU),确保软件安全性。
四、升级数据库实例
1. 使用DBUA(Database Upgrade Assistant,推荐)
DBUA是Oracle提供的图形化升级工具,可自动化完成大部分升级步骤,减少人为错误:
# 切换至oracle用户
su - oracle
# 启动DBUA(指定新Oracle Home和数据库SID)
dbua -silent -upgradeDatabase -sourceDB /u01/app/oracle/product/12.1.0/dbhome_1/dbs/catalog.cat -gdbName ORCLCDB -sid ORCLCDB -memoryTarget 4G -controlFileReUse
或通过命令行启动:
dbua -sid ORCLCDB -oracleHome /u01/app/oracle/product/19.0.0/dbhome_1
DBUA会自动执行预升级检查、升级脚本运行、后升级验证等步骤,升级过程中可通过日志文件($ORACLE_HOME/cfgtoollogs/dbua/logs/
)监控进度。
2. 手动升级(命令行)
若需更灵活的控制,可选择手动升级:
# 设置环境变量
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=ORCLCDB
# 运行升级脚本
sqlplus / as sysdba <
<
EOF
STARTUP UPGRADE;
@?/rdbms/admin/catctl.pl ?/rdbms/admin/catupgrd.sql;
SHUTDOWN IMMEDIATE;
STARTUP;
EXIT;
EOF
catctl.pl
会并行运行升级脚本,缩短停机时间。
五、升级后验证
1. 检查数据库版本
sqlplus / as sysdba <
<
EOF
SELECT * FROM v\$version;
EXIT;
EOF
输出应显示新版本号(如Oracle Database 19c Enterprise Edition Release 19.0.0.0.0
)。
2. 检查无效对象
升级后可能存在无效的对象(如存储过程、视图),需修复:
sqlplus / as sysdba <
<
EOF
SET LINESIZE 500 PAGESIZE 600;
COL COMP_NAME FOR A30;
SELECT COMP_ID, COMP_NAME, VERSION, STATUS FROM DBA_REGISTRY ORDER BY COMP_ID;
COL ACTION_TIME FOR A30;
COL COMMENTS FOR A30;
SELECT ACTION_TIME, ACTION, VERSION, COMMENTS FROM SYS.DBA_REGISTRY_HISTORY ORDER BY ACTION_TIME DESC;
SELECT COUNT(*) FROM DBA_OBJECTS WHERE STATUS != 'VALID';
EXIT;
EOF
若存在无效对象,可使用utlrp.sql
重新编译:
sqlplus / as sysdba <
<
EOF
@?/rdbms/admin/utlrp.sql;
EXIT;
EOF
3. 验证配置文件
检查$ORACLE_HOME/network/admin
目录下的listener.ora
、tnsnames.ora
是否指向新Oracle Home,确保网络连接正常。
六、升级后优化
- 调整内存参数:根据新版本要求修改
sga_target
、pga_aggregate_target
等参数(如Oracle 19c默认启用自动内存管理); - 更新统计信息:收集表、索引的统计信息,优化查询性能;
exec dbms_stats.gather_schema_stats(user);
- 监控日志:检查
alert.log
($ORACLE_BASE/diag/rdbms/$ORACLE_SID/trace/alert_$ORACLE_SID.log
)是否有错误信息。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos oracle数据库升级方法
本文地址: https://pptw.com/jishu/726662.html