Oracle - RMAN备份 之 incarnation的实验和小结
对于RMAN恢复我一直都不是很明白,因为,老是搞不清楚不完全恢复该怎么进行,今天,通过这个实验即是对不完全恢复的实践,
也是希望搞清楚incarnation到底是怎么工作的.很可惜,本人对Oracle的了解还不入门,仅能做一点提示.在文末做为小结.
RMAN> list backup;
List of Backup Sets
===================
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ -------------------
1 Full 559.92M DISK 00:01:08 2016-08-13 20:17:08 =============[第一个时间点]==========
BP Key: 1 Status: AVAILABLE Compressed: NO Tag: TAG20160813T201600
Piece Name: /home/oracle10/flash_recovery_area/DBINFO/backupset/2016_08_13/o1_mf_nnndf_TAG20160813T201600_cty3w0sx_.bkp
List of Datafiles in backup set 1
File LV Type Ckp SCN Ckp Time Name
---- -- ---- ---------- ------------------- ----
1 Full 1080165 2016-08-13 20:16:00 /home/oracle10/oradata/dbinfo/system01.dbf
2 Full 1080165 2016-08-13 20:16:00 /home/oracle10/oradata/dbinfo/undotbs01.dbf
3 Full 1080165 2016-08-13 20:16:00 /home/oracle10/oradata/dbinfo/sysaux01.dbf
4 Full 1080165 2016-08-13 20:16:00 /home/oracle10/oradata/dbinfo/users01.dbf
5 Full 1080165 2016-08-13 20:16:00 /home/oracle10/oradata/dbinfo/gias01.dbf
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ -------------------
2 Full 6.80M DISK 00:00:02 2016-08-13 20:17:17
BP Key: 2 Status: AVAILABLE Compressed: NO Tag: TAG20160813T201600
Piece Name: /home/oracle10/flash_recovery_area/DBINFO/backupset/2016_08_13/o1_mf_ncsnf_TAG20160813T201600_cty3yffw_.bkp
Control File Included: Ckp SCN: 1080190 Ckp time: 2016-08-13 20:17:15
SPFILE Included: Modification time: 2016-08-13 20:09:59
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ -------------------
3 Full 560.05M DISK 00:00:18 2016-08-13 20:26:33 =============[第二个时间点]==========
BP Key: 3 Status: AVAILABLE Compressed: NO Tag: TAG20160813T202615
Piece Name: /home/oracle10/orabak/fulldb_20160813_919801575
List of Datafiles in backup set 3
File LV Type Ckp SCN Ckp Time Name
---- -- ---- ---------- ------------------- ----
1 Full 1080933 2016-08-13 20:26:15 /home/oracle10/oradata/dbinfo/system01.dbf
2 Full 1080933 2016-08-13 20:26:15 /home/oracle10/oradata/dbinfo/undotbs01.dbf
3 Full 1080933 2016-08-13 20:26:15 /home/oracle10/oradata/dbinfo/sysaux01.dbf
4 Full 1080933 2016-08-13 20:26:15 /home/oracle10/oradata/dbinfo/users01.dbf
5 Full 1080933 2016-08-13 20:26:15 /home/oracle10/oradata/dbinfo/gias01.dbf
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ -------------------
4 Full 6.80M DISK 00:00:01 2016-08-13 20:26:41
BP Key: 4 Status: AVAILABLE Compressed: NO Tag: TAG20160813T202615
Piece Name: /home/oracle10/orabak/fulldb_20160813_919801600
Control File Included: Ckp SCN: 1080941 Ckp time: 2016-08-13 20:26:40
SPFILE Included: Modification time: 2016-08-13 20:09:59
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ -------------------
5 Full 561.88M DISK 00:00:19 2016-08-13 20:34:29 =============[第三个时间点]==========
BP Key: 5 Status: AVAILABLE Compressed: NO Tag: TAG20160813T203410
Piece Name: /home/oracle10/orabak/db_full_bak_20160813_919802050
List of Datafiles in backup set 5
File LV Type Ckp SCN Ckp Time Name
---- -- ---- ---------- ------------------- ----
1 Full 1081829 2016-08-13 20:34:10 /home/oracle10/oradata/dbinfo/system01.dbf
2 Full 1081829 2016-08-13 20:34:10 /home/oracle10/oradata/dbinfo/undotbs01.dbf
3 Full 1081829 2016-08-13 20:34:10 /home/oracle10/oradata/dbinfo/sysaux01.dbf
4 Full 1081829 2016-08-13 20:34:10 /home/oracle10/oradata/dbinfo/users01.dbf
5 Full 1081829 2016-08-13 20:34:10 /home/oracle10/oradata/dbinfo/gias01.dbf
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ -------------------
6 Full 6.80M DISK 00:00:01 2016-08-13 20:34:36
BP Key: 6 Status: AVAILABLE Compressed: NO Tag: TAG20160813T203410
Piece Name: /home/oracle10/orabak/db_full_bak_20160813_919802075
Control File Included: Ckp SCN: 1081837 Ckp time: 2016-08-13 20:34:35
SPFILE Included: Modification time: 2016-08-13 20:09:59
从上面查看备份集的输出可知,当前有三个可用的备份集.分别是:
1. 2016-08-13 20:17:08
2. 2016-08-13 20:26:33
3. 2016-08-13 20:34:29
现在的情况是,已经进行了一次完全恢复,使用的是 第3个时间点的全备.但现在需要恢复第2个时间点的全备.
注: 进行基于时间的备份时需要先导出指定日期格式的变量: export NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss';
RMAN> run {
set until time='2016-08-13 20:26:33';
restore database;
recover database;
alter database open resetlogs;
}
executing command: SET until clause
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of set command at 08/13/2016 23:42:18
RMAN-20207: UNTIL TIME or RECOVERY WINDOW is before RESETLOGS time
恢复时,出现了RMAN-20207的错误,这是进行恢复时,经常会出的错误.这是因为,我们先前恢复了第3个时间点
的全备,并进行了resetlogs,那么Oracle将的incarnation将加1,可以理解为Oracle将resetlogs前的备份集做为上层,
resetlogs后,重新建了一个层,开始重新记录信息. 我们现在要恢复上一层的备份集,就必须先回到上一层.
RMAN> list incarnation; #查看当前有几个incarnation.
List of Database Incarnations
DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1 1 DBINFO 3196490228 PARENT 1 2005-10-22 21:44:08
2 2 DBINFO 3196490228 PARENT 525876 2015-06-20 21:23:03
3 3 DBINFO 3196490228 CURRENT 1081970 2016-08-13 23:39:33 #这是当前层.
RMAN> reset database to incarnation 2;
RMAN> list incarnation;
List of Database Incarnations
DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1 1 DBINFO 3196490228 PARENT 1 2005-10-22 21:44:08
2 2 DBINFO 3196490228 CURRENT 525876 2015-06-20 21:23:03 #此时,它变成了当前层.
3 3 DBINFO 3196490228 ORPHAN 1081970 2016-08-13 23:39:33
4 4 DBINFO 3196490228 ORPHAN 1081972 2016-08-14 00:05:20
RMAN> run {
set until time='2016-08-13 20:26:33'; #使用第二次备份的时间点来进行不完全恢复.
restore database;
recover database;
alter database open resetlogs;
}
executing command: SET until clause
Starting restore at 2016-08-14 00:14:50
using channel ORA_DISK_1
.......
piece handle=/home/oracle10/orabak/fulldb_20160813_919801575 tag=TAG20160813T202615 #可以看到这里使用第二次的备份集.
channel ORA_DISK_1: restore complete, elapsed time: 00:00:55
Finished restore at 2016-08-14 00:15:45
恢复完成后,再次查看incarnation:
RMAN> list incarnation;
List of Database Incarnations
DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1 1 DBINFO 3196490228 PARENT 1 2005-10-22 21:44:08
2 2 DBINFO 3196490228 PARENT 525876 2015-06-20 21:23:03
5 5 DBINFO 3196490228 CURRENT 1080958 2016-08-14 00:15:47 #当前层在这里.
3 3 DBINFO 3196490228 ORPHAN 1081970 2016-08-13 23:39:33
4 4 DBINFO 3196490228 ORPHAN 1081972 2016-08-14 00:05:20
这时,我们继续将恢复的数据文件gias01.dbf 删除.然后,直接执行:
restore database; #发现恢复的是第二次备份的全备集.
recover database;
alter database open resetlogs; #并且,执行它时会报错,因为,Oracle不认为这是不完全恢复.
alter database open; #因此,直接此命令即可打开数据库.查看incarnation没有发生变化。
那现在要重新恢复第三次备份的备份集,要怎么做?
1. 重新关库,删除gias01.dbf
2. 重设incarnation 为4.
RMAN> reset database to incarnation 4;
RMAN> list incarnation;
List of Database Incarnations
DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1 1 DBINFO 3196490228 PARENT 1 2005-10-22 21:44:08
2 2 DBINFO 3196490228 PARENT 525876 2015-06-20 21:23:03
5 5 DBINFO 3196490228 ORPHAN 1080958 2016-08-14 00:15:47
3 3 DBINFO 3196490228 ORPHAN 1081970 2016-08-13 23:39:33
4 4 DBINFO 3196490228 CURRENT 1081972 2016-08-14 00:05:20 #可以看到现在已经修改成功.
3. 尝试手动恢复:
restore database; #这次恢复的是第三次备份的全备集.
recover database;
执行recover database时,出现下面错误,可忽略:
RMAN-03002: failure of recover command at 06/24/2015 16:02:25
RMAN-06054: media recovery requesting unknown log: thread 1 scn 277200603
4.进入sqlplus尝试打开数据库:
alter database open resetlogs; #成功打开.
5.再次查看incarnation:
RMAN> list incarnation;
List of Database Incarnations
DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1 1 DBINFO 3196490228 PARENT 1 2005-10-22 21:44:08
2 2 DBINFO 3196490228 PARENT 525876 2015-06-20 21:23:03
5 5 DBINFO 3196490228 ORPHAN 1080958 2016-08-14 00:15:47
3 3 DBINFO 3196490228 ORPHAN 1081970 2016-08-13 23:39:33
6 6 DBINFO 3196490228 CURRENT 1081972 2016-08-14 00:39:49 #现在第6层
4 4 DBINFO 3196490228 PARENT 1081972 2016-08-14 00:05:20
实验到此,我又尝试了reset database to incarnation 2; 然后,使用时间恢复第一次备份集,
成功,incarnation+1后为7,然后,我再次回到2,尝试使用时间恢复第一次备份,竟然失败了,然后,
我尝试使用时间恢复第一/二/三都不成功,但可以直接使用restore database来恢复.
我依然没有完全理解,从实验上看,没次resetlogs后,该层上将记录此次恢复备份集的信息,
并且上个当前层上关于该备份集的信息将被删除。
后记:
此次实验到最后,出现了一个问题,incarnation 被搞混乱了,我把所有的备份集都删除了,然后,
重新做了两次RMAN全备,每次都看incarnation有什么变化没,结果因为先前reset database to incarnation 3;
两次全备的信息似乎都没有记录到incarnation 3这层,无论我怎么切换,直接用restore database 或 基于时间的
恢复都提示找不到数据文件,将incarnation功能关闭也无法恢复.最终的解决方案是,重建控制文件来解决.
经测试重建控制文件可以重置incarnation.
这里有需要注意重建控制文件时: resetlogs与noresetlogs的区别
norestlogs: 控制文件的scn是来自当前日志的最大scn。
resetlogs: 控制文件的scn是来自数据文件。
重建控制文件的脚本:
1. 从$ORACLE_BASE/admin/$ORACLE_SID/bdump/alert_$ORACLE_SID.log ,从警告日志中找.
2. 手动写.
参考样本:
Create controlfile reuse database "dbinfo" noresetlogs archivelog
MAXINSTANCES 8
MAXLOGHISTORY 1
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
LOGFILE
GROUP 1 '/home/oracle10/oradata/dbinfo/redo01.log' SIZE 51200K,
GROUP 2 '/home/oracle10/oradata/dbinfo/redo02.log' SIZE 51200K,
GROUP 3 '/home/oracle10/oradata/dbinfo/redo03.log' SIZE 51200K
-- STANDBY LOGFILE
Datafile
'/home/oracle10/oradata/dbinfo/system01.dbf',
'/home/oracle10/oradata/dbinfo/undotbs01.dbf',
'/home/oracle10/oradata/dbinfo/sysaux01.dbf',
'/home/oracle10/oradata/dbinfo/users01.dbf',
'/home/oracle10/oradata/dbinfo/gias01.dbf'
CHARACTER SET ZHS16GBK
;
写好重建控制文件的脚本后,启动Oracle到nomount:
SQL> startup nomount
SQL> @/tmp/create-control-file.sql
Oracle - RMAN备份 之 incarnation的实验和小结的更多相关文章
- Oracle RMAN 备份一例
Oracle RMAN备份一例: Solaris 10 + Oracle 11.2.0.3 Shell:csh,安装有bash,脚本调用bash 备份策略:周日0级备份,周一~周六1级备份,每6小时备 ...
- Oracle—RMAN备份(三)
一.增量备份的相关概念 1. 在前面说明了RMAN的完整备份,完整备份是备份所用使用过的块,不备份没有使用的过的块:增量备份只备份自上次备份以来更改过的块. 2.即使RMAN的默认操作是在增量备份时扫 ...
- Oracle—RMAN备份(一)
一.RMAN备份相关概念 1.RMAN备份中表空间不需要处于backup模式下,它备份数据文件,归档日志文件,控制文件,spfile和备份集片,但不备份联机重做日志文件,临时文件和口令文件. 2.备份 ...
- Oracle—RMAN备份(二)
在Oracle RMAN备份(一)中,对各种文件在RMAN中备份进行了说明, 一.备份集的复制 在RMAN 备份中,可以备份其自己的备份,即备份一个文件放在多个目录下,oralce支持最多备份四个. ...
- ORACLE RMAN备份--差异增量与累积增量的策略实例图
转自原文 ORACLE RMAN备份--差异增量与累积增量的策略实例图
- ORACLE RMAN备份及还原 RMAN能够进行增量备份:数据库,表空间,数据文件
ORACLE RMAN备份及还原 RMAN能够进行增量备份:数据库.表空间.数据文件 仅仅有使用过的block能够被备份成backup set 表空间与数据文件相应关系:dba_data_file ...
- Oracle RMAN备份与还原
RMAN在数据库服务器的帮助下实现数据库文件.控制文件.数据库文件与控制文件的映像副本.归档日志文件.数据库服务器参数文件的备份. RMAN的特点: (1) 支持增量备份:传统的exp与expdp备份 ...
- Oracle Rman备份恢复和管理
参考资料: Oracle之Rman入门指南 一步一步学Rman Rman简介 Rman-Recover manager恢复管理工具. Oracle集成了很多环境的一个数据库备份和恢复的工具. Rman ...
- Oracle RMAN备份策略
建立增量备份:如果数据库运行于不归档模式下,只能在数据库干净关闭的情况下 ( 以 normal .immediate . transactional 方式关闭 ) 才能进行一致性的增量备份,如果数据库 ...
随机推荐
- uva 11691
贪心 ~~ 使用优先队列 #include <cstdio> #include <cstdlib> #include <cmath> #include <se ...
- 聚类算法K-Means, K-Medoids, GMM, Spectral clustering,Ncut
聚类算法是ML中一个重要分支,一般采用unsupervised learning进行学习,本文根据常见聚类算法分类讲解K-Means, K-Medoids, GMM, Spectral cluster ...
- 社交O2O的进化
引言 谁都想在O2O这个狂热的概念下分一杯羹,从O2O兴趣社交延伸到O2O生活服务,移动社交APP也是各显神通. 早在微信4.2版本号里,开机界面里那句"少发微信.多和朋友见见面" ...
- UML视频总结
"RUP 4+1"视图 学习UML我们就必须先了解这"RUP 4+1"视图,它是架构设计的结构标准,例如以下图所看到的. watermark/2/text/aH ...
- 湘潭邀请赛——Alice and Bob
Alice and Bob Accepted : 133 Submit : 268 Time Limit : 1000 MS Memory Limit : 65536 KB Problem ...
- sqlserver中All、Any和Some用法与区别
转自:http://blog.csdn.net/gyc1105/article/details/8063624 SQLServer中有三个关键字可以修改比较运算符:All.Any和Some,其中Som ...
- 链接脚本在编程中的高级运用之二——执行时库和C++特性支持
我们在链接脚本在编程中的高级运用之中的一个可变长数组中已经讲述了编译链接的原理,并且以uboot命令为例具体介绍链接脚本怎样实现可变长数组. 本章在前者的基础上继续讲述链接脚本在执行时库中的高级应用技 ...
- 机器学习笔记之PCA-SIFT总结
不多说,直接上干货! PCA-SIFT算法在描述子构建上作了创新,主要是 将统计学中的主成分分析(PCA)应用于对描述子向量的降维,以提高匹配效率 . PCA 的原理是:一般有效信号的方差大,噪声的方 ...
- 2016/3/27 分页 共X条数据 本页x条 本页从x-y条 x/y页 首页 上一页 123456 下一页 末页 pagego echo $page->fpage(7,6,5,4,3,2,1,0);
显示效果: fpage.class.php <?php /** file: page.class.php 完美分页类 Page */ class Page { private $total; / ...
- SpringMVC_中文乱码的配置 --跟海涛学SpringMVC(和自己在项目中的实际使用的对比)
spring Web MVC框架提供了org.springframework.web.filter.CharacterEncodingFilter用于解决POST方式造成的中文乱码 <filte ...