1. 概述
Oracle数据库的恢复实际上包含了两个概念:数据库修复(RESTORE)与数据库恢复(RECOVER)。
数据库修复:指利用备份的数据库文件来替换已经损坏的数据库文件或者将其恢复到一个新的位置。RMAN在进行修复操作时,会利用恢复目录来获取备份信息,并从中选择最合适的备份进行修复操作。
选择备份时有两个原则(1、选择距离恢复目录时刻最近;2、优先选择镜像复制,其次才是备份集)
数据库恢复:是指利用重做日志或增量备份来重建丢失的数据。
2. 完全恢复(三步)
2.1 启动数据库到加载状态
RMAN>SHUTDOWN IMMEDIATE;
RMAN>STARTUP MOUNT;
2.2 执行恢复操作
RMAN>RESTORE DATABASE;
RMAN>RECOVER DATABASE DELETE ARCHIVELOGS SKIP TABLESPACE TEMP;
注意:DELETE ARCHIVELOGS和SKIP TABLESPACE两个参数是可选择的,作用如下:
DELETE ARCHIVELOGS:表示RMAN将在完成恢复过程后自动删除那些在恢复过程中修复的归档日志文件。
SKIP TABLESPACE:跳过指定表空间,比如临时表,当然临时表空间即使你不跳过它也不会恢复的。
2.3 打开数据库
RMAN>ALTER DATABASE OPEN;
注意:如果你的数据库并非处于归档模式,必须使用ALTER DATABASE OPEN RESETLOGS来打开数据库,因为RMAN会认为在非归档模式下是一个不一致的备份,执行resetlogs之后,oracle将会把scn重新置为0。
3. 恢复表空间(三步)
3.1. 启动数据库到加载状态
RMAN> SHUTDOWN IMMEDIATE;
RMAN> STARTUP MOUNT;
3.2. 进行恢复操作,在恢复之前,如果需要被恢复的表空间未处于脱机状态,需要通过alter tablespace ... Offline语句将其置为脱机:
RMAN> SQL 'ALTER TABLESPACE jweb OFFLINE IMMEDIATE';
RMAN> RESTORE TABLESPACE jweb;
RMAN> RECOVER TABLESPACE jweb;
RMAN> SQL 'ALTER TABLESPACE jweb ONLINE';
3.3 打开数据库
RMAN> ALTER DATABASE OPEN;
4. 恢复数据文件(三步)
恢复表空间实际就是恢复其所对应的数据文件(一个表空间可能对应多个数据文件),所以步骤与上相似。
4.1 启动数据库到加载状态
RMAN> SHUTDOWN IMMEDIATE;
RMAN> STARTUP MOUNT;
4.2 进行恢复操作,在恢复之前,如果需要被恢复的表空间未处于脱机状态,需要通过alter tablespace ... Offline语句将其置为脱机,操作数据文件时可以直接指定数据文件,也可以以数据文件序号代替:
RMAN>SQL 'ALTER DATABASE DATAFILE 10 OFFLINE;
RMAN> RESTORE DATAFILE 10;
RMAN> RECOVER DATAFILE 10;
RMAN>SQL ' ALTER DATABASE DATAFILE 10 ONLINE;
4.3 打开数据库
RMAN> ALTER DATABASE OPEN;