quot;sysdate-1" all delete input); 6> release channel dev1; 7> }使用下面的命令显示恢复目录中的归档日志: RMAN> list backupset of archivelog all;注意:RMAN找到归档日志后会备份指定日志,如果无法找到日志,它也不会返回错误信息。 8.2. Backing up the online logs 备份联机日志 联机日志不能用RMAN来备份,必须先将其归档。 为了实现这点,必须在RMAN中执行如下SQL语句: RMAN> run { 2> allocate channel dev1 type disk; 3> sql "alter system archive log current"; 4> backup 5> format "/oracle/backups/log_t%t_s%s_p%p" 6> (archivelog from time "sysdate-1" all delete input); 7> release channel dev1; 8> }上面的脚本可以在执行完一个完整的联机数据库备份后执行,确保所有的重做日志可以将数据库恢复到一个一致性的状态。 注意:不可以标识归档日志备份集。 9. 增量备份 N级别增量备份备份从最近的N级别或者更小级别以来的所有更改过的数据块内容。增量备份分为两种,一种是累积增量备份,一种是非累积增量备份。 累积增量备份包括自最后一次在更低级别进行备份以来所有改动过的数据块。 非累积增量备份包括自前一次在同级或者更低级别进行备份以来改动过的数据块。 9.1. Level 0--增量备份策略的基础 Level 0 是增量备份策略的基础--the basis of the incremental backup strategy RMAN> run { 2> allocate channel dev1 type disk; 3> backup 4> incremental level 0 5> filesperset 4 6> format "/oracle/backups/sunday_level0_%t" 7> (database); 8> release channel dev1; 9> }Line# 4: 0级备份 5: 定义每个backupset 的最大文件数 使用LIST语句查看,数据库备份集的列表显示中, "type" 将显示 "Incremental","LV"列将显示"0" 。 9.2. 使用增量备份的案例 一个典型的增量备份案例如下: 星期天晚上 - level 0 backup performed 星期一晚上 - level 2 backup performed 星期二晚上 - level 2 backup performed 星期三晚上 - level 1 backup performed 星期四晚上 - level 2 backup performed 星期五晚上 - level 2 backup performed 星期六晚上 - level 2 backup performed 星期天晚上 - level 0 backup performed 10. 恢复 恢复案例如下: 10.1. Database open,datafile deleted 数据库打开时,文件被删除 数据文件在数据库打开时被删除。有两种方法可以对打开的数据库进行恢复:还原数据文件或者表空间。下面两个实例显示了该方法: (a) Datafile recovery 数据文件恢复 RMAN> run { 2> allocate channel dev1 type disk; 3> sql "alter tablespace users offline immediate"; 4> restore datafile 4; 5> recover datafile 4; 6> sql "alter tablespace users online"; 7> release channel dev1; 8> }(b) Tablespace recovery 表空间恢复 RMAN> run { 2> allocate channel dev1 type disk; 3> sql "alter tablespace users offline immediate"; 4> restore tablespace users; 5> recover tablespace users; 6> sql "alter tablespace users online"; 7> release channel dev1; 8> }注意:如果还原系统表空间文件,数据库必须关闭,因为系统表空间不可以脱机。 10.2. Complete restore (lost online redo) and rollforward - database closed 完全还原(丢失联机日志)并且前滚 - 数据库关闭 RMAN> run { 2> allocate channel dev1 type disk; 3> set until logseq=105 thread=1; 4> restore controlfile to "/oracle/dbs/ctrltargdb.ctl"; 5> replicate controlfile from "/oracle/dbs/ctrltargdb.ctl"; 6> restore database; 7> sql "alter database mount"; 8> recover database; 9> sql "alter database open resetlogs"; 10> release channel dev1; 11> }Notes: "set until" 命令指明恢复到指定的日志文件。这一点在数据文件恢复时很重要,否则RMAN将试图恢复最近的数据文件,该数据文件可能在指定的日志以前。 "replicate controlfile" 复制还原的控制文件到INIT.ORA指定的控制文件。 如果数据库使用WITH RESETLOGS打开,则需要使用RESET DATABASE命令注册改变后的数据库。在使用RESETLOGS命令打开数据库后强烈建议做一个完全的数据库备份。 10.3. 还原数据文件的子集,完全恢复 RMAN> run { 2> al |