废话一句,恢复的前提是要有备份;所以说备份很重要。
对数据库进行完全介质恢复
1、启动数据库到加载状态
RMAN> SHUTDOWN IMMEDIATE;
RMAN> STARTUP MOUNT;
2、执行恢复操作
RMAN> RESTORE DATABASE;
RMAN> RECOVER DATABASE DELETE ARCHIVELOGS SKIP TABLESPACE TEMP;
注意:DELETE ARCHIVELOGS和SKIP TABLESPACE两个参数是可选择的,作用如下: DELETE ARCHIVELOGS :表示RMAN将在完成恢复过程后自动删除那些在恢复过程中产生的归档日志文件,RMAN并不会删除restore命令之前的归档文件。 SKIP TABLESPACE :跳过指定表空间,比如临时表,当然临时表空间即使你不跳过它也不会恢复的。
3、打开数据库
RMAN> ALTER DATABASE OPEN;
注意:如果你的数据库并非处于归档模式,那么必须使用ALTER DATABASE OPEN RESETLOGS来打开数据 库,因为RMAN会认为在非归档模式下是一个不一致的备份,执行resetlogs之后,oracle将会把scn重新置为0。
对单个表空间使用RMAN进行恢复
1、启动数据库到加载状态
RMAN> SHUTDOWN IMMEDIATE;
RMAN> STARTUP MOUNT;
2 、进行恢复操作,在恢复之前,如果需要被恢复的表空间未处于脱机状态,需要通过alter tablespace name offline语句将其置为脱机
RMAN> SQL ¨ALTER TABLESPACE test OFFLINE IMMEDIATE¨;
RMAN> RESTORE TABLESPACE test;
RMAN> RECOVER TABLESPACE test;
RMAN> SQL ¨ALTER TABLESPACE test ONLINE¨;
3、打开数据库
RMAN> ALTER DATABASE OPEN;
恢复单个数据文件--当然也可以是多个
事实上,恢复表空间实际就是恢复其所对应的数据文件(一个表空间可能对应多个数据文件),所以步骤与上相似。
1、启动数据库到加载状态
RMAN> SHUTDOWN IMMEDIATE;
RMAN> STARTUP MOUNT;
2 、进行恢复操作
在恢复之前,如果需要被恢复的表空间未处于脱机状态,需要通过alter tablespace name offline语句将其置为脱机,操作数据文件时可以直接指定数据文件,也可以以数据文件序号代替:
RMAN>SQL ¨ALTER DATABASE DATAFILE 6 OFFLINE;
RMAN> RESTORE DATAFILE 6; 这里也可以使用文件具体路径,如:RESTORE DATAFILE /u01/oradata/bys1/blocktest.dbf
RMAN> RECOVER DATAFILE 6;
RMAN>SQL ¨ ALTER DATABASE DATAFILE 6 ONLINE;
3、打开数据库
RMAN> ALTER DATABASE OPEN;
附:查file_id,file_name与TABLESPACE_NAME的对应可以使用如下语句:
SYS@bys1>select file_name,file_id,tablespace_name from dba_data_files order by file_id;
FILE_NAME FILE_ID TABLESPACE_NAME
---------------------------------------- ---------- ------------------------------
/u01/oradata/bys1/system01.dbf 1 SYSTEM
/u01/oradata/bys1/sysaux01.dbf 2 SYSAUX
/u01/oradata/bys1/undotbs01.dbf 3 UNDOTBS1
/u01/oradata/bys1/users01.dbf 4 USERS
/u01/oradata/bys1/example01.dbf 5 EXAMPLE
/u01/oradata/bys1/block.dbf 6 BLOCK
或者如果需要查询TEMP文件,可以使用如下:
SYS@bys1>select file_name,file_id,tablespace_name from dba_data_files union all select file_name,file_id,tablespace_name from dba_temp_files order by file_id;
FILE_NAME FILE_ID TABLESPACE_NAME
---------------------------------------- ---------- ------------------------------
/u01/oradata/bys1/system01.dbf 1 SYSTEM
/u01/oradata/bys1/temp01.dbf 1 TEMP
/u01/oradata/bys1/sysaux01.dbf 2 SYSAUX
/u01/oradata/bys1/undotbs01.dbf 3 UNDOTBS1
/u01/oradata/bys1/users01.dbf 4 USERS
/u01/oradata/bys1/example01.dbf 5 EXAMPLE
/u01/oradata/bys1/block.dbf 6 BLOCK