巧用Oracle备份集在测试机上做不完全恢复

日期: 2008-06-14 作者:Patrick 来源:TechTarget中国

  如果表的许多分区被意外drop,需要利用带库上的备份集在测试机上做不完全恢复,而具体日期需要达到一个特定的时间,那么我们可以参考下文中的解决方法。


  ◆首先需要用logminer查出删除语句:







 uncompress /oracle/oradata/xxx/xxx.ARC.Z 
  …
  begin
  sys.dbms_logmnr.add_logfile(’/oracle/oradata/xxx/xxx.ARC’);
  …
  end;
  begin sys.dbms_logmnr.start_logmnr(Options => sys.dbms_logmnr.DICT_FROM_ONLINE_CATALOG);   end;
  create table xsb_logminer_1 as 
  select timestamp, seg_name,operation, sql_redo 
  from V$LOGMNR_CONTENTS 
  where seg_owner=’XXX’ and operation=’DDL’ and sql_redo like ’alter TABLE XXX drop PARTITION %’;
  BEGIN sys.dbms_logmnr.end_logmnr();END;
 
  ◆然后在生产库上创建pfile:







create pfile=’…’ from spfile;
 
  需要从带库上恢复rman备份集至生产机上,将此备份集FTP至测试机上,连同pfile文件.


  在测试机上创建与生产机上相同目录,admin …


  在测试机上创建新实例:







  orapwd file=… password=xxx

   然后修改pfile文件内容,改变control_files内容。


  ◆启动新实例







export ORACLE_SID=xxx
  sqlplus / as sysdba
  startup nomount pfile=’/home/oracle/init_xxx.ora’;
  create spfile from pfile=’/home/oracle/init_xxx.ora’;


  exit


  RMAN target sys/xxx
  restore controlfile from ’…’;
  startup mount
  –crosscheck backup;
  list backup;
  run
  {
  set newname for datafile 1 to ’/oracle/oradata/xxx/system01.dbf’;
  set newname for datafile 2 to ’/oracle/oradata/xxx/undo01.dbf’;
  set newname for datafile 3 to ’/oracle/oradata/xxx/sysaux01.dbf’;
  set newname for datafile 6 to ’/oracle/oradata/xxx/pay_ts01.dbf’;
  restore datafile 1;
  restore datafile 2;
  restore datafile 3;
  restore datafile 6;
  }
  (注:发现单个datafile恢复不如整库恢复快!)
  sql ’alter database backup controlfile to trace’;
  shutdown immediate;
  exit

 
  然后修改controlfile文件内容,去掉不用的文件名


  ◆不完全恢复数据库:  






sqlplus / as sysdba
  startup nomount;

  ◆重建控制文件








create CONTROLFILE REUSE DATABASE “XXX” RESETLOGS ARCHIVELOG
MAXLOGFILES 40
MAXLOGMEMBERS 3
MAXDATAFILES 400
MAXINSTANCES 2
MAXLOGHISTORY 454
LOGFILE
GROUP 1 (
’/oracle/oradata/xxx/rdb_redo01a’
) SIZE 10M,
GROUP 2 (
’/oracle/oradata/xxx/rdb_redo02a’
) SIZE 10M
DATAFILE
’/oracle/oradata/xxx/system01.dbf’,
’/oracle/oradata/xxx/undo01.dbf’,
’/oracle/oradata/xxx/sysaux01.dbf’,
’/oracle/oradata/xxx/pay_ts01.dbf’
charACTER SET ZHS16GBK
;


recover database until cancel using backup controlfile;


alter database open resetlogs;


  ◆做数据恢复操作:







create table xxx as select xxx from xxx where xxx;
exp,ftp .dmp,imp

  也可以如下所示,这样会更简单一些:  






restore database;
  recover database using backup controlfile until cancel;
  alter database open resetlogs;
  …
  END!!!

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

作者

Patrick
Patrick

相关推荐