RMAN-1
2015-06-19 15:23
253 查看
SQL> select * from v$version where rownum=1;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
SQL> !uname -a
Linux localhost.localdomain 2.6.18-194.el5 #1 SMP Mon Mar 29 20:06:41 EDT 2010 i686 i686 i386 GNU/Linux
下面介绍RMAN的几个概念:
备份集:备份集是一个逻辑数据集合,由一个或多个RMAN的备份片组成,备份片是RMAN格式的操作系统文件,包含数据文件,控制文件,或者归档日志文件。默认情况下,在执行RMAN的备份时,将产生备份文件的备份集,备份集只用RMAN可以识别,所以在恢复时必须使用RMAN来访问备份集实现恢复,备份集是RMAN默认的备份文件类型,备份集就是备份片的逻辑组合。一般一个通道生成一个备份集。控制文件的备份集以操作系统块作为最小单位,数据文件备份集以数据库块作为最小单位,所以它们不能放在一个备份集合中。
通道:RMAN通过通道与数据库服务器的会话进行连接,通道代表这个连接,它指定了备份或恢复数据库的备份集所在的设备,如磁盘或磁带。
映像复制:映像复制是数据库文件的操作系统文件的一个备份,就如使用操作系统的copy指令来备份文件一样,一个数据文件生成一个映像文件文本,整个复制过程是RMAN进行数据块的复制过程,rman一个数据块一个数据块复制,rman会监测每个数据块是否出现损坏,不需要将表空间设置成begin
backup,镜像副本中包含使用过的数据块,也包括从未使用过的数据块。生成镜像副本的好处在于恢复速度相对于备份集来说,更快一些。
可以使用RMAN创建默认备份集,它是数据集的一个逻辑数据结构,也可以设置备份类型为copy使得使用RMAN的任何备份不产生备份集,而产生映像复制:
SQL> create user kernel identified by kernel;
用户已创建。
SQL> grant connect,resource to kernel;
授权成功。
SQL> grant dba to kernel;
授权成功。
[oracle@localhost ~]$ rman target kernel/kernel
恢复管理器: Release 11.2.0.1.0 - Production on 星期四 6月 18 18:33:01 2015
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
连接到目标数据库: ORCL3939 (DBID=3848072073)
RMAN> configure device type disk backup type to copy;
使用目标数据库控制文件替代恢复目录
新的 RMAN 配置参数:
CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COPY PARALLELISM 1;
已成功存储新的 RMAN 配置参数
映像复制整个数据库:
RMAN> backup as copy database;
启动 backup 于 18-6月 -15
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=138 设备类型=DISK
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件: 文件号=00001 名称=/u01/app/oracle/oradata/orcl3939/system01.dbf
输出文件名=/u01/app/oracle/flash_recovery_area/ORCL3939/datafile/o1_mf_system_br580d95_.dbf 标记=TAG20150618T184011 RECID=5 STAMP=882729709
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:01:45
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件: 文件号=00008 名称=/u01/app/oracle/oradata/orcl3939/big_file
输出文件名=/u01/app/oracle/flash_recovery_area/ORCL3939/datafile/o1_mf_big_file_br583p8j_.dbf 标记=TAG20150618T184011 RECID=6 STAMP=882729809
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:01:35
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件: 文件号=00003 名称=/u01/app/oracle/oradata/orcl3939/undotbs01.dbf
输出文件名=/u01/app/oracle/flash_recovery_area/ORCL3939/datafile/o1_mf_undotbs1_br586p7d_.dbf 标记=TAG20150618T184011 RECID=7 STAMP=882729920
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:01:55
通道 ORA_DISK_1: 启动数据文件副本
....
....
映像复制特定表空间:
RMAN> backup as copy tablespace users;
启动 backup 于 18-6月 -15
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件: 文件号=00004 名称=/u01/app/oracle/oradata/orcl3939/user01.dbf
输出文件名=/u01/app/oracle/flash_recovery_area/ORCL3939/datafile/o1_mf_users_br591lbc_.dbf 标记=TAG20150618T185754 RECID=12 STAMP=882730676
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:03
完成 backup 于 18-6月 -15
映像复制一个数据文件:
RMAN> backup as copy datafile 1;
启动 backup 于 18-6月 -15
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件: 文件号=00001 名称=/u01/app/oracle/oradata/orcl3939/system01.dbf
RMAN-03009: backup 命令 (ORA_DISK_1 通道上, 在 06/18/2015 18:59:30 上) 失败
ORA-19809: 超出了恢复文件数的限制
ORA-19804: 无法回收 1268776960 字节磁盘空间 (从 4194304000 限制中)
继续执行其他作业步骤, 将不重新运行失败的作业
通道 ORA_DISK_1: 启动数据文件副本
复制当前控制文件
输出文件名=/u01/app/oracle/flash_recovery_area/ORCL3939/controlfile/o1_mf_TAG20150618T185929_br594lq4_.ctl 标记=TAG20150618T185929 RECID=13 STAMP=882730771
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:03
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
备份集内包括当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 18-6月 -15
通道 ORA_DISK_1: 已完成段 1 于 18-6月 -15
段句柄=/u01/app/oracle/flash_recovery_area/ORCL3939/backupset/2015_06_18/o1_mf_nnsnf_TAG20150618T185929_br594ow6_.bkp 标记=TAG20150618T185929 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:01
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: backup 命令 (ORA_DISK_1 通道上, 在 06/18/2015 18:59:30 上) 失败
ORA-19809: 超出了恢复文件数的限制
ORA-19804: 无法回收 1268776960 字节磁盘空间 (从 4194304000 限制中)
由于快闪恢复区空间不足,解决方法之前的文章已经给出(http://blog.itpub.net/29876893/viewspace-1702034/)
下面增大快闪恢复区:
SQL> alter system set db_recovery_file_dest_size=5g;
系统已更改。
RMAN> backup as copy datafile 1;
启动 backup 于 18-6月 -15
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件: 文件号=00001 名称=/u01/app/oracle/oradata/orcl3939/system01.dbf
输出文件名=/u01/app/oracle/flash_recovery_area/ORCL3939/datafile/o1_mf_system_br597pgv_.dbf 标记=TAG20150618T190110 RECID=14 STAMP=882730959
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:01:35
通道 ORA_DISK_1: 启动数据文件副本
复制当前控制文件
输出文件名=/u01/app/oracle/flash_recovery_area/ORCL3939/controlfile/o1_mf_TAG20150618T190110_br59bovz_.ctl 标记=TAG20150618T190110 RECID=15 STAMP=882730968
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:03
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
备份集内包括当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 18-6月 -15
通道 ORA_DISK_1: 已完成段 1 于 18-6月 -15
段句柄=/u01/app/oracle/flash_recovery_area/ORCL3939/backupset/2015_06_18/o1_mf_nnsnf_TAG20150618T190110_br59bsp2_.bkp 标记=TAG20150618T190110 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:04
完成 backup 于 18-6月 -15
查看RMAN的配置参数:
RMAN> show all;
db_unique_name 为 ORCL3939 的数据库的 RMAN 配置参数为:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default (该参数说明保留备份的副本数量,如果每天都备份一个数据文件,上述参数1说明只保留一个该参数文件的副本,并且保留最新的备份副本)
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default(该参数说明备份的数据文件默认备份到数据库服务器的磁盘上,该参数可以更改为备份到磁带上)
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default(配置模式不启动控制文件的自动备份,更改方式就是将off更改为on):
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
新的 RMAN 配置参数:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
已成功存储新的 RMAN 配置参数
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COPY PARALLELISM 1;
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 COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/snapcf_orcl3939.f'; # default
RMAN可以单独备份控制文件,如果没有启动快闪恢复区,则使用format参数指定控制文件的备份目录,如果启用了快闪恢复区,RMAN会自动将控制文件复制到快闪恢复区的备份集中。
下面通过举例说明:
RMAN> backup current controlfile format '/home/oracle/backup_ctl_%u.dbf';
启动 backup 于 18-6月 -15
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动数据文件副本
复制当前控制文件
输出文件名=/home/oracle/backup_ctl_1sq9qs2v.dbf 标记=TAG20150618T193911 RECID=17 STAMP=882733153
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:03
完成 backup 于 18-6月 -15
SQL> !ls /home/oracle/backup*
/home/oracle/backup_ctl_1sq9qs2v.dbf
上面的%U是替换变量,它的作用是产生唯一的备份文件名。因为没有使用快闪恢复区,所以在执行恢复控制文件时,DBA必须知道备份目录。
使用快闪恢复区备份控制文件:
RMAN> backup current controlfile;
启动 backup 于 18-6月 -15
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动数据文件副本
复制当前控制文件
输出文件名=/u01/app/oracle/flash_recovery_area/ORCL3939/controlfile/o1_mf_TAG20150618T194330_br5cq2rd_.ctl 标记=TAG20150618T194330 RECID=18 STAMP=882733411
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:01
完成 backup 于 18-6月 -15
使用快闪恢复区的好处就是oracle自动管理备份目录,文件命名使用的是OMF,dba不需记住该目录,在恢复时,RMAN使用RMAN信息库记录的信息找到备份集。
由于控制文件记录了数据的物理文件组成等重要信息,一旦数据库结构发生变化,控制文件就会更新,此时最好备份该控制文件,oracle的RMAN支持控制文件的自动备份,使得数据库结构发生变化或控制文件更新时自动备份控制文件,在执行backup备份数据库时也会在备份的最后阶段备份控制文件:
配置控制文件备份的磁盘类型和备份目录:
RMAN> configure controlfile autobackup format for device type disk to '/home/oracle/backupfile/%F';
新的 RMAN 配置参数:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/home/oracle/backupfile/%F';
已成功存储新的 RMAN 配置参数
配置控制文件自动备份:
RMAN> configure controlfile autobackup on;
旧的 RMAN 配置参数:
CONFIGURE CONTROLFILE AUTOBACKUP OFF;
新的 RMAN 配置参数:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
已成功存储新的 RMAN 配置参数
RMAN的脱机备份:
实现脱机备份需要使用RMAN登录到数据库服务器,关闭数据库后启动到数据库mount(否则备份时发生数据未装载错误),再执行backup database备份整个数据库,在备份前我们需要查看两个重要的参数:
查看备份类型是磁带还是磁盘
查看是否开启快闪恢复区,否则我们制定备份恢复区
SQL> STARTUP MOUNT;
ORACLE 例程已经启动。
Total System Global Area 422670336 bytes
Fixed Size 1336960 bytes
Variable Size 335546752 bytes
Database Buffers 79691776 bytes
Redo Buffers 6094848 bytes
数据库装载完毕。
重新登陆RMAN:
[oracle@localhost ~]$ rman target kernel/kernel
恢复管理器: Release 11.2.0.1.0 - Production on 星期四 6月 18 20:30:21 2015
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
已连接到目标数据库: ORCL3939 (DBID=3848072073, 未打开)
RMAN> backup as compressed backupset database;
启动 backup 于 18-6月 -15
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=10 设备类型=DISK
通道 ORA_DISK_1: 正在启动压缩的全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
输入数据文件: 文件号=00001 名称=/u01/app/oracle/oradata/orcl3939/system01.dbf
输入数据文件: 文件号=00008 名称=/u01/app/oracle/oradata/orcl3939/big_file
输入数据文件: 文件号=00003 名称=/u01/app/oracle/oradata/orcl3939/undotbs01.dbf
输入数据文件: 文件号=00002 名称=/u01/app/oracle/oradata/orcl3939/sysaux01.dbf
输入数据文件: 文件号=00005 名称=/u01/app/oracle/oradata/orcl3939/example01.dbf
输入数据文件: 文件号=00007 名称=/u01/app/oracle/oradata/orcl3939/chao.dbf
输入数据文件: 文件号=00004 名称=/u01/app/oracle/oradata/orcl3939/user01.dbf
输入数据文件: 文件号=00009 名称=/u01/app/oracle/oradata/orcl3939/undo_w.dbf
输入数据文件: 文件号=00012 名称=/u01/app/oracle/oradata/orcl3939/v.dbf
输入数据文件: 文件号=00011 名称=/u01/app/oracle/oradata/orcl3939/a.dbf
通道 ORA_DISK_1: 正在启动段 1 于 18-6月 -15
通道 ORA_DISK_1: 已完成段 1 于 18-6月 -15
段句柄=/u01/app/oracle/flash_recovery_area/ORCL3939/backupset/2015_06_18/o1_mf_nnndf_TAG20150618T203029_br5gh64t_.bkp 标记=TAG20150618T203029 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:02:46
完成 backup 于 18-6月 -15
启动 Control File and SPFILE Autobackup 于 18-6月 -15
段 handle=/home/oracle/backupfile/c-3848072073-20150618-01 comment=NONE
完成 Control File and SPFILE Autobackup 于 18-6月 -15
打开数据库:
RMAN> sql'alter database open';
使用目标数据库控制文件替代恢复目录
sql 语句: alter database open
以上完成了RMAN整个数据库的脱机备份。当备份数据库时,RMAN会自动备份控制文件和服务器参数文件,其实这要取决于RMAN的configure controlfile autobackup,设置该参数为ON使RMAN备份任何指令时,自动备份控制文件,强烈推荐DBA设置该参数为ON.
RMAN的联机热备份:
rman的联机备份,有一定的前提,如数据库处于归档模式(因为处于联机备份的数据库中要备份的所有数据文件头中的SCN被锁定,但是此时在数据库中的数据文件的表依然可以被访问,并执行DML操作,但是这些修改的数据不能写入数据文件,重做日志进程将这些变化的数据全部写入到重做日志文件中,如果备份时间很长,而且在这期间产生了大量的变化数据,重做日志会切换从而将这些变化的数据写入到归档日志文件中)。必须设置快闪恢复区,将db_recovery_file_dest参数指定的目录作为归档重做日志备份的默认位置,并且将快闪恢复区的大小足够大。
RMAN联机备份是的数据库可以不间断业务运行,而且通过RMAN可以备份整个数据库,一个表空间或者数据文件,可以灵活选择备份的粒度,对于超大型数据库,如果备份整个数据库相当耗时,而且生产数据库中往往只需要备份某个重要的表空间或者数据文件,如只读表空间,非在线的undo表空间都可以不备份,而知备份联机事务的表空间。联机备份时因为启用了非归档模式,不会丢失数据更新。在介质故障时,可以实现数据库完全恢复。但是请注意,必须小心保存或备份归档日志,因为一旦丢失或损坏就无法实现数据库的完全恢复,只能实现不完全恢复。
关于数据库设置为归档模式,就不必再过多的叙述,启动到mount,alter database archivelog(关闭归档:alter database noarchivelog)
联机热备份整个数据库:
RMAN> backup as compressed backupset database plus archivelog delete all input;
启动 backup 于 18-6月 -15
当前日志已存档
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=147 设备类型=DISK
通道 ORA_DISK_1: 正在启动压缩的归档日志备份集
通道 ORA_DISK_1: 正在指定备份集内的归档日志
输入归档日志线程=1 序列=581 RECID=206 STAMP=882734872
输入归档日志线程=1 序列=582 RECID=207 STAMP=882741814
输入归档日志线程=1 序列=583 RECID=208 STAMP=882744349
通道 ORA_DISK_1: 正在启动段 1 于 18-6月 -15
通道 ORA_DISK_1: 已完成段 1 于 18-6月 -15
段句柄=/u01/app/oracle/flash_recovery_area/ORCL3939/backupset/2015_06_18/o1_mf_annnn_TAG20150618T224552_br5pf1bs_.bkp 标记=TAG20150618T224552 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:15
通道 ORA_DISK_1: 正在删除归档日志
归档日志文件名=/u01/app/oracle/flash_recovery_area/ORCL3939/archivelog/2015_06_18/o1_mf_1_581_br5f4q7x_.arc RECID=206 STAMP=882734872
归档日志文件名=/u01/app/oracle/flash_recovery_area/ORCL3939/archivelog/2015_06_18/o1_mf_1_582_br5mxkwn_.arc RECID=207 STAMP=882741814
归档日志文件名=/u01/app/oracle/flash_recovery_area/ORCL3939/archivelog/2015_06_18/o1_mf_1_583_br5pdwf1_.arc RECID=208 STAMP=882744349
完成 backup 于 18-6月 -15
上面这部分使用了三个通道备份归档了日志文件,并且在备份完成之后删除了归档目录下的相应归档文件
下面是备份数据文件:
启动 backup 于 18-6月 -15
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在启动压缩的全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
输入数据文件: 文件号=00001 名称=/u01/app/oracle/oradata/orcl3939/system01.dbf
输入数据文件: 文件号=00008 名称=/u01/app/oracle/oradata/orcl3939/big_file
输入数据文件: 文件号=00003 名称=/u01/app/oracle/oradata/orcl3939/undotbs01.dbf
输入数据文件: 文件号=00002 名称=/u01/app/oracle/oradata/orcl3939/sysaux01.dbf
输入数据文件: 文件号=00005 名称=/u01/app/oracle/oradata/orcl3939/example01.dbf
输入数据文件: 文件号=00007 名称=/u01/app/oracle/oradata/orcl3939/chao.dbf
输入数据文件: 文件号=00004 名称=/u01/app/oracle/oradata/orcl3939/user01.dbf
输入数据文件: 文件号=00009 名称=/u01/app/oracle/oradata/orcl3939/undo_w.dbf
输入数据文件: 文件号=00012 名称=/u01/app/oracle/oradata/orcl3939/v.dbf
输入数据文件: 文件号=00011 名称=/u01/app/oracle/oradata/orcl3939/a.dbf
通道 ORA_DISK_1: 正在启动段 1 于 18-6月 -15
通道 ORA_DISK_1: 已完成段 1 于 18-6月 -15
段句柄=/u01/app/oracle/flash_recovery_area/ORCL3939/backupset/2015_06_18/o1_mf_nnndf_TAG20150618T224609_br5pflcr_.bkp 标记=TAG20150618T224609 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:03:15
完成 backup 于 18-6月 -15
上述备份完成后,oracle发生了一次日志切换,继续备份剩余的归档日志,因为只有一个归档日志文件:
启动 backup 于 18-6月 -15
当前日志已存档
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在启动压缩的归档日志备份集
通道 ORA_DISK_1: 正在指定备份集内的归档日志
输入归档日志线程=1 序列=584 RECID=209 STAMP=882744567
通道 ORA_DISK_1: 正在启动段 1 于 18-6月 -15
通道 ORA_DISK_1: 已完成段 1 于 18-6月 -15
段句柄=/u01/app/oracle/flash_recovery_area/ORCL3939/backupset/2015_06_18/o1_mf_annnn_TAG20150618T224929_br5pmt5d_.bkp 标记=TAG20150618T224929 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:01
通道 ORA_DISK_1: 正在删除归档日志
归档日志文件名=/u01/app/oracle/flash_recovery_area/ORCL3939/archivelog/2015_06_18/o1_mf_1_584_br5pmpsp_.arc RECID=209 STAMP=882744567
完成 backup 于 18-6月 -15
启动饿了控制文件和参数文件的自动备份
启动 Control File and SPFILE Autobackup 于 18-6月 -15
段 handle=/home/oracle/backupfile/c-3848072073-20150618-02 comment=NONE
完成 Control File and SPFILE Autobackup 于 18-6月 -15
上面备份了数据文件,其中包括当前的控制文件和参数文件。而重做日志文件或归档日志文件不是联机状态数据库全备份的内容,所以使用联机热备份的数据库在数据恢复时要recover数据库,即使将联机备份开始到故障点之间的所有提交的数据重新写入数据文件。
在联机热备时,也可以手工指定多个通道并将数据文件分布到不同的通道上去。可以通过指令集合:
run{
allocate channel ch1 device type disk format '/home/oracle/backupfile/ch1_%U';
allocate channel ch2 device type disk format '/home/oracle/backupfile/ch2_%U';
backup as backupset
(datafile 1,5, channel ch1)
(datafile 2,3,6 channel ch2);
sql 'alter system archive log current';}
将所有的备份片放在一个目录下,format参数可以在指定通道的时候指定,也可以在backup命令中指定:
run{
allocate channel ch1 device type disk';
allocate channel ch2 device
type disk ';
backup as backupset format '/home/oracle/backupfile/%U'
backup as backupset
(datafile 1,5, channel ch1)
(datafile 2,3,6 channel ch2);
sql 'alter system archive log current';}
RMAN备份数据文件时,使用默认的三个通道,自动将数据文件大致平分的分配到三个通道上,并备份至快闪恢复区。如果不指定分配,RMAN会根据数据文件的大小分配,尽量保持通道的平衡,手工分配通道后,会将默认的通道覆盖,默认通道的分配取决于参数parallelism。
联机备份一个表空间:
RMAN> backup tablespace users;
启动 backup 于 19-6月 -15
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件: 文件号=00004 名称=/u01/app/oracle/oradata/orcl3939/user01.dbf
输出文件名=/u01/app/oracle/flash_recovery_area/ORCL3939/datafile/o1_mf_users_br7g3qrx_.dbf 标记=TAG20150619T143639 RECID=19 STAMP=882801404
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:07
完成 backup 于 19-6月 -15
启动 Control File and SPFILE Autobackup 于 19-6月 -15
段 handle=/home/oracle/backupfile/c-3848072073-20150619-00 comment=NONE
完成 Control File and SPFILE Autobackup 于 19-6月 -15
上述我们备份了表空间users,备份的文件类型为备份集。
在第一次使用RMAN备份生产备份集时,RMAN的快闪恢复区中会自动创建一个目录BACKUPSET,还会根据日期创建新的目录,将一天中的备份集放在一个根据日期创建的目录下。
在备份表空间users时,分配了一个通道,只有一个数据文件,在通道ORA_DISK_1上建了一个备份集,这个备份集包括一个备份片。控制文件和参数文件单独备份到了一个位置,生成了文件。
为了减少存储空间,可以使用压缩备份,具体指令如下:
RMAN> backup as compressed backupset tablespace users;
启动 backup 于 19-6月 -15
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在启动压缩的全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
输入数据文件: 文件号=00004 名称=/u01/app/oracle/oradata/orcl3939/user01.dbf
通道 ORA_DISK_1: 正在启动段 1 于 19-6月 -15
通道 ORA_DISK_1: 已完成段 1 于 19-6月 -15
段句柄=/u01/app/oracle/flash_recovery_area/ORCL3939/backupset/2015_06_19/o1_mf_nnndf_TAG20150619T144646_br7gpq0v_.bkp 标记=TAG20150619T144646 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:01
完成 backup 于 19-6月 -15
启动 Control File and SPFILE Autobackup 于 19-6月 -15
段 handle=/home/oracle/backupfile/c-3848072073-20150619-01 comment=NONE
完成 Control File and SPFILE Autobackup 于 19-6月 -15
如果数据文件很大,使用压缩备份可以极大的减少存储空间的压力。
联机备份一个数据文件:
在备份一个数据文件前,通常查看当前数据库中的所有数据文件,以便于选择需要的备份的数据文件。下列是备份特定的数据文件的例子,备份文件类型为备份集,备份集的目录和名称由format决定,其中通道生成的备份文件的名称和格式如下所示:
%c:备份片的副本数
%d:数据库的名称
%D:位于该月的第几天
%M:位于该年的第几个月
%n:数据库的名称,向右填补到最大19个字符
%u:一个19个字符的名称,代表备份集和创建时间
%p:该备份集的备份片号,从1开始到创建的文件数
%U:一个唯一的名字%u_%p_%c
%s:备份集的编号
%t:备份集的时间戳
%T:年月日格式(YYYY-MM-DD)
RMAN> backup as backupset datafile 2 format '/home/oracle/backupfile/datafiel_back_%U';
启动 backup 于 19-6月 -15
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
输入数据文件: 文件号=00002 名称=/u01/app/oracle/oradata/orcl3939/sysaux01.dbf
通道 ORA_DISK_1: 正在启动段 1 于 19-6月 -15
通道 ORA_DISK_1: 已完成段 1 于 19-6月 -15
段句柄=/home/oracle/backupfile/datafiel_back_29q9t039_1_1 标记=TAG20150619T145953 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:01:21
完成 backup 于 19-6月 -15
启动 Control File and SPFILE Autobackup 于 19-6月 -15
段 handle=/home/oracle/backupfile/c-3848072073-20150619-02 comment=NONE
完成 Control File and SPFILE Autobackup 于 19-6月 -15
使用backup current controlfile联机备份控制文件:
RMAN> backup current controlfile;
启动 backup 于 19-6月 -15
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动数据文件副本
复制当前控制文件
输出文件名=/u01/app/oracle/flash_recovery_area/ORCL3939/controlfile/o1_mf_TAG20150619T150930_br7j1c36_.ctl 标记=TAG20150619T150930 RECID=20 STAMP=882803372
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:01
完成 backup 于 19-6月 -15
启动 Control File and SPFILE Autobackup 于 19-6月 -15
段 handle=/home/oracle/backupfile/c-3848072073-20150619-03 comment=NONE
完成 Control File and SPFILE Autobackup 于 19-6月 -15
如果没有配置自动备份控制文件,经常备份控制文件是个很好的习惯,但是强烈推荐配置自动备份控制文件。
RMAN备份坏块处理的方法
默认情况下,RMAN在备份时总会检查数据库是否发生物理损坏,为了加快备份速度而不影响RMAN进行数据块的检查,可以关闭这个选项:
backup nochecksum tablespace system tag='weekly_backup';
默认情况下,RMAN不会检查数据块是否发生逻辑损坏,backup时可以启用逻辑损坏检查:
backup check logical tablespace system;
RMAN备份时,只要发现新的坏块时,就立即停止备份,如果发现的坏块是上次已经发现的,则继续备份。我们通过设置maxcorrupt参数来通知RMAN,只有当发现的坏块个数超过指定数量时,才停止备份:
run{
set maxcorrupt for datafile 1,5 to 8;
backup database;
}
这是个迫不得已的参数,尽量不要使用。数据文件1,5出现的新的坏块数超过8的时候就停止备份。我们不希望出现坏块的出现,此时使用以前的RMAN的备份恢复这个坏块,修复后再备份该数据文件。
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
SQL> !uname -a
Linux localhost.localdomain 2.6.18-194.el5 #1 SMP Mon Mar 29 20:06:41 EDT 2010 i686 i686 i386 GNU/Linux
下面介绍RMAN的几个概念:
备份集:备份集是一个逻辑数据集合,由一个或多个RMAN的备份片组成,备份片是RMAN格式的操作系统文件,包含数据文件,控制文件,或者归档日志文件。默认情况下,在执行RMAN的备份时,将产生备份文件的备份集,备份集只用RMAN可以识别,所以在恢复时必须使用RMAN来访问备份集实现恢复,备份集是RMAN默认的备份文件类型,备份集就是备份片的逻辑组合。一般一个通道生成一个备份集。控制文件的备份集以操作系统块作为最小单位,数据文件备份集以数据库块作为最小单位,所以它们不能放在一个备份集合中。
通道:RMAN通过通道与数据库服务器的会话进行连接,通道代表这个连接,它指定了备份或恢复数据库的备份集所在的设备,如磁盘或磁带。
映像复制:映像复制是数据库文件的操作系统文件的一个备份,就如使用操作系统的copy指令来备份文件一样,一个数据文件生成一个映像文件文本,整个复制过程是RMAN进行数据块的复制过程,rman一个数据块一个数据块复制,rman会监测每个数据块是否出现损坏,不需要将表空间设置成begin
backup,镜像副本中包含使用过的数据块,也包括从未使用过的数据块。生成镜像副本的好处在于恢复速度相对于备份集来说,更快一些。
可以使用RMAN创建默认备份集,它是数据集的一个逻辑数据结构,也可以设置备份类型为copy使得使用RMAN的任何备份不产生备份集,而产生映像复制:
SQL> create user kernel identified by kernel;
用户已创建。
SQL> grant connect,resource to kernel;
授权成功。
SQL> grant dba to kernel;
授权成功。
[oracle@localhost ~]$ rman target kernel/kernel
恢复管理器: Release 11.2.0.1.0 - Production on 星期四 6月 18 18:33:01 2015
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
连接到目标数据库: ORCL3939 (DBID=3848072073)
RMAN> configure device type disk backup type to copy;
使用目标数据库控制文件替代恢复目录
新的 RMAN 配置参数:
CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COPY PARALLELISM 1;
已成功存储新的 RMAN 配置参数
映像复制整个数据库:
RMAN> backup as copy database;
启动 backup 于 18-6月 -15
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=138 设备类型=DISK
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件: 文件号=00001 名称=/u01/app/oracle/oradata/orcl3939/system01.dbf
输出文件名=/u01/app/oracle/flash_recovery_area/ORCL3939/datafile/o1_mf_system_br580d95_.dbf 标记=TAG20150618T184011 RECID=5 STAMP=882729709
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:01:45
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件: 文件号=00008 名称=/u01/app/oracle/oradata/orcl3939/big_file
输出文件名=/u01/app/oracle/flash_recovery_area/ORCL3939/datafile/o1_mf_big_file_br583p8j_.dbf 标记=TAG20150618T184011 RECID=6 STAMP=882729809
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:01:35
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件: 文件号=00003 名称=/u01/app/oracle/oradata/orcl3939/undotbs01.dbf
输出文件名=/u01/app/oracle/flash_recovery_area/ORCL3939/datafile/o1_mf_undotbs1_br586p7d_.dbf 标记=TAG20150618T184011 RECID=7 STAMP=882729920
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:01:55
通道 ORA_DISK_1: 启动数据文件副本
....
....
映像复制特定表空间:
RMAN> backup as copy tablespace users;
启动 backup 于 18-6月 -15
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件: 文件号=00004 名称=/u01/app/oracle/oradata/orcl3939/user01.dbf
输出文件名=/u01/app/oracle/flash_recovery_area/ORCL3939/datafile/o1_mf_users_br591lbc_.dbf 标记=TAG20150618T185754 RECID=12 STAMP=882730676
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:03
完成 backup 于 18-6月 -15
映像复制一个数据文件:
RMAN> backup as copy datafile 1;
启动 backup 于 18-6月 -15
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件: 文件号=00001 名称=/u01/app/oracle/oradata/orcl3939/system01.dbf
RMAN-03009: backup 命令 (ORA_DISK_1 通道上, 在 06/18/2015 18:59:30 上) 失败
ORA-19809: 超出了恢复文件数的限制
ORA-19804: 无法回收 1268776960 字节磁盘空间 (从 4194304000 限制中)
继续执行其他作业步骤, 将不重新运行失败的作业
通道 ORA_DISK_1: 启动数据文件副本
复制当前控制文件
输出文件名=/u01/app/oracle/flash_recovery_area/ORCL3939/controlfile/o1_mf_TAG20150618T185929_br594lq4_.ctl 标记=TAG20150618T185929 RECID=13 STAMP=882730771
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:03
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
备份集内包括当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 18-6月 -15
通道 ORA_DISK_1: 已完成段 1 于 18-6月 -15
段句柄=/u01/app/oracle/flash_recovery_area/ORCL3939/backupset/2015_06_18/o1_mf_nnsnf_TAG20150618T185929_br594ow6_.bkp 标记=TAG20150618T185929 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:01
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: backup 命令 (ORA_DISK_1 通道上, 在 06/18/2015 18:59:30 上) 失败
ORA-19809: 超出了恢复文件数的限制
ORA-19804: 无法回收 1268776960 字节磁盘空间 (从 4194304000 限制中)
由于快闪恢复区空间不足,解决方法之前的文章已经给出(http://blog.itpub.net/29876893/viewspace-1702034/)
下面增大快闪恢复区:
SQL> alter system set db_recovery_file_dest_size=5g;
系统已更改。
RMAN> backup as copy datafile 1;
启动 backup 于 18-6月 -15
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件: 文件号=00001 名称=/u01/app/oracle/oradata/orcl3939/system01.dbf
输出文件名=/u01/app/oracle/flash_recovery_area/ORCL3939/datafile/o1_mf_system_br597pgv_.dbf 标记=TAG20150618T190110 RECID=14 STAMP=882730959
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:01:35
通道 ORA_DISK_1: 启动数据文件副本
复制当前控制文件
输出文件名=/u01/app/oracle/flash_recovery_area/ORCL3939/controlfile/o1_mf_TAG20150618T190110_br59bovz_.ctl 标记=TAG20150618T190110 RECID=15 STAMP=882730968
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:03
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
备份集内包括当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 18-6月 -15
通道 ORA_DISK_1: 已完成段 1 于 18-6月 -15
段句柄=/u01/app/oracle/flash_recovery_area/ORCL3939/backupset/2015_06_18/o1_mf_nnsnf_TAG20150618T190110_br59bsp2_.bkp 标记=TAG20150618T190110 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:04
完成 backup 于 18-6月 -15
查看RMAN的配置参数:
RMAN> show all;
db_unique_name 为 ORCL3939 的数据库的 RMAN 配置参数为:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default (该参数说明保留备份的副本数量,如果每天都备份一个数据文件,上述参数1说明只保留一个该参数文件的副本,并且保留最新的备份副本)
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default(该参数说明备份的数据文件默认备份到数据库服务器的磁盘上,该参数可以更改为备份到磁带上)
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default(配置模式不启动控制文件的自动备份,更改方式就是将off更改为on):
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
新的 RMAN 配置参数:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
已成功存储新的 RMAN 配置参数
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COPY PARALLELISM 1;
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 COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/snapcf_orcl3939.f'; # default
RMAN可以单独备份控制文件,如果没有启动快闪恢复区,则使用format参数指定控制文件的备份目录,如果启用了快闪恢复区,RMAN会自动将控制文件复制到快闪恢复区的备份集中。
下面通过举例说明:
RMAN> backup current controlfile format '/home/oracle/backup_ctl_%u.dbf';
启动 backup 于 18-6月 -15
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动数据文件副本
复制当前控制文件
输出文件名=/home/oracle/backup_ctl_1sq9qs2v.dbf 标记=TAG20150618T193911 RECID=17 STAMP=882733153
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:03
完成 backup 于 18-6月 -15
SQL> !ls /home/oracle/backup*
/home/oracle/backup_ctl_1sq9qs2v.dbf
上面的%U是替换变量,它的作用是产生唯一的备份文件名。因为没有使用快闪恢复区,所以在执行恢复控制文件时,DBA必须知道备份目录。
使用快闪恢复区备份控制文件:
RMAN> backup current controlfile;
启动 backup 于 18-6月 -15
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动数据文件副本
复制当前控制文件
输出文件名=/u01/app/oracle/flash_recovery_area/ORCL3939/controlfile/o1_mf_TAG20150618T194330_br5cq2rd_.ctl 标记=TAG20150618T194330 RECID=18 STAMP=882733411
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:01
完成 backup 于 18-6月 -15
使用快闪恢复区的好处就是oracle自动管理备份目录,文件命名使用的是OMF,dba不需记住该目录,在恢复时,RMAN使用RMAN信息库记录的信息找到备份集。
由于控制文件记录了数据的物理文件组成等重要信息,一旦数据库结构发生变化,控制文件就会更新,此时最好备份该控制文件,oracle的RMAN支持控制文件的自动备份,使得数据库结构发生变化或控制文件更新时自动备份控制文件,在执行backup备份数据库时也会在备份的最后阶段备份控制文件:
配置控制文件备份的磁盘类型和备份目录:
RMAN> configure controlfile autobackup format for device type disk to '/home/oracle/backupfile/%F';
新的 RMAN 配置参数:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/home/oracle/backupfile/%F';
已成功存储新的 RMAN 配置参数
配置控制文件自动备份:
RMAN> configure controlfile autobackup on;
旧的 RMAN 配置参数:
CONFIGURE CONTROLFILE AUTOBACKUP OFF;
新的 RMAN 配置参数:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
已成功存储新的 RMAN 配置参数
RMAN的脱机备份:
实现脱机备份需要使用RMAN登录到数据库服务器,关闭数据库后启动到数据库mount(否则备份时发生数据未装载错误),再执行backup database备份整个数据库,在备份前我们需要查看两个重要的参数:
查看备份类型是磁带还是磁盘
查看是否开启快闪恢复区,否则我们制定备份恢复区
SQL> STARTUP MOUNT;
ORACLE 例程已经启动。
Total System Global Area 422670336 bytes
Fixed Size 1336960 bytes
Variable Size 335546752 bytes
Database Buffers 79691776 bytes
Redo Buffers 6094848 bytes
数据库装载完毕。
重新登陆RMAN:
[oracle@localhost ~]$ rman target kernel/kernel
恢复管理器: Release 11.2.0.1.0 - Production on 星期四 6月 18 20:30:21 2015
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
已连接到目标数据库: ORCL3939 (DBID=3848072073, 未打开)
RMAN> backup as compressed backupset database;
启动 backup 于 18-6月 -15
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=10 设备类型=DISK
通道 ORA_DISK_1: 正在启动压缩的全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
输入数据文件: 文件号=00001 名称=/u01/app/oracle/oradata/orcl3939/system01.dbf
输入数据文件: 文件号=00008 名称=/u01/app/oracle/oradata/orcl3939/big_file
输入数据文件: 文件号=00003 名称=/u01/app/oracle/oradata/orcl3939/undotbs01.dbf
输入数据文件: 文件号=00002 名称=/u01/app/oracle/oradata/orcl3939/sysaux01.dbf
输入数据文件: 文件号=00005 名称=/u01/app/oracle/oradata/orcl3939/example01.dbf
输入数据文件: 文件号=00007 名称=/u01/app/oracle/oradata/orcl3939/chao.dbf
输入数据文件: 文件号=00004 名称=/u01/app/oracle/oradata/orcl3939/user01.dbf
输入数据文件: 文件号=00009 名称=/u01/app/oracle/oradata/orcl3939/undo_w.dbf
输入数据文件: 文件号=00012 名称=/u01/app/oracle/oradata/orcl3939/v.dbf
输入数据文件: 文件号=00011 名称=/u01/app/oracle/oradata/orcl3939/a.dbf
通道 ORA_DISK_1: 正在启动段 1 于 18-6月 -15
通道 ORA_DISK_1: 已完成段 1 于 18-6月 -15
段句柄=/u01/app/oracle/flash_recovery_area/ORCL3939/backupset/2015_06_18/o1_mf_nnndf_TAG20150618T203029_br5gh64t_.bkp 标记=TAG20150618T203029 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:02:46
完成 backup 于 18-6月 -15
启动 Control File and SPFILE Autobackup 于 18-6月 -15
段 handle=/home/oracle/backupfile/c-3848072073-20150618-01 comment=NONE
完成 Control File and SPFILE Autobackup 于 18-6月 -15
打开数据库:
RMAN> sql'alter database open';
使用目标数据库控制文件替代恢复目录
sql 语句: alter database open
以上完成了RMAN整个数据库的脱机备份。当备份数据库时,RMAN会自动备份控制文件和服务器参数文件,其实这要取决于RMAN的configure controlfile autobackup,设置该参数为ON使RMAN备份任何指令时,自动备份控制文件,强烈推荐DBA设置该参数为ON.
RMAN的联机热备份:
rman的联机备份,有一定的前提,如数据库处于归档模式(因为处于联机备份的数据库中要备份的所有数据文件头中的SCN被锁定,但是此时在数据库中的数据文件的表依然可以被访问,并执行DML操作,但是这些修改的数据不能写入数据文件,重做日志进程将这些变化的数据全部写入到重做日志文件中,如果备份时间很长,而且在这期间产生了大量的变化数据,重做日志会切换从而将这些变化的数据写入到归档日志文件中)。必须设置快闪恢复区,将db_recovery_file_dest参数指定的目录作为归档重做日志备份的默认位置,并且将快闪恢复区的大小足够大。
RMAN联机备份是的数据库可以不间断业务运行,而且通过RMAN可以备份整个数据库,一个表空间或者数据文件,可以灵活选择备份的粒度,对于超大型数据库,如果备份整个数据库相当耗时,而且生产数据库中往往只需要备份某个重要的表空间或者数据文件,如只读表空间,非在线的undo表空间都可以不备份,而知备份联机事务的表空间。联机备份时因为启用了非归档模式,不会丢失数据更新。在介质故障时,可以实现数据库完全恢复。但是请注意,必须小心保存或备份归档日志,因为一旦丢失或损坏就无法实现数据库的完全恢复,只能实现不完全恢复。
关于数据库设置为归档模式,就不必再过多的叙述,启动到mount,alter database archivelog(关闭归档:alter database noarchivelog)
联机热备份整个数据库:
RMAN> backup as compressed backupset database plus archivelog delete all input;
启动 backup 于 18-6月 -15
当前日志已存档
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=147 设备类型=DISK
通道 ORA_DISK_1: 正在启动压缩的归档日志备份集
通道 ORA_DISK_1: 正在指定备份集内的归档日志
输入归档日志线程=1 序列=581 RECID=206 STAMP=882734872
输入归档日志线程=1 序列=582 RECID=207 STAMP=882741814
输入归档日志线程=1 序列=583 RECID=208 STAMP=882744349
通道 ORA_DISK_1: 正在启动段 1 于 18-6月 -15
通道 ORA_DISK_1: 已完成段 1 于 18-6月 -15
段句柄=/u01/app/oracle/flash_recovery_area/ORCL3939/backupset/2015_06_18/o1_mf_annnn_TAG20150618T224552_br5pf1bs_.bkp 标记=TAG20150618T224552 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:15
通道 ORA_DISK_1: 正在删除归档日志
归档日志文件名=/u01/app/oracle/flash_recovery_area/ORCL3939/archivelog/2015_06_18/o1_mf_1_581_br5f4q7x_.arc RECID=206 STAMP=882734872
归档日志文件名=/u01/app/oracle/flash_recovery_area/ORCL3939/archivelog/2015_06_18/o1_mf_1_582_br5mxkwn_.arc RECID=207 STAMP=882741814
归档日志文件名=/u01/app/oracle/flash_recovery_area/ORCL3939/archivelog/2015_06_18/o1_mf_1_583_br5pdwf1_.arc RECID=208 STAMP=882744349
完成 backup 于 18-6月 -15
上面这部分使用了三个通道备份归档了日志文件,并且在备份完成之后删除了归档目录下的相应归档文件
下面是备份数据文件:
启动 backup 于 18-6月 -15
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在启动压缩的全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
输入数据文件: 文件号=00001 名称=/u01/app/oracle/oradata/orcl3939/system01.dbf
输入数据文件: 文件号=00008 名称=/u01/app/oracle/oradata/orcl3939/big_file
输入数据文件: 文件号=00003 名称=/u01/app/oracle/oradata/orcl3939/undotbs01.dbf
输入数据文件: 文件号=00002 名称=/u01/app/oracle/oradata/orcl3939/sysaux01.dbf
输入数据文件: 文件号=00005 名称=/u01/app/oracle/oradata/orcl3939/example01.dbf
输入数据文件: 文件号=00007 名称=/u01/app/oracle/oradata/orcl3939/chao.dbf
输入数据文件: 文件号=00004 名称=/u01/app/oracle/oradata/orcl3939/user01.dbf
输入数据文件: 文件号=00009 名称=/u01/app/oracle/oradata/orcl3939/undo_w.dbf
输入数据文件: 文件号=00012 名称=/u01/app/oracle/oradata/orcl3939/v.dbf
输入数据文件: 文件号=00011 名称=/u01/app/oracle/oradata/orcl3939/a.dbf
通道 ORA_DISK_1: 正在启动段 1 于 18-6月 -15
通道 ORA_DISK_1: 已完成段 1 于 18-6月 -15
段句柄=/u01/app/oracle/flash_recovery_area/ORCL3939/backupset/2015_06_18/o1_mf_nnndf_TAG20150618T224609_br5pflcr_.bkp 标记=TAG20150618T224609 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:03:15
完成 backup 于 18-6月 -15
上述备份完成后,oracle发生了一次日志切换,继续备份剩余的归档日志,因为只有一个归档日志文件:
启动 backup 于 18-6月 -15
当前日志已存档
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在启动压缩的归档日志备份集
通道 ORA_DISK_1: 正在指定备份集内的归档日志
输入归档日志线程=1 序列=584 RECID=209 STAMP=882744567
通道 ORA_DISK_1: 正在启动段 1 于 18-6月 -15
通道 ORA_DISK_1: 已完成段 1 于 18-6月 -15
段句柄=/u01/app/oracle/flash_recovery_area/ORCL3939/backupset/2015_06_18/o1_mf_annnn_TAG20150618T224929_br5pmt5d_.bkp 标记=TAG20150618T224929 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:01
通道 ORA_DISK_1: 正在删除归档日志
归档日志文件名=/u01/app/oracle/flash_recovery_area/ORCL3939/archivelog/2015_06_18/o1_mf_1_584_br5pmpsp_.arc RECID=209 STAMP=882744567
完成 backup 于 18-6月 -15
启动饿了控制文件和参数文件的自动备份
启动 Control File and SPFILE Autobackup 于 18-6月 -15
段 handle=/home/oracle/backupfile/c-3848072073-20150618-02 comment=NONE
完成 Control File and SPFILE Autobackup 于 18-6月 -15
上面备份了数据文件,其中包括当前的控制文件和参数文件。而重做日志文件或归档日志文件不是联机状态数据库全备份的内容,所以使用联机热备份的数据库在数据恢复时要recover数据库,即使将联机备份开始到故障点之间的所有提交的数据重新写入数据文件。
在联机热备时,也可以手工指定多个通道并将数据文件分布到不同的通道上去。可以通过指令集合:
run{
allocate channel ch1 device type disk format '/home/oracle/backupfile/ch1_%U';
allocate channel ch2 device type disk format '/home/oracle/backupfile/ch2_%U';
backup as backupset
(datafile 1,5, channel ch1)
(datafile 2,3,6 channel ch2);
sql 'alter system archive log current';}
将所有的备份片放在一个目录下,format参数可以在指定通道的时候指定,也可以在backup命令中指定:
run{
allocate channel ch1 device type disk';
allocate channel ch2 device
type disk ';
backup as backupset format '/home/oracle/backupfile/%U'
backup as backupset
(datafile 1,5, channel ch1)
(datafile 2,3,6 channel ch2);
sql 'alter system archive log current';}
RMAN备份数据文件时,使用默认的三个通道,自动将数据文件大致平分的分配到三个通道上,并备份至快闪恢复区。如果不指定分配,RMAN会根据数据文件的大小分配,尽量保持通道的平衡,手工分配通道后,会将默认的通道覆盖,默认通道的分配取决于参数parallelism。
联机备份一个表空间:
RMAN> backup tablespace users;
启动 backup 于 19-6月 -15
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件: 文件号=00004 名称=/u01/app/oracle/oradata/orcl3939/user01.dbf
输出文件名=/u01/app/oracle/flash_recovery_area/ORCL3939/datafile/o1_mf_users_br7g3qrx_.dbf 标记=TAG20150619T143639 RECID=19 STAMP=882801404
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:07
完成 backup 于 19-6月 -15
启动 Control File and SPFILE Autobackup 于 19-6月 -15
段 handle=/home/oracle/backupfile/c-3848072073-20150619-00 comment=NONE
完成 Control File and SPFILE Autobackup 于 19-6月 -15
上述我们备份了表空间users,备份的文件类型为备份集。
在第一次使用RMAN备份生产备份集时,RMAN的快闪恢复区中会自动创建一个目录BACKUPSET,还会根据日期创建新的目录,将一天中的备份集放在一个根据日期创建的目录下。
在备份表空间users时,分配了一个通道,只有一个数据文件,在通道ORA_DISK_1上建了一个备份集,这个备份集包括一个备份片。控制文件和参数文件单独备份到了一个位置,生成了文件。
为了减少存储空间,可以使用压缩备份,具体指令如下:
RMAN> backup as compressed backupset tablespace users;
启动 backup 于 19-6月 -15
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在启动压缩的全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
输入数据文件: 文件号=00004 名称=/u01/app/oracle/oradata/orcl3939/user01.dbf
通道 ORA_DISK_1: 正在启动段 1 于 19-6月 -15
通道 ORA_DISK_1: 已完成段 1 于 19-6月 -15
段句柄=/u01/app/oracle/flash_recovery_area/ORCL3939/backupset/2015_06_19/o1_mf_nnndf_TAG20150619T144646_br7gpq0v_.bkp 标记=TAG20150619T144646 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:01
完成 backup 于 19-6月 -15
启动 Control File and SPFILE Autobackup 于 19-6月 -15
段 handle=/home/oracle/backupfile/c-3848072073-20150619-01 comment=NONE
完成 Control File and SPFILE Autobackup 于 19-6月 -15
如果数据文件很大,使用压缩备份可以极大的减少存储空间的压力。
联机备份一个数据文件:
在备份一个数据文件前,通常查看当前数据库中的所有数据文件,以便于选择需要的备份的数据文件。下列是备份特定的数据文件的例子,备份文件类型为备份集,备份集的目录和名称由format决定,其中通道生成的备份文件的名称和格式如下所示:
%c:备份片的副本数
%d:数据库的名称
%D:位于该月的第几天
%M:位于该年的第几个月
%n:数据库的名称,向右填补到最大19个字符
%u:一个19个字符的名称,代表备份集和创建时间
%p:该备份集的备份片号,从1开始到创建的文件数
%U:一个唯一的名字%u_%p_%c
%s:备份集的编号
%t:备份集的时间戳
%T:年月日格式(YYYY-MM-DD)
RMAN> backup as backupset datafile 2 format '/home/oracle/backupfile/datafiel_back_%U';
启动 backup 于 19-6月 -15
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
输入数据文件: 文件号=00002 名称=/u01/app/oracle/oradata/orcl3939/sysaux01.dbf
通道 ORA_DISK_1: 正在启动段 1 于 19-6月 -15
通道 ORA_DISK_1: 已完成段 1 于 19-6月 -15
段句柄=/home/oracle/backupfile/datafiel_back_29q9t039_1_1 标记=TAG20150619T145953 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:01:21
完成 backup 于 19-6月 -15
启动 Control File and SPFILE Autobackup 于 19-6月 -15
段 handle=/home/oracle/backupfile/c-3848072073-20150619-02 comment=NONE
完成 Control File and SPFILE Autobackup 于 19-6月 -15
使用backup current controlfile联机备份控制文件:
RMAN> backup current controlfile;
启动 backup 于 19-6月 -15
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动数据文件副本
复制当前控制文件
输出文件名=/u01/app/oracle/flash_recovery_area/ORCL3939/controlfile/o1_mf_TAG20150619T150930_br7j1c36_.ctl 标记=TAG20150619T150930 RECID=20 STAMP=882803372
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:01
完成 backup 于 19-6月 -15
启动 Control File and SPFILE Autobackup 于 19-6月 -15
段 handle=/home/oracle/backupfile/c-3848072073-20150619-03 comment=NONE
完成 Control File and SPFILE Autobackup 于 19-6月 -15
如果没有配置自动备份控制文件,经常备份控制文件是个很好的习惯,但是强烈推荐配置自动备份控制文件。
RMAN备份坏块处理的方法
默认情况下,RMAN在备份时总会检查数据库是否发生物理损坏,为了加快备份速度而不影响RMAN进行数据块的检查,可以关闭这个选项:
backup nochecksum tablespace system tag='weekly_backup';
默认情况下,RMAN不会检查数据块是否发生逻辑损坏,backup时可以启用逻辑损坏检查:
backup check logical tablespace system;
RMAN备份时,只要发现新的坏块时,就立即停止备份,如果发现的坏块是上次已经发现的,则继续备份。我们通过设置maxcorrupt参数来通知RMAN,只有当发现的坏块个数超过指定数量时,才停止备份:
run{
set maxcorrupt for datafile 1,5 to 8;
backup database;
}
这是个迫不得已的参数,尽量不要使用。数据文件1,5出现的新的坏块数超过8的时候就停止备份。我们不希望出现坏块的出现,此时使用以前的RMAN的备份恢复这个坏块,修复后再备份该数据文件。
相关文章推荐
- su,sudo
- 常用终端命令
- 关于在Tp的框架中操作mongodb的具体用法
- CMake 手册详解(十九)
- 黑马程序员——Java集合类学习笔记
- Kindeditor 代码审计
- 解决Xshell显示中文乱码的问题
- 日语学习之沪江N3基础 20150619 -6
- [BZOJ 2438] 中山市选2011 杀人游戏 · Tarjan
- CMake 手册详解(十七)
- CMake 手册详解(十八)
- 不要win7安装的100M系统分区
- 常用 国外软件读音
- java并发编程,通过Future取消任务
- cobbler配置解析
- Android学习笔记:Canvas,Drawable,Bitmap
- swift 单例的几种形式
- squid删除指定url的缓存配置
- .md5mesh and .md5anim文件介绍
- windwithme ComputeX 2015产品与ShowGirl分享