一.增量备份的相关概念
1. 在前面说明了RMAN的完整备份,完整备份是备份所用使用过的块,不备份没有使用的过的块;增量备份只备份自上次备份以来更改过的块。
2.即使RMAN的默认操作是在增量备份时扫描整个数据文件来确定哪些块已经更改,也仍然节省时间,因为在所有情况下,瓶颈都在于对磁盘的写操作 ,而不是文件的读取。如果再启用块变更跟踪,这样就不用扫描整个文件了,备份时间也大大减少了。
3.用户管理的备份是不能实现增量备份的,RMAN可以实现。
4.增量备份分为积累增量备份和差异增量备份,积累增量备份是自上次完整备份以来所有更改过的块;差异增量备份是自上次增量备份以来更改的所用块。
二.增量备份的级别
1.增量备份依赖于包含所有块的起点:这个称为增量级别0备份。然后,差异增量级别1备份将提取自上一个级别1备份以来所有更改过的块,如果没有介于其间的级别1备份,则提取自上一个级别0备份以来更改的所用块。积累增量备份将提取自上一个级别0备份以来更改过的所有块,不考虑期间是否存在任何级别1备份。
2增量级别0备份和完整备份的效果是一样的,只是增量级别0备份可以作为增量备份起点而完整备份不可以。
3.在较早的RMAN版本中增量的级别可以指定0到4个级别,
Different incremental backups contain only modified blocks from level n(1~4) or lower.
Cumulative incremental backups contain only modified blocks from level n(0~3) or lower.
即差异增量备份是备份两个相同级别之间(指两个间隔的时间)所有变更的块或者没有和现在级别相同的备份则找到较低的级别,备份两者之间的变更块;积累增量备份是备份现在这个级别到比现在低一个级别所有变更的块或者找到比现在更低的级别之间更改块的备份。
三.增量备份的实现
1.对文件/u01/oradata/wilson/paul01.dbf进行增量备份,它的文件号是6,命令如下,
RMAN> run{
2> allocate channel d1 type disk;
3> backup incremental level 0 datafile 6 format='/u01/backup/l0_%U';
4> }
这是增量0级备份,作用效果和完整备份一样,备份所用使用过的块,但它可以作为增量备份的基础,而完整备份不可以。
2.对文件进行增量1级别备份,命令如下
RMAN> run{
2> allocate channel d1 device type disk;
3> backup incremental level 1 datafile 6 format='/u01/backup/l1_%U';}
它备份自上一个级别1备份(对于第一运行,是级别0)以来更改的所有块。
3.对文件进行积累增量备份
RMAN> run{
2> allocate channel d1 type disk;
3> backup incremental level 1 cumulative datafile 6 format='/u01/backup/l1c_%U';
4> }
它备份自级别0备份以来更改的所有块。
4.如果没有运行级别0备份,那么第一次级别1差异备份或者积累备份将实际执行级别0备份。
5.如果备份时间较长可以用视图v$session_longops来查看时间,记录中超过6s以上的操作,
SQL> select sid,sofar,totalwork from v$session_longops;
SID SOFAR TOTALWORK
---------- ---------- ----------
40 1 1
40 2 2
其中sofar是到目前为止所运行的时间,totalwork是总共需要运行的时间。
四.变更块跟踪
1. RMAN的默认操作是在增量备份时扫描整个数据文件来确定哪些块已经更改,这样做的优点是允许RMAN检查块的损坏,但这样花费的时间较长,所以开启变更块更踪,RMAN在执行增量备份时读取变更跟踪文件就可以确定需要备份的块,这样大大减少了时间。
2.变更跟踪文件的默认位置是DB_CREATE_FILE_DEST目录(如果作了定义),也可以指定跟踪文件的名称和位置。
3.启用块变更跟踪,指定文件名和位置,命令如下,
SQL> alter database enable block change tracking using file '/u01/change_tracing.dbf';
Database altered.
关闭块变更跟踪,关闭后变更跟踪文件自动删除,命令如下,
SQL> alter database disable block change tracking ;
Database altered.
五.标签
给备份级一个逻辑的名字,方便管理。给备份级加上标签,
RMAN> run{
2> allocate channel d1 device type disk;
3> backup incremental level 1 datafile 11 tag='sun';}
直接查找
RMAN> list backup tag='sun';
六.相关视图
1.视图v$session
SQL> select sid,username,client_info from v$session;
SID USERNAME CLIENT_INFO
---------- ------------------------------ -----------------------------------
36
37 SYS
38 SYS rman channel=ORA_DISK_1
40 SYS
可以看到启动的服务器进程,rman一旦连接上,就会默认启动2个服务器进程,polling和defalut进程,备份时会需要第三个会话:通道。
2.set command to 命令,命令如下
RMAN> run{
2> allocate channel d1 type disk;
3> set command id to 'sunshine';
4> backup datafile 6 format='/u01/backup/p_%U';}
指定set command id to ‘sunshine’;
可以在v$session会话中查到相关的进程,
SQL> select sid,username,client_info from v$session;
SID USERNAME CLIENT_INFO
---------- ------------------------------ -----------------------------------
29 SYS
38 SYS
39 SYS id=sunshine
3.视图v$process
在v$session可以查到哪个SID在哪个通道上工作,在通过和v$process关联查到SPID等进程信息,可以监控进程,命令如下,
SQL> select sid,spid,client_info from v$process p ,v$session s
2 where p.addr=s.paddr
3 and client_info like '%id=sun%';
SID SPID CLIENT_INFO
---------- ------------------------ -----------------------------------
39 5081 id=sunshine
最后,当RMAN异常中断时,不会记录在控制文件上或者数据库中,但是磁盘上会有文件,要去删除它。