RMAN简介
Oracle备份的文件包括了数据文件,控制文件,服务器参数文件(SPFILES)和归档的redo日志文件—arch文件。
Oracle备份分物理层次的备份和逻辑层次的备份,物理备份在文件的层次提供完全恢复功能,而逻辑备份主要是备份对象,如表和表空间。一个备份加上归档的redo日志,可以使数据库恢复到redo日志中的最近的时间。
数据库包括一致性备份(冷备份)和不一致性备份(热备份),一致性备份指备份后没有数据被修改;而不一致性备份指备份后还有数据被修改,并且保存在了归档的 redo日志中,在不一致性备份的时候数据库可以继续进行操作。数据库使用不一致性恢复的时候,必须提供一个备份+归档的redo日志,从日志中恢复可以选择全部恢复,也可以确定一个时间点,只恢复到该时间点。
Recovery Manager(RMAN)是一种用于备份(backup)、还原(restore)和恢复(recover)数据库的 Oracle 工具。
RMAN工具通过确定哪些块已经修改,并且仅备份修改过的块来压缩备份;RMAN 提高备份性能的方法之一就是压缩备份。RMAN 能识别出哪些块被修改过,并且只备份这些修改过的块,不备份空块。因为RMAN是工作在数据块一级,所以能够只备份分配的数据快,这样就大大地减少了所需要的备份的数据量,特别是对于预先分配空间的数据库而言。
RMAN 具有执行增量备份和完全备份的能力。增量备份仅备份从上次备份后修改了的内容,此方法允许你一周只有一天执行完全备份,而其它几天都执行增量备份,这样就提高了备份的性能。
RMAN 提高备份、还原和恢复操作的方法之一就是允许 RMAN 命令脚本化。该脚本可能包括多个存储在恢复目录内的 RMAN 命令。可以重复调用、执行这些脚本来完成任务。
RMAN 的体系结构说明如下:
1、RMAN 工具
也就是RMAN 命令,一般位于$ORACLE_HOME/bin 目录下,可以通过运行rman这个命令来启动RMAN 工具,用于备份与恢复的接口。
2、服务进程
RMAN 的服务进程是一个后台进程,用于与RMAN工具与数据库之间的通信,也用于RMAN 工具与磁盘/磁带等I/O 设备之间的通信,服务进程负责备份与恢复的所有工作,在如下情况将产生一个服务进程
·当连接到目标数据库
·分配一个新的通道
3、通道
通道是服务进程与I/O 设备之间读写的途径,一个通道将对应一个服务进程,在分配通道时,需要考虑I/O 设备的类型,I/O 并发处理的能力,I/O 设备能创建的文件的大小,数据库文件最大的读速率,最大的打开文件数目等因素。
4、目标数据库
就是RMAN 进行备份与恢复的数据库,RMAN 可以备份除了联机日志,pfile,密码文件之外的数据文件,控制文件,归档日志,spfile。
5、恢复目录
用来保存备份与恢复信息的一个数据库,不建议创建在目标数据库上,利用恢复目录可以同时管理多个目标数据库,存储更多的备份信息,可以存储备份脚本。
如果不采用恢复目录,可以采用控制文件来代替恢复目录,oracle 9i因为控制文件自动备份的功能,利用控制文件很大程度上可以取代恢复目录。
6、媒体管理层
Media Management Layer (MML)是第三方工具或软件,用于管理对磁带的读写与文件的跟踪管理。如果你想直接通过RMAN 备份到磁带上,就必须配置媒体管理层,媒体管理层的工具如备份软件可以调用RMAN 来进行备份与恢复。
7、备份,备份集与备份片
当发出backup命令的时候,RMAN 将创建一个完整的备份,包含一个到多个备份集;
备份集是一个逻辑结构,包含一组的物理文件。这些物理文件就是对应的备份片。备份片是最基本的物理结构,可以产生在磁盘或者磁带上,可以包含目标数据库的数据文件,控制文件,归档日志与spfile文件。
备份集与备份片有如下规定:
一个数据文件不能跨越一个备份集,但是能跨越备份片,数据文件,控制文件能保存在同样的备份集上,但是不能与归档日志保存在同样的备份集上。
进入RMAN
通过RMAN的方式不论要备份还是要恢复,都必须先启动实例并加载数据库。
RMAN有两种操作方式,一种是命令方式,第二种是图形化界面方式。
一、连接本地数据库
默认是nocatalog,不使用恢复目录;通过rman连接本地数据库非常简单,进入到命令提示符界面:
$ rman target /
注:如本地库只有一个实例,则不需要指定oracle_sid。Rman会自动连接到默认实例。
当然,你也可以先启动rman,然后再通过connect来连接目标数据库,如下:
二、连接远程数据库
如果要连接的目标数据库是一个远程数据库,那么必须在建立连接时指定一个有效的网络服务名,同时你本地的tnsname.ora文件中也必须已经建立了该网络服务名的正确配置。示例如下:
连接到恢复目录数据库:
oracle$rman target /
RMAN>connect catalog rman_new/4Qy8_zer@NEWCATADB
RMAN>set dbid 721046021
rman target sys/change_on_install@testdb
在启动rman时可以指定日志输出,之前的示例中均没有指定,rman就将执行结果直接打印到屏幕了,如果我们以后写了一堆超长的rman批处理放在后台执行,可能会希望能够把执行日志记录下来备查,这个时候日志输出功能就用上了。
rman target / log d:\logs\rman_log.txt
rman会将执行的结果直接输出到指定的d:\logs\rman_log.txt文件,一旦脚本放入后台执行出现问题,我们可以根据rman_log文件来辅助分析。
RMAN命令
一、定义RMAN配置
RMAN中具有一系列的默认配置,这些配置决定了备份恢复时的一些选项;
修改配置是通过CONFIGURE命令。
二、显示RMAN默认配置
Rman中可以利用show命令来显示当前的配置参数。
RMAN> show all;
注:配置项后面跟了# default的表示该项仍是初始配置,未被修改过。
该命令使用也相当灵活,其后跟上不同的类型的配置参数,即可以显示不同类型的配置,如:SHOW CHANNEL;
RMAN> show all;
using target database control file instead of recovery catalog
RMAN configuration parameters for database with db_unique_name PPMPPRD are:
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 CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u01/bak/ctl_%F';
不能设置为:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u01/bak/ctl_%d_%T_%s_%p';
会报错:(因为要记录dbid等信息)
RMAN-06492: control file AUTOBACKUP format must specify a "%F" format specifier
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default 指定磁盘备份类型对应的并行度
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default 指定数据文件备份copy到磁盘的个数
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default 指定归档备份copy到磁盘的个数
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 配置归档redo日志删除策略(这个设置并不是自动删除归档日志,而是删除的时候确认归档已经被DATA GUARD、流环境等所应用。这个功能的目的是避免删除其他功能所需要的归档日志。就是给有standby的服务器用的,单机服务器不用)
CONFIGURE SNAPSHOT CONTROLFILE NAME TO
'/u01/app/oracle/product/11.2/dbs/snapcf_ppmpprd1.f'; # default 配置控制文件快照
三、列出备份信息
LIST命令用来查看通过RMAN生成的备份信息。
列出数据库中所有文件的备份信息:
RMAN>LIST BACKUP OF DATABASE;
列出指定表空间的备份信息:
RMAN>LIST COPY OF TABLESPACE 'SYSTEM';
列出指定数据文件的备份信息:
RMAN>LIST BACKUP OF DATAFILE'F:\ ORADATA\JWEB.ORA';
四、删除备份
用于删除RMAN备份记录及相应的物理文件。RMAN备份记录被存放在目标数据库的控制文件中,如果配置了恢复目录,那么该备份记录也会被存放到恢复目录中。
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;
浙公网安备 33010602011771号