rman恢复总结
前些日子公司数据库down掉了,幸好有rman备份,花了些时间恢复了,才避免了大的损失
今天闲了,总结如下
备份策略:周二全备,周三至下周一为累积增量一级备份;表空间smsafeindex,smustindex,smstaging三个表空间排除在外。
恢复步骤:
1.确定恢复到什么地方。
(1)基于scn
(2)基于时间点
(3)基于取消的
下面以基于时间点的恢复为例。
2.全备和最近一次的累积备份以及从最近一次累积备份以来的所有归档日志拷贝到相应目录。
3.如果控制文件损坏,要先恢复控制文件。
(1)拷贝没有损坏的控制文件覆盖掉损坏的控制文件
(2)从备份中恢复
rman>restore controlfile [to 'controlfile_name'] from 'backup_connrolfile_name';
(3)从快照中恢复
rman>restore controlfile [to '相应目录'] from '快照';
(4)重建控制文件
4.mount数据库
rman>startup mount;
5.restor数据库
rman>restor database skip tablespace smsafeindex,smustindex,smstaging;
6.recover数据库
rman>recover database skip forever tablespace smsafeindex,smustindex,smstaging until to_date('2007-01-01 22:00:00','yyyy-mm-dd hh24:mi:ss');
7.打开数据库
rman>alter database open resetlogs;(不完全恢复要用resetlogs)
8.删除并重建表空间
如果表空间上有唯一或是主键索引,需要先禁用相关约束
SQL>select constraint_name,status from dba_constraints where owner='SMSAFE';
SQL>select index_name,status from ind;
SQL>alter table TABLE modify constraint CONSTRAINT_NAME disable;
9.重建索引(设置参数sort_area_size=104857600)
如果创建的索引较大,最好创建一个大的临时表空间,最后再删除掉。
切换用户的临时表空间
SQL>alter user smsafe temporary tablespace smtemp;
如果上步禁用了相关约束,需要先建立相关索引,然后启用约束。
SQL>alter table TABLE modify constraint CONSTRAINT_NAME using index INDEX_NAME enable;
10.恢复完成后做个完全备份。