您的位置:首页 > 数据库 > Oracle

Oracle rman备份异机恢复

2011-07-20 11:13 435 查看
一、 实验环境

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;”查看。

0fmhsg4r 0gmhsg5k

$rman target /

RMAN> restore spfile from '/oradata/back/0gmhsg5k';

RMAN> startup nomount force;

RMAN> restore controlfile from '/oradata/back/0gmhsg5k';

RMAN> alter database mount;

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> alter database open resetlogs;

至此数据库已经正常运行。

RMAN> delete noprompt backup;

RMAN> backup incremental level=0 database format='/oradata/back/%u';

此实验就是为了不用dateguard而能够做到灾备的效果。

注意:这样做会产生的问题:用sys从PL/SQL登陆时提示权限不足





附件:http://down.51cto.com/data/2358567
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle 职场 休闲 rman