ITPub博客

首页 > Linux操作系统 > Linux操作系统 > RMAN 常用命令 2 [final]

RMAN 常用命令 2 [final]

原创 Linux操作系统 作者:tolywang 时间:2011-08-01 18:09:11 0 删除 编辑

8.  备份归档日志文件和控制文件

在使用RMAN备份归档日志文件时,RMAN首先会自动进行一次日志切换,然后对归档
日志文件进行备份。可以采用指定时间,日志序列号备份归档日志文件。
RMAN > backup archivelog from time 'sysdate-3'; 
RMAN > backup archivelog from sequence 230;
RMAN > backup archivelog all ;

可以将备份完毕的归档日志文件在归档路径下删除:
RMAN > backup archive all delete input ;
如果归档日志在A,B路径下都有,需要都删除的话,需要:
RMAN > backup archive all delete all input ; 

备份数据文件的时候同时备份归档日志文件
RMAN > backup database plus archivelog ;
   其中backup database会默认备份datafile, controlfile, spfile;
RMAN > backup tablespace users plus archivelog ;

控制文件中默认会保留7天的归档日志文件列表,RMAN备份时会根据目标
数据库中的控制文件记录的这些归档日志文件列表去找所有归档日志文件,
如果我们手工删除了归档日志文件,不会通知到控制文件,RMAN备份归档
日志文件会失败。这时我们可以使用一下两种方式让RMAN继续:
RMAN > crosscheck archivelog all ;
// validate all archivelogs in your disk. If some are missing,
// it will treat it as expired.
除了设置为expired外,若需要在控制文件彻底删除标记为expired的归档记录
RMAN > delete expired archivelog all ;
或者
RMAN > backup database plus archivelog skip inaccessable ;
上面命令表示只是备份那些可以访问到的,跳过不能访问到的。
当然也可以加入delete input删除已经备份的归档日志。
RMAN > backup database plus archivelog skip inaccessable delete input;

备注: 虽然我们可以同时备份datafile和archivelog file,但是他们不会放在
同一个备份集中,因为归档日志以操作系统块为最小单位,数据文件以oracle
block为最小单位 。

 


控制文件的备份 --- 

RMAN > show all ;
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default 
可以看到默认情况下控制文件自动备份是off状态,我们可以通过on来开启。
当然我们也可以手工备份控制文件:
RMAN > backup current controlfile ; 
也可以备份为standby模式的控制文件,如:
RMAN > BACKUP DEVICE TYPE DISK FORMAT '/data/backup/%U' CURRENT CONTROLFILE FOR STANDBY;
也可以备份数据库时,同时备份归档文件和控制文件,如:
RMAN > backup database include current controlfile plus archivelog skip inaccessable ;

 

所有文件的备份集会放在 /data/backup/%U 下
backup format '/data/backup/%U' database plus archivelog ; 

归档日志文件备份集放在flash_recover_area下,数据文件及其他文件的备份集会放在 /data/backup/%U下
backup database format 'e:\data\backup\%U' plus archivelog ;

归档文件的备份集会放在 /data/backup/%U 下,数据文件及其他文件会放在flash_recover_area下
backup database plus archivelog format '/data/backup/%U';

 

 

9.  增量備份

增量备份 -- 只对上一次备份以来发生变化的数据块进行备份,通过增量备份可以使我们使用
更少的磁带或磁盘空间,减少完成备份的时间。我们既可以在归档模式下进行增量备份,也可
以在非归档模式下进行(非归档模式下需要启动到mount状态)。

如果RMAN在进行增量备份时,没有发现可以参照的基本备份(0级备份),那么RMAN会自动进行0级
的基本备份操作,并忽略我们指定的增量备份级别。增量备份的级别,分别为0,1,2,3,4,5。
一般我们只用到0,1,2这三个级别的备份。

增量备份两种类型 --  差异增量备份和累积增量备份

差异增量备份(differential incremental backup) -- 每次备份时,只对那些小于等于当前
级别的备份以来变化过的数据块进行备份 (备份上级及同级备份以来所有变化的数据块,差异
增量是默认增量备份方式)。 差异增量备份是增量备份的缺省类型。优点:备份快,缺点:恢复慢.

例子:
1. 周日0级备份
RMAN > backup incremental level=0 database ;
2. 周一,二,四,五,六执行2级备份
RMAN > backup incremental level=2 database ;
3. 周三进行1级备份 
RMAN > backup incremental level=1 database ;


累积增量备份(cumulative incremental backup) -- 每次备份时,只对那些小于(注意:没有等于)
当前级别的备份以来变化过的数据块进行备份 (备份上级备份以来所有变化的块)。优点:恢复快,
缺点:备份慢

例子:
1. 周日0级备份
RMAN > backup incremental level=0 database ;
2. 周一,二,四,五,六执行2级备份
RMAN > backup incremental level=2  cumulative  database ;
3. 周三进行1级备份 
RMAN > backup incremental level=1 cumulative  database ;

 

 

10. 块改变跟踪 (Block change tracking)  

参考相关文档 : http://space.itpub.net/35489/viewspace-615786  

从Oracle10g开始,为加快增量备份的速度,Oracle引入一个文件,专门用来记录自从
上次备份以来所变化过的数据块的地址,该文件叫做变化跟踪文件(change tracking  file)。
只要有进程修改了某个数据块,则会通过CTWR(Change Tracking Writer)后台进程将数
据块的地址写入变化跟踪文件,只要创建了变化跟踪文件,RMAN就会自动使用该文件进
行增量备份。变化跟踪文件完全由Oracle来管理。之所以加快了备份速度,是因为RMAN
可以不再扫描整个数据文件以查找变更数据。一般开启这个特性对数据库性能不会有太
大影响。

默认情况下,如果我们指定了初始化参数 db_create_file_dest,那么我们在创建变化
跟踪文件时,可以不指定该文件的路径及名称。
SQL> alter database enable block change tracking ;
发出该命令后,会在db_create_file_dest指定的目录下创建变化跟踪文件,如果没有
指定参数db_create_file_dest 的值, 那么需要在后面加入路径: 
SQL> alter database enable block change tracking using
     file '/data/bc_track/rman_change_track.f'  reuse ;

我们也可以通过disable命令禁用并删除变化跟踪文件。
SQL > alter database disable block change tracking ;

可以通过查询v$block_change_tracking来确认是否启用了变化跟踪文件。跟踪文件
最小为10M,最小扩展单位为10M.
SQL> select status ,filename from v$blcok_change_tracking ; 

 

1).通过位图跟踪两次备份间变化的数据块;
2).每次备份前进行位图切换;
3).开发增量备份策略时,要考虑到8个位图的限制;
4).在RAC环境中,change tracking file需要放在共享存储上;
5).Change tracking file的大小和数据库的大小和enabled的redo thread的个数成正比;
6).Change tracking file的大小和数据更新的频率无关;
7).在mount或open状态下enable change tracking;
8).Enable change tracking
  ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE
  '/mydir/rman_change_track.f' REUSE;
9).Disable change tracking
ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;
10). 检查change tracking状态
SELECT STATUS, FILENAME FROM V$BLOCK_CHANGE_TRACKING;
11).改变change tracking file的位置
a. 不关闭数据库的方式
SQL> ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;
SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE 'new_location';
注意:这种方式会丢失change tracking file的内容
b. 关闭数据库的方式
SQL> SELECT FILENAME FROM V$BLOCK_CHANGE_TRACKING;(确定当前的文件名)
SQL> SHUTDOWN IMMEDIATE
用系统命令将文件move到新路径:
SQL> ALTER DATABASE RENAME FILE
'/disk1/changetracking/o1_mf_2f71np5j_.chg' TO
'/disk2/changetracking/o1_mf_2f71np5j_.chg';
SQL> ALTER DATABASE OPEN;

 

 

11.  增量追加备份(Incrementally Updated Backups)

从Oracle10g开始,RMAN引入了一个新的特性,能够将增量备份应用到某个镜像副本上去。

增量追加备份(Incrementally Updated Backups):前滚镜像拷贝(Rolling Forward Image
Copy Backups) .

增量追加备份工作原理:首先创建一个文件镜像拷贝,然后定期把从上次镜像拷贝最大SCN
以来变化的数据块追加到镜像拷贝文件中。增量追加备份可以达到快速恢复的目的,如果
是每天进行增量追加的话,在进行恢复的时候,我们最多应用一天的REDO数据就可以完成恢
复。

创建增量追加备份,格式如下:
BACKUP... FOR RECOVER OF COPY WITH TAG


一个基础的增量追加备份示例:简称basic脚本:

RMAN > run{
recover copy of database with tag 'incr_update' ;
backup incremental level 1 for recover of copy with tag 'incr_update' database;
}

整个basic脚本的执行情况: 

第一次运行该脚本没有数据文件拷贝和增量备份,所以执行RECOVER COPY OF DATABASE WITH
TAG 'incr_update' 没有任何结果;执行BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY
WITH TAG 'incr_update' DATABASE ; 将产生数据文件的镜像文件拷贝。

第二次运行该脚本,由于第一次运行的时候BACKUP INCREMENTAL LEVEL 1…… FOR RECOVER
OF COPY WITH TAG……命令产生了一个镜像文件拷贝,但是没有Level 1的增量备份,所以
执行RECOVER COPY OF DATABASE WITH TAG 'incr_update' 还是没有任何结果;执行BACKUP
INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'incr_update' DATABASE ; 将产生
Level 1增量备份。

第三次运行该脚本,执行RECOVER COPY OF DATABASE WITH TAG 'incr_update'命令将把第二
次执行该脚本产生的Level 1增量备份追加到镜像文件拷贝,同时又产生一个新的LEVEL1增量
备份文件。

以后再执行该脚本都是把上次产生的Level 1的增量备份追加到镜像文件拷贝,然后再产生一
个新的Level 1的增量备份文件。

如果需要恢复,我们首先恢复镜像文件拷贝和最后一次Level 1增量备份,最后应用redo .

 

 


12.  显示备份信息

a. list命令

显示当前数据库中的所有备份
RMAN >list backup ;

显示特定备份集的信息
RMAN > list backupset 7 ;

显示对某个表空间或某个文件的备份信息
RMAN > list backup of tablespace users;
RMAN > list backup of datafile 4 ;

显示数据库或某个表空间镜像副本的信息
RMAN > list copy of database;
RMAN > list copy of tablespace users ;

显示有关归档日志文件的备份信息
RMAN > list backup of archivelog all ;
RMAN > list backup of archivelog from time='sysdate-2' ;

显示有关控制文件或spfile的备份信息
RMAN > list backup of controlfile ;
RMAN > list backup of spfile ;

显示有关控制文件的的镜像副本信息
RMAN > list copy of controlfile ;

备注: 大多数list命令都可以在末尾使用summary参数,表示汇总形式
显示有关备份的信息。
RMAN > list backup summary;
RMAN > list backup of tablespace users summary;

我们可以显示每个备份片和备份集的信息
RMAN > list backup by file ;


列出过期(expired)备份,所谓过期的备份指的是备份的文件已经丢失(比如手工删除
了归档日志文件),但是备份的元数据中仍然记录着这些备份的信息。我们需要先使用
下面的命令让RMAN检查当前有哪些已经过期的备份集。
RMAN > crosscheck backupset ;

然后使用下面的命令显示那些标示为过期的备份
RMAN > list expired backupset ;

最后我们使用下面的命令删除这些过期的备份
RMAN > delete noprompt expired backupset ;


b. report 命令

该命令具有一定的分析能力。能够回答诸如哪些数据文件需要备份,哪些可以被
删除等问题。

RMAN> report schema ;  显示数据库的结构,包括数据文件的路径及大小
RMAN > report obsolete ;  找出可以丢弃的备份文件 。
RMAN > delete noprompt obsolete;  删除备份文件 。
RMAN > report need backup ;   显示哪些文件需要备份。
RMAN > report need backup incremental 3 ;
表示那些在恢复时,需要应用的增量备份的个数超过3个的所有数据文件。

RMAN > report need backup days 3 ; 显示最近3天以来没有备份过的数据文件;

RMAN > report need backup redundancy 3; 
显示那些没有3个完整备份的数据文件 。

RMAN > report need backup recover window of 3 days ;
表示如果需要恢复到3天前的状态,还需要备份哪些数据文件。

注意: 使用report need backup 显示哪些数据文件需要备份时,都是以完全备份
为基础,也即是将数据库恢复到最新状态为前提条件的。


 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-705806/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle , MySQL, SAP IQ, SAP HANA, PostgreSQL, Tableau 技术讨论,希望在这里一起分享知识,讨论技术,畅谈人生 。

注册时间:2007-12-10

  • 博文量
    5595
  • 访问量
    13782172