使用RMAN备份并恢复
Backup 备份命令生成 Backup sets (备份集合),以 oracle 专有的格式保存,
由一个完全的所有的备份片集合构成,构成一个完全备份或增量备份。
1.1.1 BACKUP 备份命令选项
设置标记(TAG)
RMAN> backup database tag='test backup';
限制备份集大小
RMAN> backup database maxsetsize=100M;
只备份新增部分
RMAN> backup incremental level 0 database;
备份控制文件同时备份SPFILE
RMAN> backup current controlfile;
RMAN> configure controlfile autobackup on; // 默认是 off
也可以在备份数据库或者文件的时候加上 include current controlfile 选项。
例如:
RMAN> backup database include current controlfile;
备份时如果包含了 SYSTEM表空间,将自动备份控件文件和 SPFILE
RMAN> backup file 1;
使用自动备份进行恢复:
RMAN> restore spfile/controlfile to '/xx/xx' from autobackup;
备份归档日志(9i)
RMAN> backup archivelog all;
RMAN> backup ... plus archivelog; // 在备份其他时同时备份归档日志
plus archivelog 隐含如下步骤:
? 运行一个 ALTER SYSTEM ARCHIVELOG CURRENT 命令
? 运行 BACKUP ARCHIVELOG ALL 命令。注意如果备份优化被启用,
RMAN只会备份未备份过的日志
? 备份 BACKUP命令中定义的文件
? 运行 ALTER SYSTEM ARCHIVE LOG CURRENT 命令
? 备份所有的剩下的归档日志
备份完后删除归档日志
RMAN> backup ... ARCHIVELOG all delete all input;
修改备份集的保存策略
例如:将备份设置为永久有效
RMAN> backup database keep forever logs|nologs;
设置为有效期 180 天
RMAN> backup database keep until time='sysdate+180';
重写configure exclude / noexclude
通过 configure exclude 可以配置 RMAN 不备份上次备份以来没有发生变化的数据文件。
如果要确保 RMAN备份这些数据文件,可以在 backup命令中添加 noexclude 选项。
例如:
RMAN> backup database noexclude;
跳过脱机的、不可存取的或者只读的数据文件
RMAN> backup database skip offline skipinaccessible skipreadonly;
强制备份只读的数据文件
RMAN> backup database force;
备份指定周期内没有备份的数据文件
RMAN> backup database not backed up;
RMAN> backup database not backed up since time='sysdate-2';
在备份操作期间检查逻辑讹误
RMAN> backup check logical database; //在检查逻辑错误的同时进行备份
RMAN> backup validate check logical database; //只检查
建立压缩备份集
RMAN> backup as compressed backupset tablespace users
FORMAT='D:\BACKUP\%d_%s.dbf';
1.1.2 RESTORE/RECOVER 恢复命令选项
数据库恢复
RMAN> restore/revover database ;
表空间恢复
RMAN> restore/revover tablespace xx ;
只读表空间的恢复默认情况下,即使丢失了只读的数据文件,RMAN 也不会在执行完全数据库还原 操作时候还原只读的数据文件。
要在完全恢复期间还原只读的数据文件,就必须在 RESTORE 命令中使用 CHECK READONLY 参数:
RMAN> RESTORE DATABASE CHECK READONLY;
恢复SPFILE/控制文件
使用自动备份恢复 SPFILE、控制文件
RMAN> startup nomount;
RMAN> set dbid=153910023;
RMAN> restore controlfile from autobackup;
RMAN> restore spfile/controlfile to '/xx/xx' from autobackup;
或
RMAN> restore controlfile from'/arch/ct_c-2347671489-20060630-00';
联机状态:目标数据库 MOUNT 或 OPEN
RMAN> restore controlfile to 'd:\temp\control01.ctl';
归档重做日志的还原
RMAN> RESTORE ARCHIVELOG ALL;
RMAN> RESTORE ARCHIVELOG FROM LOGSEQ=1 UNTIL LOGSEQ=20;
RMAN> RESTORE ARCHIVELOG FROM LOGSEQ=1;
也可以用 SET命令来指定归档日志的还原位置,
例如:
RMAN> run
{
set archivelog destination to "d:\temp";
restore archivelog all;