一、 实验环境 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\";exp_continue} \"*password*\" {send \"$passwd\";} } 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\";} } 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登陆时提示权限不足
小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里注册账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!
免责声明:本站系公益性非盈利IT技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和图片版权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!