2.1.3 RMAN命令简介

从操作系统命令行使用RMAN命令启动RMAN(请参阅本章后面的2.2节“配置快速恢复区”,了解使用Enterprise Manager在GUI中执行RMAN操作的说明)。下一节简要介绍如何从命令行启动RMAN,并简要介绍RMAN>提示符下的命令结构。通常需要编写RMAN命令脚本来避免重复操作的键入错误。大多数DBA运行即席RMAN命令(尤其在恢复数据库时)。

用于设置RMAN备份保留策略的RMAN命令必须指定要保留的完整备份数,或者指定一个能够恢复的窗口,不过这些命令可能不会常用。还要确保在满足可恢复性的SLA时,不会占用不必要的磁盘空间。

1.调用RMAN

下面是一个常用的简单RMAN调用命令,它连接到远程恢复目录(第3章介绍其他数据库中用于存储源数据库的备份和结构信息的恢复目录或模式):

        [oracle@dw ~]$ rman target / catalog rman/rman@rac

本例使用target选项,通过操作系统身份验证连接到数据库,使用catalog选项连接到不同数据库中的恢复目录。第3章将详尽介绍RMAN恢复目录概念。

在启动RMAN时可使用16个不同的RMAN命令行选项,最常用的选项如下:

●target 确定要备份的Oracle数据库的连接字符串。

●catalog 指定用于备份信息的恢复目录数据库。

●nocatalog使用控制文件来备份信息。

●cmdfile 指定一个输入文件,其中包含一系列RMAN命令。

●log为RMAN消息的日志文件设置名称。

cmdfile和log选项使反复重用RMAN命令列表变得更容易,也便于从批处理进程运行RMAN。

2.RMAN命令类型

两种基本的RMAN命令类型是独立命令和作业命令。独立命令仅在RMAN>提示符下执行,是独立的命令。独立命令的示例有CHANGE、CONNECT、CREATE SCRIPT和CREATE CATALOG。

作业命令与此相反,它们通常组合在一起,使用RUN命令在命令块中运行。如果命令块中的任何命令出现故障,块的执行将会终止。ALLOCATE CHANNEL是一个仅可用作作业命令的RMAN命令示例:通道分配仅在运行命令块期间有效(可以使用独立命令CONFIGURE CHANNEL创建默认通道)。RMAN通道是数据库到设备的一个数据流,与一个数据库服务器会话对应。

下例是在命令块中运行的用于备份数据库的一些命令,此命令块强制归档当前联机重做日志文件,并删除过时的备份内容:

        RMAN> run
        2> {
        3>   backup as compressed backupset database;
        4>   delete noprompt obsolete;
        5> }
        Starting backup at 15-MAR-13
        using channel ORA_DISK_1
        channel ORA_DISK_1: starting compressed full datafile backup set
        . . .

注意,如果不显式地分配通道,RMAN将使用默认通道;在本例中,它是闪回恢复区。

有些命令既是独立命令,也是作业命令,也就是说可以在RMAN>命令提示符下使用它们,也可以在命令块中使用。例如,可以将BACKUP DATABASE用作独立命令,也可以在命令块中使用;如果将BACKUP DATABASE作为独立命令运行,那么RMAN将根据CONFIGURE CHANNEL指定的默认设置以及是否在使用闪回恢复区,自动分配一个或多个通道。

表2-1列出了日常使用的RMAN命令,以及相应命令的一些常见选项和提示。有关所有RMAN命令及其语法的完整列表,请参阅Oracle Database Backup and Recovery Reference,12c Release 1。

表2-1 常见的RMAN命令

(续表)

3.使用保留策略

可使用两种方法之一来自动保留和管理备份:恢复窗口或冗余。使用恢复窗口时,RMAN将根据需要保留足够多的备份,以便将数据库恢复到恢复窗口中的任何时间点。例如,如果恢复窗口是7天,RMAN将保留足够多的映像备份、增量备份和归档重做日志,确保可将数据库还原和恢复到最近7天中的任意时间点。不需要用于支持此恢复窗口的任何备份被标记为OBSOLETE,如果正在使用闪回恢复区而且要将磁盘空间用于新备份,RMAN将自动删除相应的过时备份内容。

与此相反,冗余保留策略让RMAN保留指定数量的备份(数据文件和控制文件的副本)。如果副本或备份数量超过冗余策略中指定的数量,会将超过的副本或备份标记为OBSOLETE。与恢复窗口一样,如果使用闪回恢复区,而且需要磁盘空间,将自动删除过时的备份内容。另外,可以使用DELETE OBSOLETE命令,以手动方式删除备份文件并更新目录。

如果将保留策略设置为NONE,则备份或副本将永不过时,DBA必须以手动方式从目录和磁盘删除不必要的备份文件。默认情况下,保留策略只是一份副本(将保留策略设置为1)。可使用以下RMAN命令将保留策略设置为保留两份副本:

        RMAN> configure retention policy to redundancy 2;

以下的示例将保留策略的恢复窗口设置为4天:

        RMAN> configure retention policy to recovery window of 4 days;
        old RMAN configuration parameters:
        CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
        new RMAN configuration parameters:
        CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 4 DAYS;
        new RMAN configuration parameters are successfully stored
        RMAN>

Oracle的最佳做法建议使用恢复窗口或时间段,在这段时间内将可以发现与数据库相关的任何问题,如无意间删除了表或表行,并且能够在错误发生前执行时间点恢复。

在某些环境中可能需要完全禁用保留策略。例如,RMAN以外的备份系统将磁盘备份存储到磁带并删除备份。此时,RMAN无须确定备份何时过时,因此无须使用保留策略。结果,RMAN备份的详情最多保留到初始化参数CONTROL_FILE_RECORD_KEEP_TIME指定的时间。下面演示如何禁用保留策略:

        RMAN> configure retention policy to none;

练习2-1

查询和更改保留策略

在本练习中将确定当前RMAN保留策略并对其进行修改。

启动RMAN,但不连接到恢复目录:

        [oracle@tettnang ~]$ rman target /

        Recovery Manager: Release 12.1.0.1.0
              - Production on Mon Feb 10 12:44:11 2014

        Copyright (c) 1982, 2013, Oracle and/or its affiliates.
          All rights reserved.
        connected to target database: RPT12C (DBID=1766066998)
        RMAN>

(1)显示现有的保留策略:

        RMAN> show retention policy;
        using target database control file instead of recovery catalog
        RMAN configuration parameters for database with db_unique_name RPT12C are:
        CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 4 DAYS;
        RMAN>

(2)将保留策略的恢复窗口改成10天:

        RMAN> configure retention policy to recovery window of 10 days;
        old RMAN configuration parameters:
        CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 4 DAYS;
        new RMAN configuration parameters:
        CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 10 DAYS;
        new RMAN configuration parameters are successfully stored
        RMAN>