RMAN日常维护常用命令

Oracle RMAN日常维护命令 
下面收集了RMAN维护过程中常见的一些命令及命令的简单说明,供参考。
一、REPORT
1、报告目标数据库的物理结构
   RMAN
    有INCREMENTAL、DAYS、REDUNDANCY、RECOVERY WINDOW 四个选项。
    
    (1)报告需要转储的增量备份超出特定个数的数据文件
       当恢复数据文件时,需要转储数据文件备份,然后应用归档日志执行恢复。如果备份数据文件采用了增量备份和累积备份策略,那么在转储数据文件时依次转储
       0、1、2..级别的增量备份,转储的数据文件备份越多,恢复时间越长,下面以报告恢复数据文件需要转储的增量备份个数超过3次的数据文件为例:
       RMAN应该在该数据文件上执行完全备份或增量0级备份。    
    (2)报告特定天数未备份的数据文件
       当恢复数据文件时,在转储了所需的数据文件备份之后,会应用从备份点开始的所有归档日志。需要应用的归档日志越多,恢复时间越长,为了减少恢复时间,应该制定
       备份数据文件的时间周期。
       USERS表空间上3天未备份的数据文件
           RMAN
       数据库内10天以上未备份的数据文件
           REPORT NEED BACKUP DAYS 10    
    (3)报告低于特定备份次数的数据文件
       恢复数据文件时,需要转储数据文件备份。当数据文件出现介质失败,并且数据文件备份也出现问题时,会导致数据文件无法恢复。在制定备份册落时,
       为了防止数据文件备份出现问题,应该为数据文件保留多个备份,但某些文件的备份次数过少时,需要增加备份数量。
      RMAN
    (4)报告在恢复时间窗口内未备份的数据文件
       当恢复数据文件时,在转储了所需的数据文件备份之后,会应用从备份点开始的所有归档日志。需要应用的归档日志越多,恢复时间越长。通过使用
       恢复时间窗口,可以将恢复操作需要应用的归档日志控制在特定时间范围内。下面以报告超过恢复窗口6天的未备份数据文件为例,说明使用DAYS选项的方法:
       RMAN
   3、报告陈旧备份
     当使用RMAN执行恢复操作时,RMAN会自动转储最近的备份文件,然后应用该备份文件之后的归档日志。如果在特定数据文件上进行了多次备份,那么可以删除
     早期备份,通过使用REPORT OBSOLETE命令,可以报告陈旧备份。下例报告备份次数超过2次的陈旧备份:
      RMAN
   4、报告不可恢复的数据文件
     当使用NOLOGGING选项装载了数据库之后,因为数据变化没有被记录到归档日志中,所以会导致过去的数据文件备份不能恢复当前数据文件。为防止数据文件不能
     恢复,应该备份该数据文件,通过如下语句,可以查看数据库所有不可恢复的数据文件:
     RMAN
二、LIST   
   1、列出数据文件备份集
      RMAN
   2、列出控制文件备份集
      RMAN    3、列出归档日志备份集
      RMAN
   4、列出SPFILE备份集
      RMAN
   5、列出数据文件映像副本
      可用LIST COPY OF DATABASE列出所有数据文件的映像副本;用LIST COPY OF TABLESPACE 列出特定表空间数据文件的映像副本;用 LIST COPY OF DATAFILE列出特定
       数据文件的映像副本。
       RMAN
   6、列出控制文件映像副本
       RMAN    7、列出归档日志映像副本。
       RMAN
   8、列出数据库副本
      每次使用RESETLOGS选项打开数据库之后都会生成一个新的数据库副本。
       RMAN
   9、列出所有无效备份 
       RMAN
   10、列出数据库中所有的备份信息 
       RMAN

11、以精简的格式查看备份信息

RMAN> list backup of database summary;

List of Backups

===============

Key TY LV S Device Type Completion Time#Pieces #Copies Compressed Tag

备份片号 类型 备份级别 设备类型 完成时间 片数 镜像数 是否压缩 标签

------- -- -- ------------ --------------- ------- ------- ---------- ---

1054 B 0 A DISK 26-MAY-14 1 1 YES TAG20140526T140012

1055 B 0 A DISK 26-MAY-14 1 1 YES TAG20140526T140012

1062 B 1 A DISK 26-MAY-14 1 1 YES TAG20140526T141509

1063 B 1 A DISK 26-MAY-14 1 1 YES TAG20140526T141509

1069 B 1 A DISK 26-MAY-14 1 1 YES TAG20140526T143009

1070 B 1 A DISK 26-MAY-14 1 1 YES TAG20140526T143009

1076 B 1 A DISK 26-MAY-14 1 1 YES TAG20140526T144509

1077 B 1 A DISK 26-MAY-14 1 1 YES TAG20140526T144509

1082 B 0 A DISK 26-MAY-14 1 1 YES TAG20140526T150011

1083 B 0 A DISK 26-MAY-14 1 1 YES TAG20140526T150011

1090 B 1 A DISK 26-MAY-14 1 1 YES TAG20140526T151509

1091 B 1 A DISK 26-MAY-14 1 1 YES TAG20140526T151509


12、列出详细信息

RMAN> list backup of database;

----查看备份详细信息

----BS Key:备份集号

----Type:备份类型,Incr代表增量备份

----LV:备份级别,如1级备、0级备份

----Size:大小

----Device Type:设备类型,DISK代表磁盘

----Elapsed Time:消耗时间

----Completion Time:完成时间

----BP Key:备份片号

----Status: 备份状态,AVAILABLE代表可用

----Compressed: 是否压缩,YES代表已经压缩

----Tag:标签,默认会以时间格式列出,如 TAG20140526T151509代表2014526日,15:15进行的备份

----Piece Name: 备份片的物理路径,如/backup/level1_25p98sfu_1_1.bak

----List of Datafilesin backup set 1091:列出1091号备份片备份的数据文件信息

----Ckp SCN:数据文件的scn

----Ckp Time:生产检查点时间


List of Backup Sets

===================

BS Key Type LV Size Device TypeElapsed Time Completion Time

------- ---- -- ---------- ----------------------- ---------------

1090 Incr 1 104.00K DISK 00:00:00 26-MAY-14

BP Key: 1090 Status:AVAILABLE Compressed: YES Tag: TAG20140526T151509

Piece Name: /backup/level1_24p98sfu_1_1.bak

List of Datafiles in backup set 1090

File LV Type Ckp SCN CkpTime Name

---- -- ---- ---------- --------- ----

1 1 Incr 796838 26-MAY-14/u01/app/oracle/oradata/metro/system01.dbf

4 1 Incr 796838 26-MAY-14/u01/app/oracle/oradata/metro/users01.dbf


BS Key Type LV Size Device TypeElapsed Time Completion Time

------- ---- -- ---------- ----------------------- ---------------

1091 Incr 1 1.15M DISK 00:00:02 26-MAY-14

BP Key: 1091 Status:AVAILABLE Compressed: YES Tag: TAG20140526T151509

Piece Name: /backup/level1_25p98sfu_1_1.bak

List of Datafiles in backup set 1091

File LV Type Ckp SCN CkpTime Name

---- -- ---- ---------- --------- ----

2 1 Incr 796842 26-MAY-14/u01/app/oracle/oradata/metro/undotbs01.dbf

3 1 Incr 796842 26-MAY-14 /u01/app/oracle/oradata/metro/sysaux01.dbf

5 1 Incr 796842 26-MAY-14/u01/app/oracle/oradata/metro/example01.dbf


三、CROSSCHECK
   该命令用于核对磁盘和磁带上的备份文件,以确保RMAN资料库与备份文件保持同步。该命令只会检查RMAN资料库所记载的备份文件。当执行CROSSCHECK命令时,如果资料库
   记录不匹配于备份文件的物理状态,那么该命令会更新资料库记录的状态信息。当使用CROSSCHECK命令核对备份文件之后,备份文件的状态会包括AVALIABLE、UNAVALIABLE和EXPIRED 三种,
   如果备份文件处于EXPIRED状态,则说明物理文件已经被手工删除或者损坏。注意,如果备份文件处于EXPIRED状态,应该使用DELETE命令删除该备份文件。
   
   1、核对所有备份集
      RMAN
   2、核对所有数据文件的备份集
      RMAN
   3、核对特定表空间的备份集
      RMAN
   4、核对特定数据文件的备份集
      RMAN
   5、核对控制文件的备份集
      RMAN
   6、核对SPFILE的备份集
      RMAN    
   7、核对归档日志的备份集
      RMAN
   8、核对所有映像副本
      RMAN       RMAN
   10、核对特定表空间的映像副本
      RMAN
   11、核对特定数据文件的映像副本
       RMAN
   12、核对控制文件的映像副本
        RMAN
   13、核对归档日志的映像副本
       RMAN

四、DELETE    该命令用于删除RMAN备份记录及相应的物理文件
    1、删除陈旧备份,过期的备份
       RMAN
    2、删除 EXPIRED 备份集
      当使用OS命令删除了备份集对应的备份片文件后,如果执行CROSSCHECK命令核对备份集,那么会将该备份集标记为EXPIRED状态。
       RMAN
    3、删除EXPIRED副本
       RMAN     4、删除特定备份集
      RMAN
    5、删除特定备份片
      RMAN
    6、删除所有备份集
      RMAN
    7、删除特定映像副本
       RMAN
    8、删除所有映像副本
       RMAN
    9、在备份后删除输入对象
       当使用BACKUP命令备份归档日志或备份集时,在备份完成之后可以删除原有输入对象,示例如下:
       RMAN        RMAN
    10、删除5天前的备份
       RMAN<DELETE NOPROMPT FOREC BACKUP COMETED BEFORE 'SYSDATE - 5';
五、CHANGE
   1、改变备份集状态
      可用CHANGE BACKUPSET .. UNAVAILABLE/AVAILABLE 来改变一个备份集的状态。

      RMAN
   2、改变映像副本状态
      数据文件:CHANGE DATAFILECOPY .. AVAILABLE/UNAVAILABLE
      控制文件:CHANGE CONTROLFILECOPY .. AVAILABLE/UNAVAILABLE
      归档日志:CHANGE ARCHIVELOG .. AVAILABLE/UNAVAILABLE      例如:
       RMAN
   3、建立长期备份
      长期备份是指被长期保留的备份文件,使用长期备份的目的是为了可以将数据库恢复到过去的特定时间点。当社顶了长期备份之后,RMAN会从设备冗余策略中
      免除该备份文件,也就是说,长期备份文件不会被标记为陈旧备份。
      命令:CHANGE .. KEEP/NOKEEP
      (1)使备份集156永久保留
         RMAN       (2)使备份集198保留60天
         RMAN       (3)免除备份集156的保留期限
         RMAN

六、CONFIGURE
   1、修改备份自动保留时间
      保留10天备份
      RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 10 DAYS;

   2、修改备份冗余数量的备份保留策略
      RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY n;
      n==大于0的正整数。
      
      RMAN> CONFIGURE RETENTION POLICY TO NONE; 设置成不采用任何备份保留策略。

PS 启用数据库块修改跟踪可以提高增量备份的效率
如果使用OMF特性(Oracle-Managed Files),Oracle会自动启用块修改跟踪。
启用块修改跟踪:
SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE 'D:/ORACLE/BACKUP/TRK_FILENAME';
禁止块修改跟踪:
SQL> ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;
查看块修改跟踪参数状态:
SQL> SELECT STATUS FROM V$BLOCK_CHANGE_TRACKING;

七、RMAN提示符下执行SQL语句
1)、语法: SQL '' ;
语法比较简单,就是提示符下输入SQL,后接SQL命令,命令用单引号括起来
command 通常为可执行的SQL命令语句,也可以为PL/SQL块
使用限制
如果SQL语句中包含文件名,则文件名及路径需要使用两个单引号括起来,整个SQL语句首尾需要使用双引号
可以执行SQL查询语句,但是无任何结果输出
RMAN提示符下常用的命令
startup [nomount | mount], shutdown immediate
alter system archive log current
alter database open [resetlogs]
2)、演示RMAN提示符下执行SQL语句
a、执行常用的starup, alter SQL 语句
robin@SZDB:~> export Oracle_SID=GOBO1
robin@SZDB:~> rman target /
Recovery Manager: Release 10.2.0.3.0 - Production on Tue Jun 4 11:04:26 2013
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
connected to target database (not started)
RMAN> startup nomount;
Oracle instance started
Total System Global Area    536870912 bytes
Fixed Size                    2074080 bytes
Variable Size                314575392 bytes
Database Buffers            213909504 bytes
Redo Buffers                  6311936 bytes

RMAN> alter database mount;
using target database control file instead of recovery catalog
database mounted

RMAN> alter database open;
database opened

RMAN> list copy of archivelog all;  --->查看当前数据库的归档日志,列出了1个已归档日志

List of Archived Log Copies
Key    Thrd Seq    S Low Time          Name
------- ---- ------- - ----------------- ----
2084    1    8      A 20130604 09:53:17 /u02/database/GOBO1/archive/arch_816906485_1_8.arc

RMAN> sql ' alter system archive log current ';  --->对当前日志进行归档
sql statement:  alter system archive log current

RMAN> list copy of archivelog all;                --->归档后可以看到多出了1个已归档日志
List of Archived Log Copies
Key    Thrd Seq    S Low Time          Name
------- ---- ------- - ----------------- ----
2084    1    8      A 20130604 09:53:17 /u02/database/GOBO1/archive/arch_816906485_1_8.arc
2085    1    9      A 20130604 10:46:36 /u02/database/GOBO1/archive/arch_816906485_1_9.arc

b、执行SQL查询语句,如下,没有任何结果输出
RMAN> sql 'select sysdate from dual';   
sql statement: select sysdate from dual
RMAN> sql ' select * from v$database ';
sql statement:  select * from v$database

c、执行带有路径及文件名的SQL语句
--下面的执行那个中没有使用双引号开头以及双单引号括住路径,收到错误提示
RMAN> sql ' create tablespace ts1 datafile '/u02/database/GOBO1/oradata/ts1.dbf' size 10m ';
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00558: error encountered while parsing input commands
RMAN-01006: error signalled during parse
RMAN-02001: unrecognized punctuation symbol "/"

--下面的SQL语句被成功执行
RMAN> sql "create tablespace ts1 datafile ''/u02/database/GOBO1/oradata/ts1.dbf'' size 10m";
sql statement: create tablespace ts1 datafile ''/u02/database/GOBO1/oradata/ts1.dbf'' size 10m

d、执行PL/SQL块
RMAN> sql ' begin dbms_lock.sleep(3); end;';
sql statement:  begin dbms_lock.sleep(3); end;

e、rman块命令方式执行PL/SQL块
RMAN> run{
2> sql ' begin dbms_lock.sleep(3); end; ';
3> }
sql statement:  begin dbms_lock.sleep(3); end;

RMAN> run {
2> sql ' drop tablespace ts1 including contents and datafiles ';
3> }
sql statement:  drop tablespace ts1 including contents and datafiles

RMAN> shutdown immediate;
database closed
database dismounted
Oracle instance shut down

f、切换到系统提示符下
RMAN> host;
robin@SZDB:~> exit
exit
host command complete
RMAN>

以上内容收集于网络,供参考。