在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. 半小时写完替罪羊重构点分树做动态动态点分治之紫荆花之恋的wyy贴心指导

    刷题训练 初学者 有一定语言基础,但是不了解算法竞赛,水平在联赛一等奖以下的. 参考书:<算法竞赛入门经典--刘汝佳>,<算法竞赛入门经典训练指南--刘汝佳> 题库:洛谷(历年 ...

  2. zabbix监控A主机到B主机的网络质量

    采用zabbix自带的icmp ping即可进行监控: 1.安装fping 2.将fping安装后链接到/usr/sbin/fping下,设置组为zabbix; 3.增加监控项:icmpping[ip ...

  3. mysql——批量插入数据

    要测试一下新功能,需要测试环境下的数据库有大量的数据,一个个插入显然不现实,需要了解一下存储过程 https://www.cnblogs.com/endtel/p/5407455.html Navic ...

  4. LeetCode--094--二叉树的中序遍历(python)

    递归 # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # ...

  5. linux运维、架构之路-redis

    一.redis介绍 Redis是一个开源,高级的键值存储和一个适用的解决方案,用于构建高性能,可扩展的Web应用程序. Redis属于非关系型数据库和Memcached类似,redis也是一个key- ...

  6. SpringBoot自定义FailureAnalyzer

    官网说明 1.1 创建自己的 FailureAnalyzer FailureAnalyzer是一种在启动时拦截 exception 并将其转换为 human-readable 消息的好方法,包含在故障 ...

  7. 【学习心得】Link-cut Tree

    Link-cut Tree是一种支持改变树(森林)的形态(link和cut),同时维护树的路径上节点信息的数据结构.lct通过splay来维护每次的perferred path,说白了就是一个动态的树 ...

  8. BZOJ 3329: Xorequ(数位dp+递推)

    传送门 解题思路 可以把原式移项得\(x\)^\(2x\)=\(3x\),而\(x+2x=3x\),说明\(x\)二进制下不能有两个连续的\(1\).那么第一问就是一个简单的数位\(dp\),第二问考 ...

  9. find查找多种文件后缀

    find命令最常用的是查找某个文件,如: find ./ -name "test.txt" 则会在当前目录及子目录下查找test.txt文件 更常用的是查找某一类型的文件,如: f ...

  10. iOS模拟器Custom Location被重置解决方案

    转自王中周的技术博客 问题说明   在做地图类应用时,经常需要用到位置模拟功能.iOS模拟器提供了该功能,我们可以设置指定的经纬度,选中模拟器后,按照以下菜单层次进入即可设置: Debug --> ...