Oracle RMAN日常维护命令

下面收集了RMAN维护过程中常见的一些命令及命令的简单说明,供参考。 一、REPORT 1、报告目标数据库的物理结构 RMAN<REPORT SCHEMA2、报告需要备份的数据文件 在执行备份之前,常常需要取得需要备份的数据文件信息,通过执行REPORT NEED BACKUP 命令,可以列出需要备份的数据文件。当使用REPORT NEED BACKUP命令时,可以带 有INCREMENTAL、DAYS、REDUNDANCY、RECOVERY WINDOW 四个选项。

(1)报告需要转储的增量备份超出特定个数的数据文件
   当恢复数据文件时,需要转储数据文件备份,然后应用归档日志执行恢复。如果备份数据文件采用了增量备份和累积备份策略,那么在转储数据文件时依次转储
   0、1、2..级别的增量备份,转储的数据文件备份越多,恢复时间越长,下面以报告恢复数据文件需要转储的增量备份个数超过3次的数据文件为例:
   RMAN<REPORT NEED BACKUP INCREMENTAL 3       其中 file 用于标识数据文件的编号,Incrementals用于标识需要转储的备份文件个数,Name用于标识数据文件的名称,如果某个文件出现转储的次数大于3次,应该在该数据文件上执行完全备份或增量0级备份。    
(2)报告特定天数未备份的数据文件
   当恢复数据文件时,在转储了所需的数据文件备份之后,会应用从备份点开始的所有归档日志。需要应用的归档日志越多,恢复时间越长,为了减少恢复时间,应该制定
   备份数据文件的时间周期。
   USERS表空间上3天未备份的数据文件
       RMAN<REPORT NEED BACKUP DAYS 3 TABLESPACE USERS;       
   数据库内10天以上未备份的数据文件
       REPORT NEED BACKUP DAYS 10    
(3)报告低于特定备份次数的数据文件
   恢复数据文件时,需要转储数据文件备份。当数据文件出现介质失败,并且数据文件备份也出现问题时,会导致数据文件无法恢复。在制定备份册落时,
   为了防止数据文件备份出现问题,应该为数据文件保留多个备份,但某些文件的备份次数过少时,需要增加备份数量。
  RMAN<REPORT NEED BACKUP REDUNDANCY 2 DATABASE;    
(4)报告在恢复时间窗口内未备份的数据文件
   当恢复数据文件时,在转储了所需的数据文件备份之后,会应用从备份点开始的所有归档日志。需要应用的归档日志越多,恢复时间越长。通过使用
   恢复时间窗口,可以将恢复操作需要应用的归档日志控制在特定时间范围内。下面以报告超过恢复窗口6天的未备份数据文件为例,说明使用DAYS选项的方法:
   RMAN<REPORT NEED BACKUP RECOVERY WINDOW OF 6 DAYS       DAYS 用于标识恢复数据文件需要应用几天前的归档日志。

3、报告陈旧备份 当使用RMAN执行恢复操作时,RMAN会自动转储最近的备份文件,然后应用该备份文件之后的归档日志。如果在特定数据文件上进行了多次备份,那么可以删除 早期备份,通过使用REPORT OBSOLETE命令,可以报告陈旧备份。下例报告备份次数超过2次的陈旧备份: RMAN<REPORT OBSOLETE REDUNDANCY 2; 4、报告不可恢复的数据文件 当使用NOLOGGING选项装载了数据库之后,因为数据变化没有被记录到归档日志中,所以会导致过去的数据文件备份不能恢复当前数据文件。为防止数据文件不能 恢复,应该备份该数据文件,通过如下语句,可以查看数据库所有不可恢复的数据文件: RMAN<REPORT UNRECOVERABLE; 二、LIST
1、列出数据文件备份集 RMAN<LIST BACKUP OF TABLESPACE USER01; 2、列出控制文件备份集 RMAN<LIST BACKUP OF CONTROLFILE; 3、列出归档日志备份集 RMAN<LIST BACKUP OF ARCHIVELOG ALL; 4、列出SPFILE备份集 RMAN<LIST BACKUP OF SPFILE; 5、列出数据文件映像副本 可用LIST COPY OF DATABASE列出所有数据文件的映像副本;用LIST COPY OF TABLESPACE 列出特定表空间数据文件的映像副本;用 LIST COPY OF DATAFILE列出特定 数据文件的映像副本。 RMAN<LIST COPY OF DATAFILE 5; 6、列出控制文件映像副本 RMAN<LIST COPY OF CONTROLFILE; 7、列出归档日志映像副本。 RMAN<LIST COPY OF ARCHIVELOG ALL; 8、列出数据库副本 每次使用RESETLOGS选项打开数据库之后都会生成一个新的数据库副本。 RMAN<LIST INCARNATION OF DATABASE; 9、列出所有无效备份 RMAN<LIST EXPIRED BACKUP; 10、列出数据库中所有的备份信息 RMAN<LIST BACKUP; 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代表2014年5月26日,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<CROSSCHECK BACKUP;
2、核对所有数据文件的备份集 RMAN<CROSSCHECK BACKUP OF DATABASE;
3、核对特定表空间的备份集 RMAN<CROSSCHECK BACKUP OF TABLESPACE SYSTEM;
4、核对特定数据文件的备份集 RMAN<CROSSCHECK BACKUP OF DATAFILE 4;
5、核对控制文件的备份集 RMAN<CROSSCHECK BACKUP OF CONTROLFILE;
6、核对SPFILE的备份集 RMAN<CROSSCHECK BACKUP OF SPFILE;

7、核对归档日志的备份集 RMAN<CROSSCHECK BACKUP OF ARCHIVELOG SEQUENCE 3;
8、核对所有映像副本 RMAN<CROSSCHECK COPY; 9、核对所有数据文件的映像副本 RMAN<CROSSCHECK COPY OF DATABASE; 10、核对特定表空间的映像副本 RMAN<CROSSCHECK COPY OF TABLESPACE USERS; 11、核对特定数据文件的映像副本 RMAN<CROSSCHECK COPY OF DATAFILE 4; 12、核对控制文件的映像副本 RMAN<CROSSCHECK COPY OF CONTROLFILE; 13、核对归档日志的映像副本 RMAN<CROSSCHECK COPY OF ARCHIVELOG SEQUENCE 4;

四、DELETE 该命令用于删除RMAN备份记录及相应的物理文件 1、删除陈旧备份,过期的备份 RMAN<DELETE OBSOLETE; 如果被删除的备份是一个单独的数据文件的镜像复制可以直接被删除。如果被删除的备份是一个备份集中的一部分,则必须等整个备份集中所有文件都过期之后才能删除。 2、删除 EXPIRED 备份集 当使用OS命令删除了备份集对应的备份片文件后,如果执行CROSSCHECK命令核对备份集,那么会将该备份集标记为EXPIRED状态。 RMAN<DELETE NOPROMPT EXPIRED BACKUP; 3、删除EXPIRED副本 RMAN<DELETE NOPROMPT EXPIRED COPY;
4、删除特定备份集 RMAN<DELETE NOPROMPT BACKUPSET 19; 5、删除特定备份片 RMAN<DELETE NOPROMPT BACKUPPIECE 'D:\BACKUP\DEMO_18.BAK'; 6、删除所有备份集 RMAN<DELETE NOPROMPT BACKUP; 7、删除特定映像副本 RMAN<DELETE NOPROMPT DATAFILECOPY 'D:\BACKUP\DEM0_19.BAK'; 8、删除所有映像副本 RMAN<DELETE NOPROMPT COPY; 9、在备份后删除输入对象 当使用BACKUP命令备份归档日志或备份集时,在备份完成之后可以删除原有输入对象,示例如下: RMAN<BACKUP ARCHIVELOG ALL DELETE INPUT; RMAN<BACKUP BACKUPSET 22 FORMAT='D:\BACKUP%u.BAK' DELETE INPUT; 10、删除5天前的备份 RMAN<DELETE NOPROMPT FOREC BACKUP COMETED BEFORE 'SYSDATE - 5'; 五、CHANGE 1、改变备份集状态 可用CHANGE BACKUPSET .. UNAVAILABLE/AVAILABLE 来改变一个备份集的状态。

  RMAN<CHANGE BACKUPSET 22 UNAVAILABLE

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

六、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 '<command>' ; 语法比较简单,就是提示符下输入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>

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