RMAN备份
1.什么是RMAN
RMAN可以用来备份和还原数据库文件、归档日志和控制文件。它也可以用来执行完全或不完全的数据库恢复。
RMAN启动数据库上的Oracle服务器进程来进行备份或还原。备份、还原、恢复是由这些进程驱动的。
2恢复目录 2.1恢复目录的概念
1.恢复目录数据库:用于存放恢复目录方案的Oracle数据库,是一个独立的数据库 2.恢复目录所有者:用于管路恢复目录数据库对象的数据库用户。必须具有RECOVER_CATALOG_OWNER角色,不能是SYS用户 3.恢复目录方案:恢复目录数据库对象的集合,就是恢复目录所有者的名称,必须在RMAN中以恢复目录身份登录,执行CREATE CATALOG 命令 4.规划恢复目录空间:每个目标数据库的RMAN元数据每年大约15M 5.恢复目录内容:存放备份集备份片信息,映像副本信息,目标数据库物理结构,RMAN配置信息,存储脚本 6.恢复目录优点:存放多个目标数据库RMAN元数据,存放目标数据库不同副本的元数据,存放目标数据库历史元数据,存放存储脚本
2.2建立恢复目录
第一步,在目录数据库中创建恢复目录所用表空间: SQL>createtablespace rman_ts
datafile'/opt/oracle/app/oracle/oradata/orcl/rman/rman_ts.dbf'size1024M;
表空间已创建。
第二步,在目录数据库中创建RMAN 用户并授权:
SQL>createuser rman identifiedby rman defaulttablespace rman_ts temporary
tablespace temp quotaunlimitedon rman_ts;
用户已创建。
SQL>grant recovery_catalog_owner to rman; 授权成功。
SQL>grantconnect,resourceto rman; 授权成功。
第三步,在目录数据库中创建恢复目录 在oracle用户下执行命令: rman catalog rman/rman RMAN> create catalog;
第四步,.注册目标数据库,在建立恢复目录之后,必须连接到目标数据库,使用REGISTER DATABASE命令注册目标数据库。 connecttargetsys/iflytek; register database; report schema;
注意:虽然使用RMAN不一定必需恢复目录,但是推荐使用。因为恢复目录记载的信息大部分可以通过控制文件来记载,RMAN在恢复数据库时使用这些信息。不使用恢复目录将会对备份恢复操作有限制。
2.3删除备份目录数据:
第一步:查看备份信息,查询备份级关键字(BSKey) RMAN>list backup;
第二步:定义delete通道:
RMAN>allocate channel for delete type disk;
第三步:删除backupset备份集: change backupset BSKey delete;
3. 启动RMAN
在使用RMAN前,设置NLS_DATE_FORMAT 和NLS_LANG环境变量,很多RMAN LIST命令的输出结果是与日期时间相关的,这点在用户希望执行以时间为基准的恢复工作也很重要。
下例是环境变量的示范:
NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK NLS_DATE_FORMAT=YYYY-MM-DD HH24:MI:SS
为了保证RMAN使用时能连接恢复目录,恢复目录数据库必须打开,目标数据库至少要STARTED(unmount),否则RMAN会返回一个错误,目标数据库必须置于归档模式下。
3.1使用带恢复目录的RMAN
连接rman:
rman catalog rman/rman
连接rman并连接实例:
rman catalog rman/rmantarget orcl/iflytek
3.2注册目标数据库
第一步,启动恢复管理器,并且连接目标数据库 rman target orcl/iflytek catalog rman/rman
第二步,注册数据库: RMAN> register database;
3.3注销目标数据库
RMAN提供了一个注销工具,叫DBMS_RCVCAT工具包,请注意一旦注销了该目标数据库,就不可以使用恢复目录中含有的备份集来恢复数据库了。
为了能注销数据库,需要获得数据库的标识码(DB_ID)和数据库键值(DB_KEY)。其中连接目标数据库时将会获得DB_ID。
rman target orcl/iflytek catalog rman/rman 恢复管理器:版本8.1.6.0.0 - Production
RMAN-06005:连接到目标数据库:HIS (DBID=3021445076) RMAN-06008:连接到恢复目录数据库
其中DBID=3021445076,利用DBID=3021445076查询数据库键值码,连接到目标数据库,查询db表:
在sqlplus中rman用户下执行: SQL> select * from db;
DB_KEY DB_ID CURR_DBINC_KEY ---------- ---------- -------------- 2 1327839531 4
获得DB_KEY=2,这样,该目标数据库DB_KEY=2,DBID=1327839531,利用两个值使用
DBMS_RCVCAT工具包就可以注销数据库:
在rman用户下执行:
SQL> execute dbms_rcvcat.unregisterdatabase(2,1327839531);
至此,注销数据库操作完成。
4.备份: 4.1备份数据库
4.1.1备份完整数据库:
RMAN> backup database format '/u01/app/oracle/rmanbak/whole_%d_%U'; --备份整个数据库
4.1.2备份脚本:
Run{ allocate channel ch1 type disk --手动分配一个通道 maxpiecesize=2g; --指定备份片诶分的大小为2g backup as compressed backupset --压缩备份集 format '/u01/app/oracle/rmanbak/whole_%d_%U' filesperset=3 --指定备份集中允许容纳的文件数为个 database; release channel ch1;}
4.2备份数据文件
4.2.1备份为镜像:
RMAN>backupascopydatafile4--备份类型为镜像备份 2>format'/u01/app/oracle/rmanbak/df_%d_%U'; 4.2.2查询备份数据文件:
RMAN>listcopy; 4.2.3备份为备份集
RMAN> backup datafile 4,5,6 format '/u01/app/oracle/rmanbak/df_%d_%U'; --备份类型为备份集 4.3.备份表空间
RMAN> backup tablespace users,example format '/u01/app/oracle/rmanbak/tb_%d_%U'; 4.4.备份控制文件
4.4.1设置自动备份控制文件
RMAN> configure controlfile autobackup on; 自动备份控制文件置为on状态,将自动备份控制文件和参数文件 注:在备份system01.dbf或system表空间时将会自动备份控制文件和参数文件,即使自动备份控制文件参数为off