备份从 sequence 1 开始的归档:
RMAN> backup archivelog from sequence 1[to sequence =’n]; 备份没有三次备份的归档:
RMAN> backup archivelog not backed up 3 times; 备份所有归档,然后删除归档:
RMAN> backup archivelog all delete input; 恢复:
显示恢复目录中的归档日志:
RMAN> list backupset of archivelog all;
一般情况下,在 RMAN 的普通恢复过程中,不必恢复归档的重做日志。不过偶尔也需 要恢复重做日志,例如我们用 Log Miner 来从归档中查找一些东西。 RMAN命令举例:
RMAN> RESTORE ARCHIVELOG ALL;
RMAN> RESTORE ARCHIVELOG FROM LOGSEQ=1UNTIL LOGSEQ=20; RMAN> RESTORE ARCHIVELOG FROM LOGSEQ=1;
可以用 SET命令来指定归档日志的还原位置,例如: RMAN> run{
set archivelog destination to \restore archivelog all; }
需要注意的是,即使新的归档日志目录不同于默认的归档日志目录,如果 Oracle 判定
日志已存在,也不会恢复该归档日志文件。 4.4.4.5 联机日志的备份
联机日志不能用 RMAN 来备份,可以先将其归档,再备份。为了实现这点,必须在 RMAN
中执行归档命令语句: RMAN> run {
2> allocate channel dev1 type disk; 3> sql \
4> backup (archivelog from time \5> \6> release channel dev1; 7> }
上面的脚本可以在执行完一个完整的联机数据库备份后执行,确保所有的重做日志可以
将数据库恢复到一个一致性的状态。
当然,也可以在全库备份时使用 plus archvielog 选项,将自动完成联机日志的备份。
4.4.4.6 控制文件和服务器参数文件的备份与恢复备份: // 设置文件名格式
RMAN> set controlfile autobackup format for device t ype disk to 'ctl_%F'; 1. RMAN> configure controlfile autobackup on; // backup database 时将自动备份
2. RMAN> backup current controlfile; 3. RMAN> backup .... include control file;
4. RMAN> backup file 1; // system datafile 自动备份 恢复SPFILE:
SPFILE(PFILE)的丢失/损坏,对数据库不会产生致命影响,可以从其他方式恢复。 不过既然 RMAN 的备份计划中包括了 SPFILE 的备份,那么就可以使用 RMAN 来还原 SPFILE了。
$ rman target / catalog \
RMAN> set dbid=153910023 // SET DBID 这个步骤是不能省略的,否则会报错。
RMAN> restore spfile from autobackup [MAXDAYS 100]; // 或者 restore spfile;
RMAN> startup force 或者从某个备份集恢复:
RMAN> restore spfile from backupset bs_num 命令。 使用 dbms_backup_restore 包恢复服务器参数文件:
在一些不常见的情况下,我们可能需要直接使用 dbms_backup_restore 包来恢复 spfile。当然这个包也可以用来恢复其它数据,是常规办法都没有用的时候的一个利器。 这个 包 可 以在数据库 NOMOUNT 状态 下 使用。 假 设我 们 有一 个自 动 备份文 件
C-2600315304-20060829-02,我们需要从这里恢复数据,那么可以通过执行下面的脚本 来完成: SQL> DECLARE
DEVTYPE VARCHAR2(256); DONE BOOLEAN; BEGIN
DEVTYPE:=DBMS_BACKUP_RESTORE.deviceallocate(NULL); DBMS_BACKUP_RESTORE.restoresetdatafile;
DBMS_BACKUP_RESTORE.restorespfileto('/back/SPFILE.ORA'); DBMS_BACKUP_RESTORE.restorebackuppiece(
'/back/C-2600315304-20060829-02',DONE=>done); DBMS_BACKUP_RESTORE.devicedeallocate(NULL); END;
恢复控制文件:
RMAN> startup nomount; RMAN> set dbid=153910023 RMAN> restore controlfile from autobackup 或
RMAN> restore controlfile from'/arch/ct_c-2347671489-20060630-00'; 联机状态:目标数据库 MOUNT 或 OPEN
RMAN> restore controlfile to 'd:\\temp\\control01.ctl'; 然后再执行恢复数据库的其他步骤: RMAN> restore database; RMAN> recover database;
RMAN> alter database open resetlogs; 使用 dbms_backup_restore 包恢复控制文件: SQL> DECLARE
DEVTYPE VARCHAR2(256); DONE BOOLEAN; BEGIN
DEVTYPE:=DBMS_BACKUP_RESTORE.deviceallocate(NULL); DBMS_BACKUP_RESTORE.restoresetdatafile;
DBMS_BACKUP_RESTORE.restorecontrolfileto('/back/CONTROL01.CTL'); DBMS_BACKUP_RESTORE.restorebackuppiece
('/back/C-2600315304-20060829-00',DONE=>done); DBMS_BACKUP_RESTORE.devicedeallocate(NULL); END; /
4.4.4.7 备份集的备份的备份与恢复 备份:
备份所有备份集:
RMAN> backup backupset all; 备份指定备份集:
RMAN> backup backupset bs_num;
恢复:(这种备份只是增加一个镜像,不用恢复)
主要用于改变备份集的位置,或者创建多个镜像备份,比如将备份集从硬盘备份到磁
带。如果要详细了解,见我在 ITPUB上发的帖子:
http://www.itpub.net/viewthread.php?tid=1007747&page=1&extra= 4.4.5 归档模式下的不完全恢复
不完全恢复就意味着有数据的丢失。引起不完全恢复的原因有很多,如丢失了联机日志 或某个归档日志。另外如果出现了严重损害数据库的用户错误,比如某用户错误的删除了某 个重要的数据,那么数据库也要恢复到这个错误操作之前。 不完全恢复会影响整个数据库,需要在 MOUNT 状态下进行。在不完全恢复完成之后, 通常需要使用 resetlogs 选项来打开数据库。resetlogs 表示一个数据库逻辑生存期的结束和 另一个数据库逻辑生存期的开始。数据库的逻辑生存期也被称为一个对应物(incarnation)。 每次使用 resetlogs 选项来打开数据库后都会创建一个新的数据库对应物,这对于恢复操作 来说非常重要。每次使用 resetlogs 后,SCN计数器不会被重置,但是 Oracle会重置联机日 志序列号,同时还会重置联机重做日志内容。因此执行了 resetlogs 之后,应该立即重新备 份整个数据库,否则恢复起来相当麻烦。 (注:Oracle 10g 中已经可以在 resetlogs 之后不备 份数据库,恢复的时候能够穿越 resetlogs)