Oracle升级前备份和失败回退

摘要:
RMAN˃运行{2˃allocatechanneldsk1typedisk;3˃删除;4˃交叉检查备份;5˃删除预期备份;6˃备份数据库格式'/backup/db_%d_%T_%s'7˃plusarchivelogdeletealinputformat'/backup/arch_%d_%T%s';8˃备份当前控制文件格式'/bbackup/ctl_%d_%T_%s';9˃releasechanneldsk1;10˃}以上是您经常使用的完整备份脚本。接下来,正常关闭数据库。此时,缓冲区缓存中的所有数据都已同步到磁盘。接下来,您可以放心升级!RMAN˃shutdownimmediate;升级软件之前,请关闭所有ORACLE _ HOME下对象的进程。否则,您可能无法正常打补丁。oracle 10R2中的restorepoint函数也可用于升级生产数据库。
一、升级前备份
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.

免责声明:文章转载自《Oracle升级前备份和失败回退》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇二分类评估指标FTP协议的粗浅学习--利用wireshark抓包分析相关tcp连接下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Oracle字符串拼接

用 || 来进行字符串拼接,例: 字符串、日期类型、数字类型间也可以拼接, 拼接时数字类型和日期类型会被当成字符串处理 例:   除此之外可以用concat()函数来连接字符串 例:   如果要进行多个字符串的拼接,可以使用多个concat()函数嵌套使用   注:和MySql的CONCAT()函数不同,Oracle只支持两个参数  ...

DISPLAY变量和xhost(原创)

DISPLAY 在Linux/Unix类操作系统上, DISPLAY用来设置将图形显示到何处. 直接登陆图形界面或者登陆命令行界面后使用startx启动图形, DISPLAY环境变量将自动设置为:0:0, 此时可以打开终端, 输出图形程序的名称(比如xclock)来启动程序, 图形将显示在本地窗口上, 在终端上输入printenv查看当前环境变量, 输出结...

(转)对Oracle导出文件错误和DMP文件结构的分析,EXP-00008: 遇到 ORACLE 错误 904 ORA-00904: "MAXSIZE": invalid identifier

  EXP-00008: 遇到 ORACLE 错误 904 ORA-00904: "MAXSIZE": invalid identifier 原因:oracle版本不一样 执行 C:/>EXP plx/plx@orcl  FILE=c:/plx.dmp TABLES=(s,sc,c) 结果报错 Export: Release 11.1.0.6.0...

Oracle数据库LOGGING&NOLOGGING模式概述

1.日志记录模式(LOGGING 、FORCE LOGGING 、NOLOGGING) 1.1三者的含义 LOGGING:当创建一个数据库对象时将记录日志信息到联机重做日志文件。LOGGING实际上是对象的一个属性,用来表示在创建对象时是否记录REDO日志,包括在做DML时是否记录REDO日志。一般表上不建议使用NOLOGGING,在创建索引或做大量数据...

Oracle Cursor的使用

When Oracle Database executes a SQL statement, it stores the result set and processing information in an unnamedprivate SQL area. A pointer to this unnamed area, called acursor,...

Oracle中对列加密的方法

Oracle中对列加密的方法 2011-12-22 17:21:13 分类: Linux Oracle支持多种列加密方式: 1,透明数据加密(TDE):create table encrypt_col(id int,txt varchar2(100) encrypt using '算法名称' identified by '密钥' no salt);优...