上一讲介绍了rac环境下,当归档日志存储在本地文件系统时的备份与恢复操作,比较麻烦的是需要同步rac各个节点的归档日志,这无疑给备份和恢复操作增加了难度和需要的时间,因而本节中介绍使用多路归档的方式来尽量避免这个问题!
一:配置多路归档
[oracle@rac1 ~]$ sqlplus sys/123456@racdb as sysdba Connected to: SQL> archive log list; SQL> conn sys/123456@racdb2 as sysdba [oracle@rac2 ~]$ mkdir /u01/app/oracle/rac1_archivelog/ SQL> alter system set log_archive_dest_2='SERVICE=racdb2' sid='racdb1'; SQL> alter system set log_archive_dest_2='SERVICE=racdb1' sid='racdb2'; SQL> alter system set standby_archive_dest='/u01/app/oracle/rac2_archivelog' sid='racdb1'; SQL> alter system set standby_archive_dest='/u01/app/oracle/rac1_archivelog' sid='racdb2'; SQL> alter system set log_archive_local_first=false; SQL> alter system set log_archive_max_processes=3; SQL> alter system archive log current; [root@rac1 ~]# ls /u01/app/oracle/rac1_archivelog/ [root@rac2 ~]# ls /u01/app/oracle/rac1_archivelog/ |
二:备份数据库和归档日志,需要分配通道,否则会失败
[oracle@rac1 ~]$ rman target sys/123456@racdb RMAN> backup archivelog all; Starting backup at 2011-12-22 19:15:22 RMAN> run { RMAN> list backup of database summary; List of Backups |
三:创建测试数据
[oracle@rac1 ~]$ sqlplus sys/123456@racdb as sysdba Connected to: SQL> create tablespace local_arch_test datafile size 10M; SQL> create table test.t5 tablespace local_arch_test as select * from hr.employees; SQL> select count(*) from test.t5; COUNT(*) SQL> select file_name from dba_data_files where tablespace_name in ('SYSTEM','LOCAL_ARCH_TEST'); FILE_NAME SQL> alter system archive log current; SQL> / |
四:模拟数据文件损坏
[oracle@rac1 ~]$ srvctl stop database -d racdb -o immediate [oracle@rac1 ~]$ source .bash_profile |
五:执行恢复
[oracle@rac2 ~]$ srvctl start database -d racdb -o mount RMAN> run { allocated channel: c1 allocated channel: c2 Starting restore at 2011-12-22 20:42:10 creating datafile fno=7 name=+DATA/racdb/datafile/local_arch_test.312.770588847 Starting recover at 2011-12-22 20:42:11 starting media recovery archive log thread 1 sequence 100 is already on disk as file /u01/app/oracle/rac1_archivelog/1_100_769205632.dbf released channel: c1 released channel: c2 |
六:验证
[oracle@rac2 ~]$ srvctl stop database -d racdb -o abort [oracle@rac2 ~]$ sqlplus sys/123456@racdb as sysdba Connected to: SQL> select count(*) from test.t5; COUNT(*) |