在RMAN用语中,“还原”与“恢复”具有不同的含义,还原(restore)是指访问先前生成的备份集,从中得到一个或多个对象,然后再磁盘上的某个位置还原这些对象。还原与恢复时分离的。恢复(recovery)是一个使数据库与给定时间点相一致以保证能够打开这个数据库的实际操作。

     如果丢失了所有的参数文件(spfile和pfile),而且开启了控制文件自动备份(RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;),我们可以从自动备份的控制文件+参数文件的备份集中恢复服务器的参数文件。不同的操作系统,自动备份的参数文件+控制文件保存的位置略有区别:
          windows:$ORACLE_HOME%\database
          linux/unix:$ORACLE_HOME/dbs
     如果之前有自动备份控制文件+参数文件备份集,那么我们只需要简单执行一条语句:restore spfile from autobackup; 语句就可以恢复参数文件。执行该语句时,Oracle会在默认位置中(或则在allocate channel命令定义的位置中)查找所需备份集,该备份集使用Oracle默认的命名规则(%F),该命名规则在FRA里面不适用(FRA有自己的命名规则)。
 
示例:模拟参数文件丢失(先在脱机状态执行数据库全备,然后移出所有$ORACLE_HOME/dbs下的spfile和pfile文件到临时目录下)
     数据库会启动失败:
          SQL> startup
          ORA-01078: failure in processing system parameters
          LRM-00109: could not open parameter file '/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/initorcl.ora'
 
方法一,使用默认配置进行参数文件恢复
     启动RMAN进行参数文件的恢复:
     [oracle@localhost ~] $ set oracle_sid=orcl
     [oracle@localhost ~] $ rman target /
     RMAN>set DBID = 1405321682
     RMAN>startup nomount
     RMAN>restore spfile from autobackup;
     Starting restore at 2015-06-06 21:24:27
     allocated channel: ORA_DISK_1
     channel ORA_DISK_1: SID=130 device type=DISK
 
     channel ORA_DISK_1: looking for AUTOBACKUP on day: 20150606
     channel ORA_DISK_1: looking for AUTOBACKUP on day: 20150605
     channel ORA_DISK_1: looking for AUTOBACKUP on day: 20150604
     channel ORA_DISK_1: looking for AUTOBACKUP on day: 20150603
     channel ORA_DISK_1: looking for AUTOBACKUP on day: 20150602
     channel ORA_DISK_1: looking for AUTOBACKUP on day: 20150601
     channel ORA_DISK_1: looking for AUTOBACKUP on day: 20150531
     channel ORA_DISK_1: no AUTOBACKUP in 7 days found
     RMAN-00571: ===========================================================
     RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
     RMAN-00571: ===========================================================
     RMAN-03002: failure of restore command at 06/06/2015 21:24:29
     RMAN-06172: no AUTOBACKUP found or specified handle is not a valid copy or piece
     
错误分析
     恢复报错,提示未找到有效的备份集。分析原因:正常来说,刚才做的数据库全备,并设置了configure autobackup on,应该是有参数文件备份的,但是为什么找不到了?默认配置恢复参数文件,Oracle会到$ORACLE_HOME/dbs下寻找指定名称的备份集,从报错信息来看,默认情况下它会在该目录下寻找过去7天内创建的控制文件备份集(可以加上maxseq和maxdays来改变默认天数),如果没找到就报错。去$ORACLE_HOME/dbs目录下查看,确实没有任何备份集,从刚才的备份过程来看,Oracle将控制文件自动保存到FRA里面去了,而且使用的是FRA里面的默认命令规则:
     Starting Control File and SPFILE Autobackup at 2015-06-06 21:22:36
     piece handle=/home/oracle/app/flash_recovery_area/ORCL/autobackup/2015_06_06/o1_mf_s_881702383_bq5x0wq0_.bkp comment=NONE
     Finished Control File and SPFILE Autobackup at 2015-06-06 21:22:37
     released channel: c1

     由于数据库是启动在nomount状态,参数文件丢失,因此并没有加载参数文件,Oracle也就无法定位FRA,因此Oracle不会去FRA中寻找(测试过将c-1405321682-20150606-01放在FRA中,仍然无法恢复),而是去$ORACLE_HOME/dbs下寻找(补充说明2)。手工恢复参数文件,查看RMAN的默认配置,是否有设置控制文件的默认存储位置(注意了,nomount状态下只能看到RMAN最原始的配置信息,见下面的补充说明1,看不到修改的配置信息,必须将数据库启动到mount状态):
     RMAN> show all;

RMAN configuration parameters for database with db_unique_name ORCL are:
     CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
     CONFIGURE BACKUP OPTIMIZATION OFF; # default
     CONFIGURE DEFAULT DEVICE TYPE TO DISK;
     CONFIGURE CONTROLFILE AUTOBACKUP ON;
     CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
     CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
      。。。。

 
错误解决
     备份目录确实是使用的是默认的,为什么自动备份控制文件和参数文件的时候会将备份集保存到FRA中去?确实很奇怪,手工设置一下备份路径:
     RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F';
     RMAN> show all;
 
     RMAN configuration parameters for database with db_unique_name ORCL are:
     CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
     CONFIGURE BACKUP OPTIMIZATION OFF; # default
     CONFIGURE DEFAULT DEVICE TYPE TO DISK;
     CONFIGURE CONTROLFILE AUTOBACKUP ON;
     CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F';
     CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
     。。。。。
 
     发现 CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; 后面的default没有的,但是值还是不变,在执行一次备份:
     RMAN> run

2> {
     3> allocate channel c1 device type disk;
     4> backup tablespace system format '/storage/database/oracle/backupset/online/backup_%U.bkp';
     5> backup current controlfile;
     6> RELEASE CHANNEL c1;
     7> }
     。。。。。。
     Starting Control File and SPFILE Autobackup at 2015-06-07 10:24:00
     piece handle=/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/c-1405321682-20150607-01 comment=NONE
     Finished Control File and SPFILE Autobackup at 2015-06-07 10:24:01

released channel: c1

     哈哈,参数文件和控制文件的备份集保存到正确的默认路径下面了。其实这个操作什么也没改,但重新设置一下就好了,这应该是Oracle的bug。再次模拟参数文件的丢失,执行参数文件的恢复:
     RMAN> restore spfile from autobackup;

Starting restore at 2015-06-07 13:33:27
     using channel ORA_DISK_1

channel ORA_DISK_1: AUTOBACKUP found: c-1405321682-20150607-01
     channel ORA_DISK_1: restoring spfile from AUTOBACKUP c-1405321682-20150607-01
     channel ORA_DISK_1: SPFILE restore from AUTOBACKUP complete
     Finished restore at 2015-06-07 13:33:28

     
     RMAN> shutdown immediate

Oracle instance shut down
     RMAN> startup

 
方法二,使用指定备份集的方式进行恢复
     [oracle@localhost ~] $ set oracle_sid=orcl
     [oracle@localhost ~] $ rman target /
     RMAN>set DBID = 1405321682
     RMAN>startup nomount
     RMAN>restore spfile from '/home/oracle/app/flash_recovery_area/ORCL/autobackup/2015_06_06/o1_mf_s_881702383_bq5x0wq0_.bkp';
     RMAN>shutdown immediate
 
方法三,使用临时参数文件进行恢复
     如果忘记了待恢复数据库的DBID,上面的两种方式就失效了,可以使用临时参数文件来恢复spfile,前提是正确配置临时参数文件。因为临时参数文件可以指定FRA的位置,那么Oracle执行restore  spfile from autobackup的时候就会去FRA中寻找。(没有实践)
     [oracle@localhost ~] $ set oracle_sid=orcl
     [oracle@localhost ~] $ rman target /
     RMAN>startup nomount;     --加载临时参数文件
     RMAN>restore spfile from autobackup;
     RMAN>shutdown immediate
 
补充:
1,在nomount状态下看到的默认配置信息:
RMAN> show all;

RMAN configuration parameters for database with db_unique_name DUMMY are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default

 
2,为什么Oracle会到$ORACLE_HOME/dbs下寻找控制文件备份集?
you're using Flash recovery area and Oracle managed files for backup without RMAN catalog. When you start your instance with STARTUP FORCE NOMOUNT, Oracle set instance with minimal parameters and doesn't have a clue about where your flash recovery area is located. Oracle is looking for autobackup in "well" known locations (dbs on Unix, database on Windows) for a file that conforms to notation: c-IIIIIIIIII-YYYYMMDD-QQ (this is set with %F parameter). In your case Oracle doesn't find one because it's not there. 
 

RMAN备份与恢复 —— 参数文件还原的更多相关文章

  1. RMAN备份与恢复之参数文件与控制文件

    0   说明 本例是基于备份数据库全库的基础上,还原参数据文件(spfile),控制文件. 1   准备 [oracle@TEST144239 /]$ sqlplus /nolog SQL Produ ...

  2. RMAN数据库恢复之控制文件和参数文件恢复

    一.控制文件的恢复1.查询控制文件的路径 SQL> SELECT * FROM V$CONTROLFILE; STATUS NAME IS_RECOVERY_DEST_FILE BLOCK_SI ...

  3. 数据文件、日志文件、归档文件、控制文件、参数文件及RMAN备份数据库信息查询

    一.查看数据库信息:=====================1.数据文件 SQL> SELECT FILE#,STATUS,ENABLED,NAME FROM V$DATAFILE; FILE ...

  4. Oracle【IT实验室】数据库备份与恢复之四:RMAN(备份与恢复管理器)

    RMAN是ORACLE提供的一个备份与恢复的工具,可以用来备份和还原数据库文件. 归档日志和控制文件.它也可以用来执行完全或不完全的数据库恢复. RMAN可以由命令行接口或者 OEM的 Backup ...

  5. RMAN备份与恢复实践(转)

    1   RMAN备份与恢复实践 1.1  备份 1.1.1 对数据库进行全备 使用backup database命令执行备份 RMAN> BACKUP DATABASE; 执行上述命令后将对目标 ...

  6. RMAN备份与恢复之概念二

      1   RMAN备份恢复 1.1  基础理论 恢复可以分为完全恢复和不完全恢复 完全数据库恢复是恢复到故障发生前的状态,所有已经提交的操作都进行恢复,确保数据库不丢失任何数据,完全恢复只用于归档模 ...

  7. RMAN备份与恢复之初入茅庐

    理解数据库备份 所谓备份实际上是把数据库复制到转储设备的过程. 从备份方式来看数据库备份分为物理备份和逻辑备份,物理备份是把构成数据库的所有文件拷贝到指定的位置的过程,而逻辑备份只是利用SQL语言从数 ...

  8. RMAN备份与恢复实例

    1. 检查数据库模式:   sqlplus /nolog    conn /as sysdba   archive log list (查看数据库是否处于归档模式中) 若为非归档,则修改数据库归档模式 ...

  9. RMAN备份与恢复深入解<一>

    一 数据库版本 SQL> select *from v$version; BANNER ----------------------------------------------------- ...

随机推荐

  1. Python私有变量(Private Variable)

    Variables can be private which can be useful on many occasions. A private variable can only be chang ...

  2. 关于softmax稳定性问题

    因为softmax中指数函数,很容易超出计算机表达的最大值,所以采用分子分母同时乘N的方法,N一般为最大值.

  3. 关于vs2019

    一.vs2019中的MFC 在想创建一个基于对话的应用时找不着模版了,这下可慌了,试遍了已有的各个模版都没要,要么就是缺少头文件,我在想是不是少安装了什么选项.重装了相关模块,最后又核对了一遍,都对. ...

  4. PHP入门培训教程 一个漂亮的PHP验证码

    如何写一个漂亮的PHP验证码?兄弟连PHP培训 小编分享一段代码给大家: <?php class Imagecode{ private $width ; private $height; pri ...

  5. UOJ #228. 基础数据结构练习题 线段树 + 均摊分析 + 神题

    题目链接 一个数被开方 #include<bits/stdc++.h> #define setIO(s) freopen(s".in","r",st ...

  6. nvm 管理 node 版本

    nvm 有 Mac 版本 num 亦有 windows 版本(可以搜索 nvm for windows) 安装后 运行 nvm v 可查看版本 运行 nvm install latest 安装最新版本 ...

  7. UITabbarController & UITabbar 学习

    最后更新2016-04-06 一. UITabbarController 给UITabbarController 设置viewControllers熟悉时候,超过五个就会有一个 moreNavigat ...

  8. open 函数处理文件

    open函数用于文件处理 操作文件时,一般需要经历如下步骤:1 打开文件    2  操作文件 f =  open("文件名"     ,  '  打开文件方式'  ) 文件句柄 ...

  9. mui初级入门教程(四)— 再谈webview,从小白变“大神”!

    文章来源:小青年原创发布时间:2016-06-05关键词:mui,html5+,webview转载需标注本文原始地址: http://zhaomenghuan.github.io/#!/blog/20 ...

  10. 纯CSS3写一个立方体并在鼠标悬停的时候无限循环旋转