使用 RMAN 备份Oracle数据库(3)

RMAN>allocate channel for maintenance type disk;7.在非归档模式下备份
数据库状态:
恢复目录:打开
目标数据库:例程启动或者数据库加载
恢复目录数据库需要打开,目标数据库必须启动(或者加载)。因为目标数据库不在归档模式下,所以当进行备份恢复操作的时候数据库无法打开。不可以将表空间置于热备份模式上进行等同于文件系统级的拷贝,如果在非归档模式,数据库打开的状态下不能进行数据文件的备份。
7.1.数据库完全备份
RMAN> run {
  2> # backup the complete database to disk
  3> allocate channel dev1 type disk;
  4> backup
  5> full
  6> tag full_db_backup
  7> format "/oracle/backups/db_t%t_s%s_p%p"
  8> (database);
  9> release channel dev1;
  10> }行#
2: 表明该行为注释行(#是注释符)
3&9: See section 15 - Channels通道定义
5: Full backup (default if full or incremental not specified)完全备份模式(缺省模式)
6: Meaningful string (<=30 chars)(备份集标识,<=30个字符)
7: Filename to use for backup pieces, including substitution variables. 备份片使用的文件名,可以包含代替变量。
8: Indicates all files including controlfiles are to be backed up表明备份所有数据文件包括控制文件
通过下面的命令显示恢复目录中记载的备份集信息:
RMAN> list backupset of database;7.2.备份表空间
RMAN> run {
  2> allocate channel dev1 type disk;
  3> backup
  4> tag tbs_users_read_only
  5> format "/oracle/backups/tbs_users_t%t_s%s"
  6> (tablespace users)
  7> }使用下列命令来显示恢复目录中该表的备份信息:
RMAN> list backupset of tablespace users;假设USERS表空间在备份后被置为READ ONLY表空间,以后的全库备份就可以不用备份该表空间,为了达到这个目的,可以在以后的备份中指定"skip readonly"。
注意,目标数据库不需要一定打开,只要加载就可以,因为表空间的信息存储在控制文件中。
7.3.备份单独数据文件
RMAN> run {
  2> allocate channel dev1 type "SBT_TAPE";
  3> backup
  4> format "%d_%u"
  5> (datafile "/oracle/dbs/sysbigdb.dbf");
  6> release channel dev1;
  7> }行#
2: 使用MML(media manager layer)分配磁带驱动器,必须指定类型为SBT_TAPE;
注意因为没有指定标识,所以标识为空;
使用下面的命令显示恢复目录中备份的表空间:
 RMAN> list backupset of datafile 1;7.4.备份数据文件
RMAN> run {
  2> allocate channel dev1 type "SBT_TAPE";
  3> copy datafile "/oracle/dbs/temp.dbf" to "/oracle/backups/temp.dbf";
  4> release channel dev1;
  5> }使用下面的命令显示恢复目录中的文件拷贝:
RMAN> list copy of datafile "/oracle/dbs/temp.dbf";拷贝数据文件和备份数据文件是不一样的,数据文件拷贝是一个该文件的镜像。文件的备份产生一个备份集。
7.5.备份控制文件
RMAN> run {
  2> allocate channel dev1 type "SBT_TAPE";
  3> backup
  4> format "cf_t%t_s%s_p%p"
  5> tag cf_monday_night
  6> (current controlfile);
  7> release channel dev1;
  8> }注意:数据库完全备份将自动备份控制文件。
8.归档模式下的备份
数据库状态:
恢复目录:打开
目标数据库:例程启动,数据库加载或者打开
备份操作使用的命令与非归档模式下基本一样。
8.1. Backing up archived logs 备份归档日志
下面的脚本备份归档日志:
RMAN> run {
  2> allocate channel dev1 type disk;
  3> backup
  4> format "/oracle/backups/log_t%t_s%s_p%p"
  5> (archivelog all)
  6> release channel dev1;
  7> }下面的脚本归档日志从# 90 to 100:
RMAN> run {
  2> allocate channel dev1 type disk;
  3> backup
  4> format "/oracle/backups/log_t%t_s%s_p%p"
  5> (archivelog from logseq=90 until logseq=100 thread 1);
  6> release channel dev1;
  7> }下面的脚本备份在24小时内产生的归档日志,在备份完成后会自动删除归档日志。如果备份失败,归档日志不会被删除。
RMAN> run {
  2> allocate channel dev1 type disk;
  3> backup
  4> format "/oracle/backups/log_t%t_s%s_p%p"
  5> (archivelog from time "sysdate-1" all delete input);
  6> release channel dev1;
  7> }使用下面的命令显示恢复目录中的归档日志:
RMAN> list backupset of archivelog all;注意:RMAN找到归档日志后会备份指定日志,如果无法找到日志,它也不会返回错误信息。
8.2. Backing up the online logs 备份联机日志
联机日志不能用RMAN来备份,必须先将其归档。
为了实现这点,必须在RMAN中执行如下SQL语句:
RMAN> run {
  2> allocate channel dev1 type disk;
  3> sql "alter system archive log current";
  4> backup
  5> format "/oracle/backups/log_t%t_s%s_p%p"
  6> (archivelog from time "sysdate-1" all delete input);
  7> release channel dev1;
  8> }上面的脚本可以在执行完一个完整的联机数据库备份后执行,确保所有的重做日志可以将数据库恢复到一个一致性的状态。
注意:不可以标识归档日志备份集。
9. 增量备份
N级别增量备份备份从最近的N级别或者更小级别以来的所有更改过的数据块内容。增量备份分为两种,一种是累积增量备份,一种是非累积增量备份。
累积增量备份包括自最后一次在更低级别进行备份以来所有改动过的数据块。
非累积增量备份包括自前一次在同级或者更低级别进行备份以来改动过的数据块。
9.1. Level 0--增量备份策略的基础
Level 0 是增量备份策略的基础--the basis of the incremental backup strategy
RMAN> run {
  2> allocate channel dev1 type disk;
  3> backup
  4> incremental level 0
  5> filesperset 4
  6> format "/oracle/backups/sunday_level0_%t"
  7> (database);
  8> release channel dev1;
  9> }Line#
4: 0级备份
5: 定义每个backupset 的最大文件数
使用LIST语句查看,数据库备份集的列表显示中, "type" 将显示 "Incremental","LV"列将显示"0" 。
9.2. 使用增量备份的案例
一个典型的增量备份案例如下:
   星期天晚上 - level 0 backup performed
   星期一晚上 - level 2 backup performed
   星期二晚上 - level 2 backup performed
   星期三晚上 - level 1 backup performed
   星期四晚上 - level 2 backup performed
   星期五晚上 - level 2 backup performed
   星期六晚上 - level 2 backup performed
   星期天晚上 - level 0 backup performed
10. 恢复
恢复案例如下:
10.1. Database open,datafile deleted 数据库打开时,文件被删除
数据文件在数据库打开时被删除。有两种方法可以对打开的数据库进行恢复:还原数据文件或者表空间。下面两个实例显示了该方法:
(a) Datafile recovery 数据文件恢复
RMAN> run {
  2> allocate channel dev1 type disk;
  3> sql "alter tablespace users offline immediate";
  4> restore datafile 4;
  5> recover datafile 4;
  6> sql "alter tablespace users online";
  7> release channel dev1;
  8> }(b) Tablespace recovery 表空间恢复
RMAN> run {
  2> allocate channel dev1 type disk;
  3> sql "alter tablespace users offline immediate";
  4> restore tablespace users;
  5> recover tablespace users;
  6> sql "alter tablespace users online";
  7> release channel dev1;
  8> }注意:如果还原系统表空间文件,数据库必须关闭,因为系统表空间不可以脱机。
10.2. Complete restore (lost online redo) and rollforward - database closed 完全还原(丢失联机日志)并且前滚 - 数据库关闭
RMAN> run {
  2> allocate channel dev1 type disk;
  3> set until logseq=105 thread=1;
  4> restore controlfile to "/oracle/dbs/ctrltargdb.ctl";
  5> replicate controlfile from "/oracle/dbs/ctrltargdb.ctl";
  6> restore database;
  7> sql "alter database mount";
  8> recover database;
  9> sql "alter database open resetlogs";
  10> release channel dev1;
  11> }Notes:
"set until" 命令指明恢复到指定的日志文件。这一点在数据文件恢复时很重要,否则RMAN将试图恢复最近的数据文件,该数据文件可能在指定的日志以前。
"replicate controlfile" 复制还原的控制文件到INIT.ORA指定的控制文件。
如果数据库使用WITH RESETLOGS打开,则需要使用RESET DATABASE命令注册改变后的数据库。在使用RESETLOGS命令打开数据库后强烈建议做一个完全的数据库备份。
10.3. 还原数据文件的子集,完全恢复
RMAN> run {
  2> allocate channel dev1 type disk;
  3> sql "alter database mount";
  4> restore datafile 2;
  5> restore datafile 3;
  6> restore archivelog all;
  7> recover database;
  8> sql "alter database open";
  9> release channel dev1;
  10> }11. 脚本
创建或者取代脚本:
RMAN> create script alloc_disk {
  2> # Allocates one disk
  3> allocate channel dev1 type disk;
  4> setlimit channel dev1 kbytes 2097150 maxopenfiles 32 readrate 200;
  5> }

RMAN> replace script rel_disk {
  2> # releases disk
  3> release channel dev1;
  5> }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/e4409bb422204e1dd4839f223b817ec5.html