资讯专栏INFORMATION COLUMN

Oracle数据库11.2.0.4降级11.2.0.3详细讲解

IT那活儿 / 1929人阅读
Oracle数据库11.2.0.4降级11.2.0.3详细讲解
一. 背景

两节点集群数据库11.2.0.3升级11.2.0.4,并升级PSU,因双中心无法满足同时升级条件,降级为原来版本11.2.0.3。原数据库家目录未删除,执行数据库回退。

11.2.0.3数据库家目录
  export ORACLE_HOME=$ORACLE_BASE/product/11.2.0.3/db1
11.2.0.4数据库家目录
  export ORACLE_HOME=$ORACLE_BASE/product/11.2.0.3/db11204


二. 方案评估

  1. 因升级11.2.0.4之后应用了数据库PSU需回退。
  2. 集群软件版本可以比数据库版本高,只回退数据库。


三. 方案实施

1. 使用opatch auto回退数据库补丁,指定ORACLE_HOME,只回退DB的PSU,这里使用root用户,集群内所有节点逐个回退补丁
root# /db/oracle/product/11.2.0.3/db11204/OPatch/opatch auto /db/soft/28429134 -rollback -oh /db/oracle/product/11.2.0.3/db11204

2. 启动其中一个节点,执行回退编译数据字典,替换为数据库SID前缀

db$ export ORACLE_HOME=$ORACLE_BASE/product/11.2.0.3/db11204
  db$ export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
  db$ cd $ORACLE_HOME/rdbms/admin
  db$ sqlplus /nolog
  SQL> CONNECT / AS SYSDBA
  SQL> STARTUP
  SQL> @catbundle_PSU__ROLLBACK.sql
  SQL> QUIT

3. 确认数据库PSU回退完成

SQL> select * from dba_registry_history;

4. 降级准备

1)确保所有组件状态为可用,执行utlrp.sql重新编译无效对象

2)如果配置了EM工具,需要停止,并删除sysman用户,降级之后重新配置

db$ $ORACLE_HOME/bin/emctl stop dbconsole
  SQL> DROP USER sysman CASCADE;

3) 集群数据库需要设置参数CLUSTER_DATABASE=FALSE,降级完成之后再修改为TRUE

SQL> alter system set CLUSTER_DATABASE=FALSE sid=* scope=spfile;

5. 停所有节点数据库实例,在其中一个节点以DOWNGRADE启动实例,执行catdwgrd.sql脚本

db$ srvctl stop database -d
  db$ cd $ORACLE_HOME/rdbms/admin
  db$ sqlplus /nolog
  SQL> CONNECT / AS SYSDBA
  SQL> STARTUP DOWNGRADE
  SQL> @catdwgrd.sql
  SQL> QUIT

6. 切换环境变量,在其中一个节点以UPGRADE启动实例,执行catrelod.sql脚本重新加载降级数据库中所有数据库组件的相应版本

db$ export ORACLE_HOME=$ORACLE_BASE/product/11.2.0.3/db1
  db$ export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
  db$ cd $ORACLE_HOME/rdbms/admin
  db$ sqlplus /nolog
  SQL> CONNECT / AS SYSDBA
  SQL> SHUT IMMEDIATE
  SQL> STARTUP UPGRADE
  SQL> @catrelod.sql
  SQL> QUIT

7. 修改CLUSTER_DATABASE=TRUE

db$ sqlplus /nolog
  SQL> CONNECT / AS SYSDBA
  SQL> alter system set CLUSTER_DATABASE=TRUE sid=* scope=spfile;

8. 配置集群DB配置信息,需要使用11.2.0.4的srvctl修改,修改后11.2.0.3的srvctl才能正常使用

db$ export ORACLE_HOME=$ORACLE_BASE/product/11.2.0.3/db11204
  db$ export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
  db$ srvctl downgrade database -d -o /db/oracle/product/11.2.0.3/db1 -t 11.2.0.3.0

9. 修改集群所有节点.bash_profile环境变量ORACLE_HOME为11.2.0.3家目录路径

export ORACLE_HOME=$ORACLE_BASE/product/11.2.0.3/db1

10. 启动所有节点实例,检查数据库日志确认数据库正常,若存在失效对象执行utlrp.sql进行编译

db$ srvctl stop database -d
  db$ srvctl start database -d
  db$ cd $ORACLE_HOME/rdbms/admin
  db$ sqlplus /nolog
  SQL> CONNECT / AS SYSDBA
  SQL> @utlrp.sql
  SQL> QUIT

11. 至此数据库回退完成,检查集群各组件状态无误,重新执行数据库备份等。


四. 总 结

  1. 回退操作直接操作修改数据字典,存在不可预估的风险,回退要做好数据备份。
  2. 期间涉及不通版本见环境变量切换,执行前要确保使用正确的环境变量。


END


更多精彩干货分享

点击下方名片关注

IT那活儿

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129831.html

相关文章

  • DBASK问答集萃第四期

    摘要:问题九库控制文件扩展报错库的扩展报错,用的是裸设备,和还是原来大小,主库的没有报错,并且大小没有变,求解释。专家解答从报错可以看出,控制文件从个块扩展到个块时报错,而裸设备最大只支持个块,无法扩展,可以尝试将参数改小,避免控制文件报错。 链接描述引言 近期我们在DBASK小程序新关联了运维之美、高端存储知识、一森咖记、运维咖啡吧等数据领域的公众号,欢迎大家阅读分享。 问答集萃 接下来,...

    SKYZACK 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<