转 RMAN: RAC Backup, Restore and Recovery using RMAN

PURPOSE

The purpose of this document is to give a quick guide for using RMAN on RAC databases. We will follow this points:

1. Verify the database mode and archive destination.
2. Verify connectivity using sqlnet for target and catalog.
3. Determine the backup device.
4. Understand how to create an RMAN persistent configuration for a RAC env.
5. Create backups to disk using the new persistent configuration parameters.
6. Backupset maintenance using the configured retention policy.
7. Restore and Recover
    a. Complete
    b. Incomplete
8. Review and understand the impact of resetlogs on the catalog.
9. RMAN Sample Commands.

SCOPE

  • This discussion is for a 2-node Oracle RAC Cluster.
  • The logs are being archived to their respective node.
  • We are allocating channels to each node to enable the autolocate feature of RMAN in a RAC env.

DETAILS

1. Verify the databases are in archivelog mode and archive destination.

 a. NODE 1: thread 1

SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /u02/app/oracle/product/11.2.0/dbs/arch
Oldest online log sequence     20
Next log sequence to archive   21
Current log sequence           21

b. NODE 2: thread 2

SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /u02/app/oracle/product/11.2.0/dbs/arch
Oldest online log sequence     8
Next log sequence to archive   9
Current log sequence           9

2. Verify connectivity to the target nodes and catalog if used.

$ setenv TNS_ADMIN $ORACLE_HOME/network/admin
  $ sqlplus /nolog
     SQL> connect sys/[email protected] as sysdba
     SQL> connect sys/[email protected] as sysdba
     SQL> connect rman/[email protected]

3. Set your testing areas.

Testing HOME for logs:  /u02/home/usupport/rman

Backups HOME Location:  /rman/V112

4. Connect using RMAN to verify and set the controlfile persistent configuration.

The controlfiles are shared between the instances so configuring the controlfile on node 1 also sets it for all nodes in the RAC cluster.

* Always note the target DBID
    connected to target database: V112 (DBID=228033884)

 Default Configuration

RMAN> SHOW ALL;
    CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
    CONFIGURE BACKUP OPTIMIZATION OFF; # default
    CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
    CONFIGURE CONTROLFILE AUTOBACKUP ON;
    CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO ‘%F‘; # default
    CONFIGURE DEVICE TYPE DISK PARALLELISM 1; # default
    CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
    CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
    CONFIGURE MAXSETSIZE TO UNLIMITED; # default
    CONFIGURE SNAPSHOT CONTROLFILE NAME TO ‘/u02/app/oracle/product/11.2.0/dbs/snapcf_V11201.f‘; # default

*  Configuring Channels to Use a Specific Node

To configure one RMAN channel for each policy-managed Oracle RAC database instance, use the following syntax:
CONFIGURE CHANNEL DEVICE TYPE disk CONNECT ‘SYS/[email protected]‘;‘
CONFIGURE CHANNEL DEVICE TYPE disk CONNECT ‘‘SYS/[email protected]‘;

* Configure parallelism and use dynamic channel allocation.  Review the following for details:
How To Use RMAN Dynamic Channel Allocation For RAC Environments (Note 1100443.1)

Make changes to other configurations to fit your business requirements.  Review the following for details:
Getting Started with Recovery Manager (RMAN) Note 360416.1

In 11.2, there is a new requirement for snapshot controlfile to reside on a shared location, see:
In RAC environment from 11.2 onwards Backup Or Snapshot controlfile needs to be in shared location Note 1472171.1

5. Make a backup using the new persistent configuration parameters.

*  Backup database with differential incremental 0 and then archived logs   using the delete input option.

BACKUP INCREMENTAL LEVEL 0 FORMAT ‘/rman/V112/%d_LVL0_%T_%u_s%s_p%p‘ DATABASE;
     BACKUP ARCHIVELOG ALL FORMAT ‘/rman/V112/%d_AL_%T_%u_s%s_p%p‘DELETE INPUT;

* Backup again using differential incremental level 1

BACKUP INCREMENTAL LEVEL 1 FORMAT ‘/rman/V112/%d_LVL1_%T_%u_s%s_p%p‘ DATABASE;
     BACKUP ARCHIVELOG ALL FORMAT ‘/rman/V112/%d_AL_%T_%u_s%s_p%p‘ DELETE INPUT;

* To simplify this you can also use PLUS ARCHIVELOG 

BACKUP INCREMENTAL LEVEL 0 FORMAT ‘/rman/V112/%d_LVL0_%T_%u_s%s_p%p‘
        DATABASE PLUS ARCHIVELOG FORMAT ‘/rman/V112/%d_AL_%T_%u_s%s_p%p‘ DELETE INPUT;

This uses a different algorithm than backup database and backup archivelog in separate commands, the algorithm for PLUS ARCHIVELOG is:

1. Archive log current
     2. Backup archived logs
     3. Backup database level 0
     4. Archive log current
     5. Backup any remaining archived log created during backup

6. Backupset maintenance using the configured retention policy

RMAN> LIST BACKUP SUMMARY;
    RMAN> LIST BACKUP BY DATAFILE;
    RMAN> LIST BACKUP OF DATABASE;
    RMAN> LIST BACKUP OF ARCHIVELOG ALL;
    RMAN> LIST BACKUP OF CONTROLFILE;

These above can be enhanced with the "until time" clause as well as the archivelog backups using "not backed up x times" to cut down on  many copies of a log in several backup sets. 
   Then continuing with SMR  Server Managed Recovery use the change archivelog from...until...delete  to remove old logs no longer needed on disk.

To check/delete obsolete backups  or archivelogs we use:

RMAN> REPORT OBSOLETE;

RMAN> DELETE OBSOLETE;
           or
    RMAN> DELETE NOPROMPT OBSOLETE;

To check the database files:

RMAN> REPORT SCHEMA;

7. Restore and Recover

        Complete Recovery

With the database mounted on the node1 and no-mount on node2 connect to the target and catalog using RMAN.

rman target / catalog rman/[email protected]

This script will restore and recover the database completely and open the database in read/write mode.

run {
             RESTORE DATABASE;
             RECOVER DATABASE;
             ALTER DATABASE OPEN;
          }

         Incomplete Recovery

If you are using instance registration the database must be mounted to register with the listener. This means you must use the current controlfile for restore and recovery or setup a dedicated listener if not  already done. RMAN requires a dedicated server connection and does not work with using instance registration before mounting the controlfile.  Using the autobackup controlfile feature requires the DBID of the  TARGET database. It must be set when the database is not mounted and only the controlfile and spfile (from 9.2) can be restored this way.

1. Shutdown node1 and node2

2. Startup no-mount node2 and node1

3. Start rman and restore the controlfile from autobackup:

rman trace reco1.log

RMAN> CONNECT CATALOG rman/[email protected]

RMAN> SET DBID=228033884;

RMAN> CONNECT TARGET

RMAN>  restore controlfile;

4. If no catalog is used, you can restore the controlfile from autobackup

% rman trace recocf.log

RMAN> SET DBID=228033884;

RMAN> CONNECT TARGET /

RMAN> RUN 
           {
             SET CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE disk TO ‘/rman/V112/%F‘;
             ALLOCATE CHANNEL d1 DEVICE TYPE disk; 
             RESTORE CONTROLFILE FROM AUTOBACKUP
                 MAXSEQ 5           # start at sequence 5 and count down (optional)
                 MAXDAYS 5;         # start at UNTIL TIME and search back 5 days (optional)
             MOUNT DATABASE;
            }

See Note 372996.1 and/or Note 403883.1 for more options for restoring a controlfile.

5. Verify what is available for incomplete recovery.

We will recover with the highest available redo information.  In a RAC database, both thread must be considered to determine highest available redo.  The options are "until time", "until scn", or "until sequence".  We will use the log sequence in this case.

a.  First we need to find the highest sequence of each thread:

SQL> select max(sequence#) from v$archived_log L, v$database D

where L.resetlogs_change# = D.resetlogs_change# and

thread#=1;

MAX(SEQUENCE#)
       --------------
               25

SQL> select max(sequence#) from v$archived_log L, v$database D

where L.resetlogs_change# = D.resetlogs_change# and

thread#=2;

MAX(SEQUENCE#)
       --------------
             13

b.  Next is to find the thread with lowest NEXT_CHANGE# scn.

SQL> select sequence#, thread#, first_change#, next_change#
             from v$archived_log L, v$database D
             where L.resetlogs_change# = D.resetlogs_change# and
             sequence# in (13,25);

SEQUENCE#    THREAD# FIRST_CHANGE# NEXT_CHANGE#
     -------------------- -------------- ------------------------- -------------------------
                            25            1                           1744432                    1744802
                            13            2                           1744429                    1744805

SQL> select sequence#, thread#, first_change#, next_change#
           from v$backup_redolog
           where sequence# in (13,25);

SEQUENCE#    THREAD# FIRST_CHANGE# NEXT_CHANGE#
      -------------------- -------------- ------------------------- -------------------------
                            25            1                           1744432                    1744802
                            13            2                           1744429                    1744805

In this case the next_change# SCN in thread 1 sequence 25 is lower than sequence 13 thread 2.  In a RAC environment, we use the lower to ensure we have the redo required from BOTH threads.   In other words, we use the lower (thread# 1) to ensure that ALL scn (s) in thread #1 exist in the available sequence for thread #2.

So we will set sequence 26 for thread 1 for RMAN  ‘until sequence‘  recovery,  because RMAN stops the recovery  before applying the indicated sequence. Log sequence for  recovery  needs always  be sequence+1 to end  at +1 after applying the prior sequence.  I.e.:

SET UNTIL SEQUENCE 26 THREAD 1;

6.  Get the command to add TEMPFILES after opening DB.

Locally Managed Temporary Tablespaces are not restored by  RESTORE command, we need to create them manually after recovery is complete.

If using LMT Temporary tablespace the controlfile will have the syntax  to add the tempfile after recovery is complete. The following command will give us the create controlfile statement:

SQL> alter database backup controlfile to trace;

Example:

# Commands to add tempfiles to temporary tablespaces.
      # Online tempfiles have complete space information.
      # Other tempfiles may require adjustment.
        ALTER TABLESPACE TEMP ADD TEMPFILE ‘/dev/db/temp_01.dbf‘  SIZE 41943040  REUSE AUTOEXTEND OFF;
      # End of tempfile additions.
      #

NOTE:  In newer versions, the tempfiles are added automatically.

7. Run the rman script

Since log sequence 13 thread 2 next_change# is 3 changes ahead of thread 1 sequence 25 we are using sequence 26 (25+1) to stop recovery. This will restore  the data files and recover them applying all of sequence #25 of thread 1 and stopping at sequence #26.

run {
          SET UNTIL SEQUENCE 26 THREAD 1;
          RESTORE DATABASE;
          RECOVER DATABASE;
          ALTER DATABASE OPEN RESETLOGS;
          }

8. Review and understand the impact of resetlogs on the catalog.

After resetlogs a new incarnation for the database is recorded in the RMAN catalog and database controlfile.  Only one incarnation can be current and any need to restore from a previous incarnation requires you to "reset database to incarnation...".

For example:

RMAN> LIST INCARNATION OF DATABASE V112;

List of Database Incarnations
DB Key  Inc Key  DB Name  DB ID            CUR  Reset SCN  Reset Time
-----------  ----------- ------------ ----------------  ------- --------------  ---------------
2656          2657       V112         228033884      NO   1                   29-MAY-13
2656          3132       V112         228033884      YES  1744806       13-JUN-13

We see that an "open resetlogs" was executed against this database on 13-JUN-2013.

9. RMAN Sample Commands

With a dedicated listener (not using instance registration)  restoring the controlfile.

run {
 ALLOCATE CHANNEL D1 TYPE DISK CONNECT ‘SYS/[email protected]‘;
 ALLOCATE CHANNEL D2 TYPE DISK CONNECT ‘SYS/[email protected]‘;
  SET UNTIL SEQUENCE 14 THREAD 2;
   RESTORE CONTROLFILE;
  ALTER DATABASE MOUNT;
 RELEASE CHANNEL D1;
 RELEASE CHANNEL D2;
 }

* Backup Archivelog

BACKUP ARCHIVELOG ALL NOT BACKED UP 3 TIMES; 
 BACKUP ARCHIVELOG UNTIL TIME ‘SYSDATE-2‘ NOT BACKED UP 2 TIMES;

原文地址:https://www.cnblogs.com/feiyun8616/p/10740528.html

时间: 2024-08-11 05:44:45

转 RMAN: RAC Backup, Restore and Recovery using RMAN的相关文章

如何将RAC数据库的 RMAN Disk 备份 Restore 到另一个节点上的单个实例 (Doc ID 415579.1)

HowTo Restore RMAN Disk backups of RAC Database to Single Instance On Another Node (Doc ID 415579.1) APPLIES TO: Oracle Database - Enterprise Edition - Version 9.2.0.1 and laterOracle Database Cloud Schema Service - Version N/A and laterOracle Databa

RAC(11gR2) OCR BACKUP & RESTORE

首先检查下OCR盘 [[email protected]1 cdata]$ ocrcheck Status of OracleCluster Registry is as follows : Version                  :          3 Total space (kbytes)     :    262120 Used space (kbytes)      :      3068 Available space (kbytes) :     259052 ID  

RMAN Table Point In Time Recovery (PITR) in PDBs

1.首先使用RMAN做一次备份(必需有次备份) rman target / backup database; or backup database root; backup pluggable database pdb; 2.在pdb中创建test用户并授权 sqlplus / as sysdba alter session set container=pdb; create user test identified by redhat quota unlimited on users; gra

Performing a full database disaster recovery with RMAN

Performing a full database disaster recovery with RMAN1. Make the RMAN backup set pieces available.2. Restore the database spfile from autobackups.  --先恢复参数文件3. Restore the control file from autobackups.--再恢复控制文件4. Run the RMAN restore and recover co

rman multisection backup试验之二

2个通道中使用section size进行备份. [[email protected] ~]$ rman target / Recovery Manager: Release 11.2.0.4.0 - Production on Thu Feb 19 01:07:28 2015 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. connected to target database: TES

基于RMAN从活动数据库异机克隆(rman duplicate from active DB)

Oracle 11g RMAN能够实现基于活动数据库进行异机克隆,从而省去需要先备份再ftp到辅助服务器的过程.这一切可以全部交给Oracle来搞定.在克隆期间,Oracle会读取Target DB的所有数据结构,无须人为的干预(不同的磁盘系统,文件路径与文件名要指定转换方式).尽管如此,对于生产环境数据库在整个克隆期间性能会下降,其次在Target Server与Auxiliary Server中会产生较大的网络流量.如果这些可以接受的话,从活动数据库进行异机克隆是一个不错的选择.本文首先描述

如何利用RMAN Debug和10046 Trace来诊断RMAN问题?

学习转摘:https://blogs.oracle.com/Database4CN/entry/%E5%A6%82%E4%BD%95%E5%88%A9%E7%94%A8rman_debug%E5%92%8C10046_trace%E6%9D%A5%E8%AF%8A%E6%96%ADrman%E9%97%AE%E9%A2%98 介绍一下如何对RMAN的问题做debug. 我们借助于下面这个场景,说明如何Debug RMAN 问题. 在11.2.0.4上,物理备库上执行归档备份时,出现了下面的错误:

rman multisection backup试验之一

multisection backup是Oracle11g(确切的说是从11.1.0.6开始)的新特性,见mos文章 MultiSection Backups (文档 ID 406295.1) 下面来做实验: [[email protected] ~]$ rman target / Recovery Manager: Release 11.2.0.4.0 - Production on Thu Feb 19 01:07:28 2015 Copyright (c) 1982, 2011, Orac

SQL Service Database BACKUP & RESTORE

1. 完整恢复模式下的数据库备份 1 USE master; 2 ALTER DATABASE AdventureWorks2012 SET RECOVERY FULL; 3 GO 4 -- Back up the AdventureWorks2012 database to new media set (backup set 1). 5 BACKUP DATABASE AdventureWorks2012 6 TO DISK = 'Z:\SQLServerBackups\AdventureWo