ITPub博客

首页 > 数据库 > 数据库开发技术 > [转]对部分表空间作不完全恢复

[转]对部分表空间作不完全恢复

原创 数据库开发技术 作者:halfgene 时间:2007-08-28 14:57:08 0 删除 编辑
对部分表空间作不完全恢复[@more@]

在恢复用的机器上配置好与源数据库相同的目录,环境变量设好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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    44
  • 访问量
    52964