oracle rman常用命令

教程发布:风哥 教程分类:ITPUX技术网 更新日期:2022-02-12 浏览学习:1201

CROSSCHECK命令:
用于核对磁盘和磁带上的备份文件,以确保RMAN资料库与备份文件保持同步。注意:该命令只会检查RMAN资料库所记载的备份文件。当执行crosscheck命令时,如果资料库记录不匹配于备份文件的物理状态,那么该命令会更新资料库记录的状态信息。备份文件的状态包括:AVALIABLE、UNAVALIABLE、EXPIRED。
1、核对所有备份集 RMAN> crosscheck backup;
2、核对所有数据文件的备份集 RMAN> crosscheck backup of database;
3、核对特定表空间的备份集 RMAN> crosscheck backup of tablespace users;
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 6;
12、核对归档日志的映像副本 RMAN> crosscheck copy of archivelog sequence 4;
13、核对控制文件的映像副本 RMAN> crosscheck copy of controlfile;
1、切换服务器归档模式,如果已经是归档模式可跳过此步:
%sqlplus /nolog (启动sqlplus)
SQL> conn / as sysdba (以DBA身份连接数据库)
SQL> shutdown immediate; (立即关闭数据库)
SQL> startup mount (启动实例并加载数据库,但不打开)
SQL> alter database archivelog; (更改数据库为归档模式)
SQL> alter database open; (打开数据库)
SQL> alter system archive log start; (启用自动归档)
SQL> exit (退出)
2、连接:
%rman mailto:target=rman/rman@mydb]target=rman/rman@mydb (启动恢复管理器)
3、基本设置:
RMAN> configure default device type to disk;
(设置默认的备份设备为磁盘)
RMAN> configure device type disk parallelism 2;
(设置备份的并行级别,通道数)
RMAN> configure channel 1 device type disk format '/backup1/backup_%U';
(设置备份的文件格式,只适用于磁盘设备)
RMAN> configure channel 2 device type disk format '/backup2/backup_%U';
(设置备份的文件格式,只适用于磁盘设备)
RMAN> configure controlfile autobackup on;
(打开控制文件与服务器参数文件的自动备份)
RMAN> configure controlfile autobackup format for device type disk to '/backup1/ctl_%F';
(设置控制文件与服务器参数文件自动备份的文件格式)
4、查看所有设置:
RMAN> show all;
5、查看数据库方案报表:
RMAN> report schema;
6、备份全库:
RMAN> backup database plus archivelog delete input;
(备份全库及控制文件、服务器参数文件与所有归档的重做日志,并删除旧的归档日志)
7、备份表空间:
RMAN> backup tablespace system plus archivelog delete input; (备份指定表空间及归档的重做日志,并删除旧的归档日志)
8、备份归档日志:
RMAN> backup archivelog all delete input;
9、复制数据文件:
RMAN> copy datafile 1 to '/oracle/dbs/system.copy';
10、查看备份和文件复本:
RMAN> list backup;
11、验证备份:
RMAN> validate backupset 3;
12、从自动备份中恢复服务器参数文件:
RMAN> shutdown immediate; (立即关闭数据库)
RMAN> startup nomount; (启动实例)
RMAN> restore spfile to pfile '/backup1/mydb.ora' from autobackup; (从自动备份中恢复服务器参数文件)
13、从自动备份中恢复控制文件:
RMAN> shutdown immediate; (立即关闭数据库)
RMAN> startup nomount; (启动实例)
RMAN> restore controlfile to '/backup1' from autobackup; (从自动备份中恢复控制文件)
13、恢复和复原全数据库:
RMAN> shutdown immediate; (立即关闭数据库)
RMAN> exit (退出)
%mv /oracle/dbs/tbs_12.f /oracle/dbs/tbs_12.bak
(将数据文件重命名)
%mv /oracle/dbs/tbs_13.f /oracle/dbs/tbs_13.bak
(将数据文件重命名)
%mv /oracle/dbs/tbs_14.f /oracle/dbs/tbs_14.bak
(将数据文件重命名)
%mv /oracle/dbs/tbs_15.f /oracle/dbs/tbs_15.bak
(将数据文件重命名)
%rman mailto:target=rman/rman@mydb]target=rman/rman@mydb (启动恢复管理器)
RMAN> startup pfile=/oracle/admin/mydb/pfile/initmydb.ora (指定初始化参数文件启动数据库)
RMAN> restore database; (还原数据库)
RMAN> recover database; (恢复数据库)
RMAN> alter database open; (打开数据库)
14、恢复和复原表空间:
RMAN> sql 'alter tablespace users offline immediate';
(将表空间脱机)
RMAN> exit (退出恢复管理器)
%mv /oracle/dbs/users01.dbf /oracle/dbs/users01.bak
(将表空间重命名)
%rman mailto:target=rman/rman@mydb]target=rman/rman@mydb (启动恢复管理器)
RMAN> restore tablespace users; (还原表空间)
RMAN> recover tablespace users; (恢复表空间)
RMAN> sql 'alter tablespace users online'; (将表空间联机)
15、增量备份与恢复:
第一天的增量基本备份:
RMAN> backup incremental level=0 database plus archivelog delete input;
第二天的增量差异备份:
RMAN> backup incremental level=2 database plus archivelog delete input;
第三天的增量差异备份:
RMAN> backup incremental level=2 database plus archivelog delete input;
第四天的增量差异备份:
RMAN> backup incremental level=1 database plus archivelog delete input;
第五天的增量差异备份:
RMAN> backup incremental level=2 database plus archivelog delete input;
第六天的增量差异备份:
RMAN> backup incremental level=2 database plus archivelog delete input;
第七天的增量差异备份:
RMAN> backup incremental level=0 database plus archivelog delete input;
增量恢复:
RMAN> shutdown immediate;
RMAN> exit
%mv /oracle/dbs/tbs_12.f /oracle/dbs/tbs_12.bak
%mv /oracle/dbs/tbs_13.f /oracle/dbs/tbs_13.bak
%mv /oracle/dbs/tbs_14.f /oracle/dbs/tbs_14.bak
%mv /oracle/dbs/tbs_15.f /oracle/dbs/tbs_15.bak
%rman mailto:target=rman/rman@mydb]target=rman/rman@mydb
RMAN> startup pfile=/oracle/admin/mydb/pfile/initmydb.ora
RMAN> restore database;
RMAN> recover database;
RMAN> alter database open;

一、REPORT命令:用于详细分析RMA资料库信息,并生成针对各种问题的报告。
1、报告目标数据库的物理结构,取得数据库所包含的表空间及数据文件信息 ,RMAN> report schema
2、报告需要备份的数据文件
(1) 示例一,报告需要转储的增量备份超出特定个数的数据文件 当恢复数据文件时,需要转储数据文件备份,然后应用归档日志执行恢复。如果备份数据文件采用了增量备份和累积备份策略,那么在转储数据文件时依次转储0级增量备份、1级增量备份、2级增量备份等。
RMAN> report need backup incremental 3;
说明:报告恢复数据文件需要转储的增量备份个数超过3次的数据文件
(2) 示例二,报告特定天数未备份的数据文件, 当恢复数据文件时,在转储了所需的数据文件备份之后,会应用从备份点开始的所有归档日志,RMAN> report need backup days 3 tablespace users;
说明:在USERS表空间上3天未备份的数据文件
(3) 示例三,报告低于特定备份次数的数据文件
RMAN> report need backup redundancy 2 database;
说明:报告备份文件低于2份的所有数据文件
(4) 示例四,报告在恢复窗口内未备份的数据文件
RMAN> report need recovery window of 6 days;
说明:超过恢复窗口6天的未备份的数据文件
3、报告陈旧备份, 当使用RMAN执行恢复操作时,RMAN会自动转储最近的备份文件,然后应用该备份文件之后的归档日志。如果在特定数据文件上进行了多次备份,那么可以删除早期备份。
RMAN> report obsolete redunndancy 2;
说明:报告备份次数超过2次的陈旧备份
4、报告不可恢复的数据文件,当使用NOLOGGING选项装载了数据库之后,因为数据变化没有被记载到归档日志中,所以会导致过大的数据文件备份不能恢复当前数据文件。为了防止数据文件不能恢复,应该备份该数据文件。
RMAN> report unrecoverable;
说明:报告数据库所有不可恢复的数据文件

RMAN命令详解
一、list命令
1. List 当前RMAN所备份的数据库:

1.1. list backup summary; --概述可用的备份
list incarnation;--汇总查询

--如果备份文件多的话多用这两个list命令可以对备份文件有个总体了解。
B 表示backup
A 表示Archivelog、 F 表示full backup、 0,1,2 表示incremental level备份
A 表示可用AVALIABLE、 X 表示EXPIRED
这个命令可以派生出很多类似命令,例如
list backup of database summary
list backup of archivelog all summary
list backup of tablespace users summary;
list backup of datafile n,n,n summary
这些命令可以让我们对已有的备份文件有一个整体,直观的了解。

1.2.list backup by file;--按照文件类型分别列出
分别为:数据文件列表、归档日志列表、控制文件列表、SPFILE列表
1.3.list backup;
这个命令列出已有备份集的详细信息。
1.4.list expired backup;
列出过期的备份文件
1.5.list copy;
列出copy文件
list copy of database;
list copy of controlfile;
list copy of tablespace users;
list copy of datafile n,n,n;
list copy of archivelog all;
list copy of archivelog from scn 10000;
list copy of archivelog until sequence 12;

2. List 相关文件的信息
list backup of {archivelog, controlfile, database, datafile, spfile, tablespace};
list backup of database; --full,incremental,tablespace,datafile
2.1服务器参数文件:
list backup of spfile;

2.2 控制文件:
list backup of controlfile;

2.3 数据文件:
list backup of datafle n,n,n,n;

2.4表空间:
list backup of tablespace tablespace_name;--表空间对应的backup
2.5归档日志:
list backup of archivelog {all, from, high, like, logseq, low, scn, sequence, time, until};
list backup of archivelog all;
list backup of archivelog until time 'sysdate-1';
list backup of archivelog from sequence 10;
list backup of archivelog until sequence 10;
list backup of archivelog from scn 10000;
list backup of archivelog until scn 200000;
list archivelog from scn 1000;
list archivelog until scn 2000;
list archivelog from sequence 10;
list archivelog until sequence 12;
二、report常用命令总结备忘

report用于判断数据库当前可恢复状态、以及数据库已有备份的信息。
最常使用的是report obsolete; report schema;
report {device, need, obsolete, schema, unrecoverable}
report schema;
report obsolete;
report unrecoverable;
report need backup;
report need backup days=3; --报告最近3天内没有备份的文件
report need backup redundancy=3; --报告冗余次数小于3的数据文件。
report need backup recovery window of 2 days;

report schema;---报告数据库模式
report obsolete;---报告已丢弃的备份集(配置了保留策略)。
report unrecoverable;---报告当前数据库中不可恢复的数据文件(即没有这个数据文件的备份、或者该数据文件的备份已经过期)
report need backup;---报告需要备份的数据文件(根据条件不同)
report need backup days=3;
--最近三天没有备份的数据文件(如果出问题的话,这些数据文件将需要最近3天的归档日志才能恢复)
report need backup incremental=3;
--需要多少个增量备份文件才能恢复的数据文件。(如果出问题,这些数据文件将需要3个增量备份才能恢复)
report need backup redundancy=3;
--报告出冗余次数小于3的数据文件
--例如数据文件中包含2个数据文件system01.dbf和users01.dbf.
--在3次或都3次以上备份中都包含system01.dbf这个数据文件,而users01.dbf则小于3次
--那么,报告出来的数据文件就是users01.dbf
--即,报告出数据库中冗余次数小于 n 的数据文件
report need backup recovery window of 2 days;
--报告出恢复需要2天归档日志的数据文件
三、backup常用命令总结备忘
1.设置备份标记
backup database tag='full_bak1';
注:每个标记必须唯一,相同的标记可以用于多个备份只还原最新的备份。
2.设置备份集大小(一次备份的所有结果为一个备份集,要注意备份集大小)
backup database maxsetsize=100m tag='datafile1';
注:maxsetsize限定备份集的大小。所以必须大于数据库总数据文件的大小,否则会报错。
RMAN-06183: datafile or datafile copy larger than MAXSETSIZE: file# 1 /data/oradata/system01.dbf
3.设置备份片大小(磁带或文件系统限制)
run {
allocate channel c1 type disk maxpicecsize 100m format '/data/backup/full_0_%U_%T';
backup database tag='full_0';
release channel c1;
}
可以在allocate子句中设定每个备份片的大小,以达到磁带或系统限制。
也可以在configure中设置备份片大小。
Configure channel device type disk maxpiecesize 100 m;
configure channel device type disk clear;
4.备份集的保存策略
backup database keep forever; --永久保留备份文件
backup database keep until time='sysdate+30'; --保存备份30天

5.重写configure exclude命令
backup databas noexclude keep forever tag='test backup';
6.检查数据库错误
backup validate database;
使用RMAN来扫描数据库的物理/逻辑错误,并不执行实际备份。
7.跳过脱机,不可存取或只读文件
backup database skip readonly;
backup database skip offline;
backup database skip inaccessible;
backup database skip readonly skip offline skip inaccessible;
8.强制备份
backup database force;
9.基于上次备份时间备份数据文件
1>只备份添加的新数据文件
backup database not backed up;
2>备份"在限定时间周期内"没有被备份的数据文件
backup database not backed up since time='sysdate-2';
10.备份操作期间检查逻辑错误
backup check logical database;
backup validate check logical database;
11.生成备份副本
backup database copies=2;
12.备份控制文件
backup database device type disk includ current controlfile;
四、configure常用命令总结备忘

4.1 显示当前的配置信息
4.1.1 RMAN> show all;
RMAN 配置参数为:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # 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 ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:/ORACLE/PRODUCT/10.2.0/DB_1/DATABASE/S
NCFDBA.ORA'; # default

4.1.2 查询RMAN设置中非默认值:
SQL> select name,value from v$rman_configuration;

4.2. 常用的configure选项
4.2.1 保存策略 (retention policy)
configure retention policy to recovery window of 7 days;
configure retention policy to redundancy 5;
configure retention policy clear;
CONFIGURE RETENTION POLICY TO NONE;
第一种recover window是保持所有足够的备份,可以将数据库系统恢复到最近七天内的任意时刻。任何超过最近七天的数据库备份将被标记为obsolete。
第二种redundancy 是为了保持可以恢复的最新的5份数据库备份,任何超过最新5份的备份都将被标记为redundancy。它的默认值是1份。
第三四:NONE 可以把使备份保持策略失效,Clear 将恢复默认的保持策略
一般最安全的方法是采用第二种保持策略。

4.2.2 备份优化 backup optimization
configure backup optimization on;
configure backup optimization off;
configure backup optimization clear;
默认值为关闭,如果打开,rman将对备份的数据文件及归档等文件进行一种优化的算法。
4.2.3 默认设备 default device type
configure default device type to disk;
configure default device type to stb;
configure default device type clear;
是指定所有I/O操作的设备类型是硬盘或者磁带,默认值是硬盘
磁带的设置是CONFIGURE DEFAULT DEVICE TYPE TO SBT;

4.3.4 控制文件 controlfile
configure controlfile autobackup on;
configure controlfile autobackup format for device type disk to '/cfs01/backup/conf/conf_%F';
configure controlfile autobackup clear;
configrue controlfile autobackup format for device type disk clear;
configrue snapshot controlfile name to '/cfs01/backup/snapcf/scontrofile.snp';
--是配置控制文件的快照文件的存放路径和文件名,这个快照文件是在备份期间产生的,用于控制文件的读一致性。
configrue snapshot controlfile name clear;

强制数据库在备份文件或者执行改变数据库结构的命令之后将控制文件自动备份,默认值为关闭。这样可以避免控制文件和catalog丢失后,控制文件仍然可以恢复。

4.3.5 并行数(通道数) device type disk|stb pallelism n;
configure device type disk|stb parallelism 2;
configure device type disk|stb clear; --用于清除上面的信道配置
configure channel device type disk format 'e/:rmanback_%U';
configure channel device type disk maxpiecesize 100m
configure channel device type disk rate 1200K
configure channel 1 device type disk format 'e/:rmanback_%U';
configure channel 2 device type disk format 'e/:rmanback_%U';
configure channel 1 device type disk maxpiecesize 100m
配置数据库设备类型的并行度。

4.3.6 生成备份副本 datafile|archivelog backup copies
configure datafile backup copies for device type disk|stb to 3;
configure archivelog backup copies for device type disk|stb to 3;
--是设置数据库的归档日志的存放设备类型
configure datafile|archivelog backup copies for device type disk|stb clear
BACKUP DEVICE TYPE DISK DATABASE
FORMAT '/disk1/backup/%U', '/disk2/backup/%U', '/disk3/backup/%U';

是配置数据库的每次备份的copy数量,oracle的每一次备份都可以有多份完全相同的拷贝。

4.3.7 排除选项 exclude
configure exclude for tablespace 'users';
configrue exclude clear;
此命令用于将指定的表空间不备份到备份集中, 此命令对只读表空间是非常有用的。

4.3.8 备份集大小 maxsetsize
configure maxsetsize to 1G|1000M|1000000K|unlimited;
configure maxsetsize clear;
4.3.9 其它选项 auxiliary
CONFIGURE AUXNAME FOR DATAFILE 1 TO '/oracle/auxfiles/aux_1.f';
CONFIGURE AUXNAME FOR DATAFILE 2 TO '/oracle/auxfiles/aux_2.f';
CONFIGURE AUXNAME FOR DATAFILE 3 TO '/oracle/auxfiles/aux_3.f';
CONFIGURE AUXNAME FOR DATAFILE 4 TO '/oracle/auxfiles/aux_4.f';
-
CONFIGURE AUXNAME FOR DATAFILE 1 CLEAR;
CONFIGURE AUXNAME FOR DATAFILE 2 CLEAR;
CONFIGURE AUXNAME FOR DATAFILE 3 CLEAR;
CONFIGURE AUXNAME FOR DATAFILE 4 CLEAR;
五、delete命令
删除相关的备份集或镜像副本的物理文件,同时将删除标记DELETE更新到控制文件,如果使用恢复目录,则是清除恢复目录内的备份集。
RMAN> delete backupset;
RMAN> delete backupset n;
RMAN> delete obsolete ;
RMAN> delete obsolete redundancy 2;
RMAN> delete noprompt copy;
RMAN> delete noprompt backupset tag TAG20101016T143521;
RMAN> delete obsolete recovery window of 7 days;
RMAN> delete expired backupset;
RMAN> delete expired copy;
RMAN> delete expired archivelog all;
RMAN> delete archivelog until time 'sysdate-5';
六、crosscheck命令
用于检验存储仓库中的备份集或镜像副本,执行改命令后,将更新存储仓库中的刚刚校验的对象状态,便于后续操作处理。
RMAN备份校验是的几种状态:
Expired:对象不存在于磁盘或磁带。当一个备份集处于expired状态,则该备份集中所有的备份片同样处于expired状态。
Available:对象处于可用状态。当一个备份集可用,则改备份集内的所有备份片同样可用。
Unavailable:对象处于不可用状态。当一个备份可不用,则改备份集内的所有备份片同样不可用
RMAN> crosscheck backupset;
RMAN> crosscheck copy;
RMAN> crosscheck backup of controlfile;
RMAN> crosscheck backup of archivelog all;
RMAN> crosscheck backup of datafile 1,2;
RMAN> crosscheck backup of tablespace sysaux,system;
RMAN> crosscheck backup completed between '13-OCT-10' and '23-OCT-10';
RMAN> crosscheck backupset 1067,1068;
七、validate命令
验证一个备份集内的数据的完整性。RMAN扫描备份集得所有备份片,并检查校验和,验证其内容是否可以成功还原,validate是较crosscheck更高一级的验证操作,crosscheck仅仅是检查备份集的头部信息,检验文件的存在性,validate验证数据的有效性。
RMAN> validate backupset [check logical]
八、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
1 列出对应物 
RMAN>list incarnation;
2 列出备份
2.1概述可用的备份RMAN>list backup summary;
B 表示 backup
F 表示 FULL
A 表示 archive log
0 1 表示 incremental backup
S 说明备份状态 (A AVAILABLE X EXPIRED )
2.2按备份类型列出备份RMAN>list backup by file;
按照 数据文件备份,归档日志备份,控制文件备份,服务器参数文件备份 列出
2.3列出详细备份 RMAN>list backup;
2.4列出过期备份 RMAN>list expired backup;
2.5列出表空间和数据文件备份
list backup of tablespace 和list backup of datafile 输出和list backup 相似
如:list backup of tablespace user_tbs;
list backup of datafile 3;
2.6列出归档日志备份 RMAN>list archivelog all;简要信息
RMAN>list backup of archivelog all; 详细信息
2.7列出控制文件和服务器参数文件
RMAN>list backup of controlfile;
RMAN>list backup of spfile;
=====================================================
=====================================================
RMAN 的 report命令
1. 报告最近没有被备份的数据文件
  RMAN>report need backup days=3;
 
2. 报告备份冗余或恢复窗口
  RMAN>report need backup redundancy=2;
  RMAN>report need backup recovery window of 2 days;
 
3. 报告数据文件的不可恢复操作
  RMAN>report unrecoverable;
4. 报告数据库模式
  RMAN>report schema;
 
5. 报告丢弃的备份
  如果使用了保存策略,备份会标记为丢弃状态  RMAN>report obsolete; 删除丢弃状态备份RMAN>delete obsolete;
=====================================================
=====================================================
RMAN的crosscheck 命令
1 备份集有两种状态A(Available,RMAN认为该项存在于备份介质上)X(Expired,备份存在于控制文件或恢复目录中,但是并没有物理存在于备份介质上)
 
2 crosscheck 的目的是检查RMAN 的目录以及物理文件,如果物理文件不存在于介质上,将标记为Expired。如果物理文件存在,将维持Available。如果原先标记为Expired 的备份集再次存在于备份介质上(如恢复了损坏的磁盘驱动器后),crosscheck将把状态重新从Expired标记回Available。
3 crosscheck 输出分两部分。第一部分列出确定存在于备份介质上的所有备份集片,第二部分列出不存在于备份介质上的备份集片,并将其标记为Expired。当设置备份保 存策略后,一个备份过期,crosscheck之后标记为丢弃的备份状态依旧为availabel,要删除丢弃备份delete obsolete。
4 示例:
 crosscheck backup
 crosscheck backup of datafile 1;
 crosscheck backup of tablespace users;
 crosscheck backup of controfile;
 crosscheck backup of controlfile;
 crosscheck backup tag='SAT_BACKUP';
 crosscheck backup completed after 'sysdate - 2'
 crosscheck backup completed between 'sysdate - 5' and 'sysdate -2 '
 crosscheck backup device type sbt;
 crosscheck archivelog all;
 crosscheck archivelog like '%ARC00012.001'
 crosscheck archivelog from sequence 12;
 crosscheck archivelog until sequence 522;
=====================================================
=====================================================
RMAN 的validate 命令
1 validate 命令验证备份集片是否能够被还原
2 list backup summary; 得到了备份集得主键ID如40,然后validate backupset 40;
=====================================================
=====================================================
RMAN 的备份保存策略以及change ,delete命令
0.带delete参数的change 命令删除备份集,从备份介质,并且从控制文件和恢复目录中删除。
 change backupset 117,118 delete;
 change backuppiece 1304 delete;
 change archivelog until logseq =544 delete;
1.两类策略:恢复窗口备份保存策略(recovery windows backup retension policy) 基于时间
备份冗余备份保存策略(backup redundancy backup retension policy) 基于备份的数量
 两类策略互相排斥
 
2.即使使用了备份保存策略,备份到期并不删除,只是在RMAN目录中标记为丢弃,看到的状态依旧为available;
 要查看标记为丢弃的备份 report obsolete,只有使用delete obsolete才真正物理删除。
3.configure retension policy to recovery window of 7 days;
 configure retension policy to redundancy 3;
 显示结果 show all;
 
4.查看到期丢弃的备份时,可能需要手工保存一些备份 ,可以使用change 命令带keep 参数,使用这个命令后,那些被修改的备份将被认为是个long-term backup,不在受保存策略影响也就是说delete obsolete 也不删除。
5.要使备份时候不受保存策略影响 ,使用带keep参数的backup 命令
 backup database keep forever;
 backup database keep 5 days;
6.change 命令功能
  可以修改备份为永久保存并将以及该备份的相关的日志保存下来,保证总能将备份恢复到当前时间点
change backupset 31 keep forever logs;
  可以设置备份丢弃的新日期 ,将备份在多保存7 天,7 天后将删除
change backupset 32 keep until time 'sysdata + 7' logs;
7.change 可以将备份集设置为unavailable
change backupset 33 unavailable;
  标记为unavailable状态的备份集并不参与crosscheck;
=====================================================
=====================================================
恢复目录的记录删除
1. $ORACLE_HOME/rdbms/admin/prgrmanc.sql 脚本定期删除恢复目录中具有DELETED状态的记录
2. 要删除旧的对应物记录incarnation.必须从DBINC 表中删除这些对应物,使用RC_DATABASE_INCARNATION 视图来确定要删除的对应物。记录要删除的每个对应物的DBINC_KEY
随后启动SQL*Plus,执行delete from dbinc where dbinc_key=2;
删除示例:
1、删除陈旧备份
当使用RMAN执行备份操作时,RMAN会根据备份冗余策略确定陈旧备份。
RMAN> delete obsolete;
2、删除EXPIRED备份
执行crosscheck命令核对备份集,那么会将该备份集标记为EXPIRED状态。为了删除相应的备份记录,可以执行delete expired backup命令。
RMAN> delete expired backup;
3、删除EXPIRED副本
RMAN> delete expired copy;
4、删除特定备份集
RMAN> delete backupset 19;
5、删除特定备份片
RMAN> delete backuppiece 'd:\backup\DEMO_19.bak';
6、删除所有备份集
RMAN> delete backup;
7、删除特定映像副本
RMAN> delete datafilecopy 'd:\backup\DEMO_19.bak';
8、删除所有映像副本
RMAN> delete copy;
9、在备份后删除输入对象
RMAN> delete archivelog all delete input;
RMAN> delete backupset 22 format = ''d:\backup\%u.bak'' delete input;
=====================================================
=====================================================
手工同步恢复目录
resync catalog;
Oracle同步恢复目录的时候,首先创建快照控制文件,然后比较这个文件和恢复目录,完成后,Oracle 更新恢复目录,使恢复目录和控制文件同步
=====================================================
=====================================================
在RMAN 中存储脚本
1,连接到目标数据库和恢复目录
  rman target / catalog mailto:rman/rman@rman9i]rman/rman@rman9i
 
2,创建脚本
  RMAN>create script my_bk_script
  2>{backup database plus archivelog;}
create script my_bk_script
3,打印脚本
 RMAN>print script my_bk_script;
 printing stored scipt:my_bk_script
 {backup database plus archivelog;}
 
4,运行这个脚本,备份目标数据库
 RMAN>run {execute scipt my_bk_script;}
 
5 删除脚本
 RMAN>delete script my_bk_script;
=====================================================
=====================================================
archivelog模式下的完全恢复
step1:set oracle_sid=recover
rman target rman_backup/password
configure controlfile autobackup on;
step2:backup database plus archivelog delete input;
step3:shutdown immediate;
step4:重命名所有的数据文件和控制文件,不重命名联机重做日志。
step5: startup nomount;
  set DBID=****
  restore controlfile from autobackup;
  alter database mount;
 
step6: restore database;
  recover database;
  alter database open resetlogs;
表空间恢复
sql"alter tablespace users offline";
sql"alter tablespace tools offline";
restore tablespace users,tools;
recover tablespace users,tools;
sql"alter tablespace users online";
sql"alter tablespace tools online";
数据文件恢复
sql"alter database datafile 3 offline";
sql"alter database datafile 'd:oracleoradatausers01.dbf' offline";
restore datafile 3
restore datafile 'd:oracleoradatausers01.dbf';
recover datafile 3
recover datafile 'd:oracleoradatausers01.dbf';
sql"alter database datafile 3 online";
sql"alter database datafile 'd:oracleoradatausers01.dbf'online";
=====================================================
=====================================================
切换当前的incarnation 回到resetlogs 前RESET DATABASE TO INCARNATION inc_key
=====================================================
=====================================================
RMAN 恢复示例
1 基于时间点的恢复
run
{
set until time "to_date('07/01/02 15:00:00','mm/dd/yy hh24:mi:ss')"'
restore database;
recover database;
alter database open resetlogs;
}
2 基于SCN 的恢复
startup mount;
restore database UNTIL SCN 10000;
recover database UNTIL SCN 10000;
alter database open resetlogs;
3 基于日志序列的恢复
startup mount;
restore database UNTIL SEQUENCE 100 thread 1;
recover database UNTIL SEQUENCE 100 thread 1;
alter database open resetlogs;
4 数据文件所在磁盘出现硬件故障
磁盘故障数据文件将不能被转储到原位置,必顺将数据文件转储到其他磁盘
RMAN>run{
startup force mount;
set newname for datafile 1 to '/opt/datafile/system_new01.pdf';
restore database;
switch datafile all;
recover database;
sql 'alter database open';
}
RMAN>report schema; //恢复后查看数据文件新位置
5 恢复表空间数据文件
示例:SYSTEM表空间的数据文件被删除
RMAN>run{
startup force mount;
restore datafile 1;
recover datafile 1;
sql 'alter database open';}
6 在open状态下恢复关闭后损坏的数据文件
示例:数据文件被误删除
RMAN>run{
2>startup force mount;
3>sql 'alter database datafile 4 offline';//脱机损坏的数据文件
4>sql 'alter database open';//打开数据库
5>restore datafile 4;//转储数据文件
6>recover datafile 4;//恢复数据文件
7>sql 'alter database datafile 4 online';//联机恢复后的数据文件}
7 数据文件所在磁盘出现损坏
RMAN>run{
2>startup force mount;
3>sql 'alter database datafile 4 offline';//脱机损坏的数据文件
4>sql 'alter database open';//打开数据库
5>set newname for datafile 4 to '/opt/datafile/user01.pdf';//指定恢复位置
5>restore datafile 4;//转储数据文件
6>recover datafile 4;//恢复数据文件
7>sql 'alter database datafile 4 online';//联机恢复后的数据文件}
9 恢复表空间:
示例:表空间的数据文件被误删除
RMAN>run{
2>sql 'alter tablespace users offline for recover'; //脱机表空间
3>restore tablespace user;
4>recover tablespace user;
5>sql 'alter tablespace users online';}
10 示例:表空间所在磁盘出现磁盘故障
RMAN>run{
2>sql 'alter tablespace users offline for recover'; //脱机表空间
3>set newname for datafile 4 to '/opt/datafile /user01.dbf';
4>restore tablespace user;
5>switch datafile all;
6>recover tablespace user;
5>sql 'alter tablespace users online';}
11 数据块介质恢复
数据块错误会出现以下错误:
SQL>SELECT * FROM SCOTT.CUSTOMERS;
ORA-01578:ORACLE DATA BLOCK CORRUPTED (FILE #5,BLOCK #21)
ORA-01110:data file 5 :'/opt/oracle/oradata/mydb/sdl.dbf'
RMAN>BLOCKRECOVER DEVICE TYPE DISK
2>DATAFILE 5 BLOCK 21,48,128;
12 不完全恢复
基于时间恢复:
$export nls_date_format='yyyy-mm-dd hh24:mi:ss' //指定日期格式
RMAN>run{
2>startup force mount; //挂载数据库
3>set until time='2007-7-26 20:49:00'; //恢复时间点
4>restore database; //转储数据文件
5>recover database; //根据时间点恢复数据库
6>sql 'alter database open resetlogs';//打开数据库重建redolog文件
7>}
13 基于SCN
确定恢复的SCN
SQL>SELECT CURRENT_SCN FROM V$DATABASE;
RMAN>run{
2>startup force mount;
3>set until scn=n; //设置还原点SCN
4>restore database;
5>recover database;
6>sql 'alter database open resetlogs';
7>}
14 基于日志号:
当不能定位日志号的归档日志时会出现以下错误:
Rman-06025:no backup of log thread 1 seq 6 lowscn 531976 found to restore
RMAN>run{
2>startup force mount;
3>set until sequence=n; //日志号通常为不能定位的日志号
4>restore database;
5>recover database;
6>sql 'alter database open resetlogs';
7>}
15 基于备份控制文件:
当误删的表空间或者数据库有的控制文件损坏时可以使用这种方法
$set nls_date_format='yyyy-mm-dd hh24:mi:ss';
$rman target / catalog rman/rman
RMAN>startup force nomount
RMAN>set dbid=3286265633;
RMAN>restore controlfile from autobackup maxseq 6;
RMAN>alter database mount;
RMAN>run {
2>set until time='2007-7-26 21:07:00'
3>restore database;
4>recover database;
5>sql 'alter database open resetlogs';
6>}
16 不完全恢复后建议删除早期的所有备份并重新备份
RMAN>run{
2>delete noprompt backup;
3>delete noprompt copy;
4>backup database format='/opt/ora_bak/%d_%s.pdf';
5>sql 'alter system archive log current';}
存储格式参数:
%a,活动ID
%c,在多重备份中,备份片的拷贝数,最大256
不是多重备份时,用于备份集为1,用于代理副本拷贝为0
%d,数据库名
%D,公历某月的日期(只有day部分),格式DD
%e,归档日志序号
%f,绝对文件号
%F,由DBID(数据库ID),日月年,序号组成
形式为c-IIIIIIIIII-YYYYMMDD-QQ,c为固定
IIIIIIIIII表示DBID,连接RMAN时指定target,会显示DBID
YYYYMMDD为生成备份时的公历时间,比如20081122
QQ表示为16进制序号,00到FF
%h,归档日志线程号
%I,DBID
%M,公历月份,格式MM
%N,表空间名
%n,数据库名,如果数据库名不满8字符,将在右边自动填充'x'
比如,库名为test,结果将是testxxxx
%p,备份集中的备份片号,从1开始,步进1
Note: If you specify PROXY, then the %p variable must be included in the
FORMAT string either explicitly or implicitly within %U.
%s,备份集号,此号记录在控制文件中,每次备份会自动增加
重建控制文件将会初始化为1
%t,备份集时间戳,秒为单位
%T,公历年月日,格式YYYYMMDD
%u,8字符名称,利用备份集或副本拷贝号,备份生成时间,由系统通过某种算法得出
%U,许多FORMAT的默认值,由系统生成的唯一名称,对于副本拷贝和备份集的含义不同
对于备份集的备份片来说,等同于%u_%p_%c
对于数据文件副本拷贝,等同data-D-%d_id-%I_TS-%N_FNO-%f_%u
对于归档日志副本拷贝,等同arch-D_%d-id-%I_S-%e_T-%h_A-%a_%u
对于控制文件副本拷贝,等同cf-D_%d-id-%I_%u
%Y,公历年,格式YYYY
%%,表示一个百分号字符'%'

本文标签:
本文标题:oracle rman常用命令
网站声明:本文由风哥整理发布,转载请保留此段声明,本站所有内容将不对其使用后果做任何承诺,请读者谨慎使用!
【上一篇】
【下一篇】