10477777 发表于 2018-9-23 09:45:43

Oracle rman备份异机恢复

  一、 实验环境
  db_A:192.168.0.3      db_B:192.168.0.4
  db_A为生产数据库,db_B为后备(不运行);两个数据库的环境完全一样。
  二、操作
  1.db_A的操作
  在db_A上进行rman的0级备份
  $rman target /
  RMAN>backup incremental level=0 database format='/oradata/back/%u';
  添加计划任务执行以下脚本:
  ---------------------------------------------------------------------
  db_rsync.sh
  #!/bin/sh
  #keep tow db Synchronous
  ORACLE_HOME=/oracle/app/oracle/product/10.2.0/db_1
  bak_dir=/oradata/back
  archive_dir=/oradata/arch
  dest_db=oracle@192.168.0.4
  passwd=ufsoft
  ls -l $bak_dir | awk '{print $NF}'|sed '1d'>list1
  ls -l $archive_dir | awk '{print $NF}'|sed '1d'>list2
  Rsync_exec1(){
  expect -c "
  set timeout 7200;
  spawn rsync -rpogtv --files-from=list1$bak_dir $dest_db:$bak_dir
  expect {
  \"*yes/no*\" {send \"yes\r\";exp_continue}
  \"*password*\" {send \"$passwd\r\";}
  }
  expect eof;"
  Rsync_exec2(){
  expect -c "
  set timeout 7200;
  spawn rsync -rpogtv--files-from=list2 $archive_dir $dest_db:$archive_dir
  expect {
  \"*password*\" {send \"$passwd\r\";}
  }
  expect eof;"
  }
  Rsync_exec1
  Rsync_exec2
  rm -f list1 list2
  ---------------------------------------------------------------------
  2.db_B的操作
  $ echo "db_name=ora10g">$ORACLE_HOME/dbs/initora10g.ora
  $ sqlplus / as sysdba
  SQL> startup nomount
  $ls /oradata/back #查看从db_A上传过来的备份文件,其中大小比较小的为参数文件和控制文件的备份,最大的为数据文件的备份。可以在db_A上执行“RMAN>list backup;”查看。
  0fmhsg4r0gmhsg5k
  $rman target /
  RMAN> restore spfile from '/oradata/back/0gmhsg5k';
  RMAN> startup nomount force;
  RMAN> restore controlfile from '/oradata/back/0gmhsg5k';

  RMAN>>  RMAN> restore database;
  RMAN> recover database;#会报错,但不要紧,我们只需要得到thread和sequence号就行
  Starting recover at 20-JUL-11
  using channel ORA_DISK_1
  starting media recovery
  unable to find archive log
  archive log thread=1 sequence=1
  RMAN-00571: ===========================================================
  RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
  RMAN-00571: ===========================================================
  RMAN-03002: failure of recover command at 07/20/2011 01:33:58
  RMAN-06054: media recovery requesting unknown log: thread 1 seq 1 lowscn 484679
  RMAN> run {
  2> set until sequence 1 thread 1;
  3> recover database;
  4> }

  RMAN>>  至此数据库已经正常运行。
  RMAN> delete noprompt backup;
  RMAN> backup incremental level=0 database format='/oradata/back/%u';
  此实验就是为了不用dateguard而能够做到灾备的效果。
  注意:这样做会产生的问题:用sys从PL/SQL登陆时提示权限不足
http://blog.51cto.com/attachment/201107/162929689.jpg

页: [1]
查看完整版本: Oracle rman备份异机恢复