zoukankan      html  css  js  c++  java
  • Oracle升级前备份和失败回退

    一、升级前备份
    1、软件备份
    [root@localhost backup]# su - oracle
     
    [oracle@localhost ~]$ cd $ORACLE_HOME
    [oracle@localhost db_1]$ pwd
    /db/oracle/oracle/product/10.2.0/db_1
    [oracle@localhost db_1]$ tar -cvzf ora_home.tar.gz ./

    软件升级主要是对ORACLE_HOME下的文件进行修改,先对其打tar包。
     
    2、数据文件备份
    需要备份的文件主要是spfile、controlfile、datafile,如果是采取的冷备份方式直接cp的方式备份数据文件所在的目录即可,而如果是热备,则需要备份controlfile和datafile以及备份的control中未完全记录的archivelog。
    RMAN> run{
    2> allocate channel disk1 type disk;
    3> delete obsolete;
    4> crosscheck backup;
    5> delete expired backup;
    6> backup database format '/backup/db_%d_%T_%s'
    7> plus archivelog delete all input format '/backup/arch_%d_%T_%s';
    8> backup current controlfile format '/backup/ctl_%d_%T_%s';
    9> release channel disk1;
    10> }
    上述是自己经常用的全备份脚本。
     
    接下来正常关闭数据库,此时buffer cache中的数据已经全部sync到disk中去,接下来可以放心的升级了!
    RMAN> shutdown immediate;
    升级软件前请先关闭所有使用ORACLE_HOME下面的对象的进程,不然后续可能无法正常打patch。
    这里也可以利用oracle 10R2中的restore point功能来实现升级,由于生产库一般是不开启flashback database。
    SQL>shutdown immediate;
    SQL>startup mount;
    SQL>create restore point upgrade guarantee flashback database;
    这里创建一个restore point upgrade,而后如果升级失效可以直接回退这个点,这样也就不需要备份数据文件和控制文件了,restore point是记录在控制文件中,而后相应的记录改变都会记录在闪回区中,所以需要保证闪回恢复区的容量足够大,相对于rman的恢复更节省了时间(不需要restore数据文件)。

    二、回退过程(to 11.2.0.2)
    1、关闭RAC所有节点的实例
    2、在所有节点上关闭数据库实例,并在一个节点上启动数据库到mount模式进行闪回。
    $ sqlplus / as sysdba
    SQL> startup mount;
    SQL> SELECT NAME, SCN, TIME, DATABASE_INCARNATION#, GUARANTEE_FLASHBACK_DATABASE, STORAGE_SIZE  FROM V$RESTORE_POINT WHERE GUARANTEE_FLASHBACK_DATABASE='YES';
    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ --- ------------
      NAME                                                 SCN                             TIME                        DATABASE_INCARNATION#  GUA STORAGE_SIZE
    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ --- -----------
    UPGRADE_ROLLBACK                  1227989   31-MAR-12 10.21.06.000000000 AM       1                                       YES               910868480  
                    
    SQL> flashback database to restore point UPGRADE_ROLLBACK;
    Flashback complete.

    SQL> alter database open resetlogs;
    Database altered.

  • 相关阅读:
    Python+MySQL学习笔记(一)
    MySQL的基本操作
    2016.08.15
    使用vue为image的src动态赋值
    json对象与json字符串的转化
    js三元运算符
    uniapp vue中的短信验证码
    设计模式
    回调函数
    自定义注解
  • 原文地址:https://www.cnblogs.com/andy6/p/6158746.html
Copyright © 2011-2022 走看看