RMAN增量备份2种:
lv0 全备份,与backup Database 效果相同,但属于增量备份
1.lv1 增量备份,只备份差异的未备份的
2.lv1c 增量备份,备份最后一次lv0之后的全部数据(可能包括之前lv1备份的内容)
--***************
演示增量备份(043文档,Differential Versus Cumulative)
模拟一周的备份情况
--***************
Truncate Table System.t;
Select * From v$log; --group# 2
C:\>RMAN
RMAN> Connect target Sys/oracle@testdb catalog rman/rman@catalogDB
RMAN> Delete Backup; --清除之前的备份
Insert Into System.T Values(0,'A',Sysdate);
Commit;
RMAN> Backup incremental Level=0 Database; --周日进行一次lv0备份
Insert Into System.T Values(1,'B',Sysdate);
Commit;
Alter System Archive Log Current; --手动归档与Alter System Switch Logfile;效果相同,但只能用在归档模式
RMAN> Backup incremental Level=1 Database; --周一进行一次lv1即差异增量备份
Insert Into System.T Values(2,'C',Sysdate);
Commit;
Alter System Archive Log Current; --手动归档与Alter System Switch Logfile;效果相同,但只能用在归档模式
RMAN> Backup incremental Level=1 Database; --周二进行一次lv1备份
Insert Into System.T Values(3,'D',Sysdate);
Commit;
Alter System Archive Log Current; --手动归档与Alter System Switch Logfile;效果相同,但只能用在归档模式
RMAN> Backup incremental Level=1 cumulative Database; --周三进行一次lv1c 即1级累计增量备份
Insert Into System.T Values(4,'E',Sysdate);
Commit;
Alter System Archive Log Current; --手动归档与Alter System Switch Logfile;效果相同,但只能用在归档模式
RMAN> Backup incremental Level=1 Database; --周四进行一次lv1备份
Insert Into System.T Values(5,'F',Sysdate);
Commit;
Alter System Archive Log Current; --手动归档与Alter System Switch Logfile;效果相同,但只能用在归档模式
RMAN> Backup incremental Level=1 cumulative Database; --周五进行一次lv1c 即1级累计增量备份
Insert Into System.T Values(6,'G',Sysdate);
Commit;
Alter System Archive Log Current; --手动归档与Alter System Switch Logfile;效果相同,但只能用在归档模式
RMAN> Backup incremental Level=1 Database; --周六进行一次lv1备份
RMAN> List Backup Of Database summary; --查看备份信息的简要信息
RMAN> Restore priveiw Database; --查看恢复需要哪些备份 lv0 还要5,6这两天的备份
--*****模拟损坏进行恢复
RMAN> Shutdown Immediate
RMAN> startup Mount
RMAN> Restore Database; --开始恢复,恢复最后一次备份的lv0
RMAN> Recover Database; --在RMAN中Recover database找的是增量备份的文件,sql中会找归档日志
--**********************
RMAN备份的优缺点
--**********************
其他备份的缺点
1.Shutdown|Offline
2.os copy
3.Log(部分联机备份)
rman备份客服了以上缺点
4.使用过的数据块,永远都会被备份 --10.2.0.3补丁已经解决
Select * From t;
Select * From dba_tables Where owner='SYS' And TABLE_NAME='T'
Select BYTES/1024/1024,TABLESPACE_NAME,segment_name From DBA_SEGMENTS Where SEGMENT_NAME='T' And OWNER='SYS' --SYS用户下的表T,在USERS表空间占用80M的容量
RMAN> Backup Tablespace users; --查看容量1
Drop Table t Purge;
RMAN> Backup Tablespace users; --查看容量2 和容量1相等
优点:
1.当数据块损坏时,可以针对单个数据块的恢复
Alter Database Datafile 4 Resize 10m; --将表空间缩小到10M,如果表空间内容很少,但是仍然缩小不了,则可以使用move table和index rebuild来整理空间
Select BYTES/1024/1024,TABLESPACE_NAME,segment_name,OWNER From DBA_SEGMENTS Where Tablespace_NAME='USERS';
Alter Table SYS.T Move;
Alter Index System.IDX_T1 Rebuild;
Create Table T Tablespace USERS As Select * From DBA_OBJECTS;
Insert Into T Select * From T; --重复插入多次,让数据涨到8W以上
Shutdown Immediate --关闭后模拟USERS表空间损坏
用UE打开USERS表空间的文件,前8行不能编辑,不然数据头文件损坏,在后面编辑一些数据后保存,更改3个地方
startup
Select * From t; --报错,ORA-01578:ORACLE DATA BLOCK CORRUPTED (FILE # 4, BLOCK #730)
--******检查数据块的坏块
c:\dbv File =C:\oracle\product\10.2.0\oradata\testDB\USERS01.DBF --查看USERS表空间的数据文件中有哪些数据块是损坏的:
RMAN> Backup Validate Datafile 4; --RMAN对数据文件4进行坏块检查,不进行备份,检查后不报错,记录在v$database_block_corruption视图中
RMAN> Backup Datafile 4; --如果备份有坏块的数据文件,会报错:ORA-19566: EXCEEDED LIMIT OF 0 CORRUPT BLOCKS FOR FILE C:\oracle\product\10.2.0\oradata\testDB\USERS01.DBF
RMAN> run{
Set maxcorrupt For Datafile 4 To 1; --设置数据文件4,允许有1个折断块CORRUPT BLOCKS,只能放在run{}中执行
}
--***************针对检查到的坏块,进行恢复
RMAN> blockrecover Datafile 4 Block 730; --只恢复数据文件4的第730个块
RMAN> blockrecover Datafile 4 Block 933;
RMAN> blockrecover Datafile 4 Block 1438;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15810196/viewspace-1146671/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/15810196/viewspace-1146671/