在恢复用的机器上配置好与源数据库相同的目录,环境变量设好ORACLE_SID和ORACLE_HOME。
拷贝主库的control file过来,将存储rman备份的nsf直接mount过来,也使用相同的目录,这样方便restore。
run
{
--强制所有的数据文件offline,只是为了安全的目的。
sql "alter database mount clone database";
--为需要恢复的数据文件指定新的路径,也是安全考虑,防止在主库上恢复的时候,覆盖主库文件。
--因为这里是在另外一个库上作恢复,所以可以设成和主库一样。
--注意,undo和system是必须要恢复的,呵呵
set newname for datafile 2 to '/disk2/oradata/crmtemp/undotbs01.dbf';
set newname for datafile 69 to '/disk2/oradata/crmtemp/undotbs03.dbf';
set newname for datafile 79 to '/disk4/oradata/crmtemp/undotbs04.dbf';
set newname for datafile 93 to '/data2/oradata/crmtemp/undotbs05.dbf';
set newname for datafile 1 to '/disk1/oradata/crmtemp/system01.dbf';
set newname for datafile 45 to '/disk1/oradata/crmtemp/appdata01.dbf';
set newname for datafile 46 to '/disk1/oradata/crmtemp/appdata02.dbf';
--restore 表空间
restore tablespace system,UNDOTBS1,APPDATA1M;
--其他的数据文件offline drop
sql "alter database datafile 3,4,5,6,7,8,13,14,15,16,18,19,20,23,25,26,27,28,29,30,31,33,35,134 offline drop";
--将newname的变化应用的controlfile
switch datafile all;
--把需要恢复的数据文件online
sql "alter database datafile 2, 69, 79, 93, 1, 45, 46 online";
--不完全恢复,关键就是这里使用了skip tablespace,把不需要恢复的ts跳过
recover database until TIME "TO_DATE('2005-6-7 15:00:00', 'yyyy-mm-dd hh24:mi:ss')"
skip tablespace TEMP,
INDX,
TOOLS,
ADMIN_DATA1M,
TPCRM,
...;
}
恢复完后,需要重建controlfile,因为目前的controlfile是clone状态的,需要
alter database backup controlfile to trace;
然后提取创建脚本。因为没有online redo,所以使用resetlog的那种方式。
创建完毕后:
alter database open resetlogs;
数据库打开,马上把需要的表exp出来:
exp userid=zeus/zeus file=/home/oracle/xiaojinyu.dmp tables=(CS_COL_CONTENT,CS_COLUMNS,SAMPLE,SAMPLE_GROUP) rows=Y
然后imp到开发库上,交给应用处理。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/594892/viewspace-966474/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/594892/viewspace-966474/