14.0w+
社区成员
1.rman备份脚本:
全备
#!/bin/bash
export ORACLE_SID=oracle12c
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_BASE=/u01/app/oracle
rman target /
run{
allocate channel c1 device type disk;
allocate channel c2 device type disk;
allocate channel c3 device type disk;
backup format '/u01/rman_datafile/full%u_%s_%p' database;
sql 'alter system archive log current';
backup format '/u01/rman_archivelog/arch_%d_%s_%p_%t' archivelog all delete input; ----未配置归档删除策略(未传输到备库的归档日志在正常的delete input下是不会被删除的)
release channel c1;
release channel c2;
release channel c3;
}
2.rman的备份策略configure设置
CONFIGURE CONTROLFILE AUTOBACKUP ON; # default ------控制文件自动备份 (元数据信息放在控制文件中保存),当数据库结构信息发生改变/完成一次有效备份时候,Oracle会等待一段时间自动备份控制文件,防止控制文件损坏
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u01/rman_controfiles/%F'; ------控制文件自动备份路径(控制文件会放在快速恢复区中默认位置/也可以手工指定)控制文件自动备份名字必须是%F。
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default -----归档日志删除策略(这里没有配置)
也可以进行如下配置
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
该策略对应三个值:
1)NONE :设置为该值时,则不启用归档文件的删除策略。默认情况下就是NONE。
2)APPLIED ON STANDBY :
设置为该值时,会强制检查待删除的log 是否已经在备库apply,只有apply后的log才能删除。
当通过附加的 DELETE INPUT 子句删除Standby数据库仍需要的日志时,会提示RMAN-08137错误。 不过仍然可以手动地通过 DELETE ARCHIVELOG 方式删除。
3) SHIPPED TO ALL STANDBY:
当归档传送到备库就可以删除。
3.rman catalog 是做什么用的?
Block Change Tracking(块跟踪)主要用于RMAN备份的增量备份,记录自从上一次备份以来数据块的变化,相关后台进程CTWR(Change Tracking Writer)
改善增量备份性能,RMAN可以不再扫描整个文件以查找变更数据。从10g开始提供此功能。
block change tracking技术,降低读IO。提高效率。
rman 启动channel进程 ,channel进程进行两边的读写(IO),通过读取数据块scn判断是否变更(这样的话会大量消耗读的IO),在11g后,只要数据快改变了。会把块的地址通过位图的方式写到块改变跟踪文件中(block change tracking),channel会通过块改变跟踪文件,来知道那个数据块改变了,在进行备份。
开启block change tracking;
alter database enable block change tracking using file '文件路径'; ----可以指定路径 数据库中执行
archival backups ------归档备份技术:如果保留期限设置为一年,那么加上keep参数,保留会超过一年 。在进行过期检索时,备份不会被标注过期。
keep参数是设置超过保存期限 例:backup database keep forever; (备份数据库永久保存)
为了配合keep forever,Oracle引入了另外一种与rman有关的概念 catalog集中化管理(只有使用catalog才具备使用keep forever)
控制文件局限性
1. 有时间限制 数据库中的控制文件(Ctl) 记录了数据库中的原数据信息。 rman备份的原数据信息保存在控制文件中,keep forever针对整个的备份(既包括归档也包括数据文件) 控制文件包含两种内容:1.循环复写的 2.不循环复写的(有上限的)
记录备份原数据信息的这一部分文件,属于循环使用的。当空间不足时,控制文件会覆写之前备份的原数据信息。(一般来说最长保存365天)
2. 一旦控制文件损坏,恢复时比较繁琐
3. 控制文件空间有限
怎么解决控制文件局限性:把控制文件的原数据信息拿出来放在另一个数据库中。里面存放的也是控制文件的原数据信息,rman可以通过连接这个数据库来进行恢复。这个数据库就叫做Rman catalog
注意:是把控制文件信息同步到一个数据库中(不是保存在控制文件中)保存在一张表里面或者用户下面。 rman连接到这个数据库上面去取这个信息。(这个时候rman恢复的时间要比控制文件恢复时间要长很多)
Rman catalog 特点:1.空间没有限制 2.可以给企业多个数据库提供服务(集中化管理) 3.没有时间限制(只要catalog中存在的)
缺点:需要从新搭建数据库 成本会高点
怎么构建:1.先创建用户或者表空间(用于存放rman同步过来的原数据信息) 2.创建catalog用户赋予 recovery catalog owner权限
3.使用rman加上数据库连接到catalog用户上面,执行 create catalog;命令。执行后会在catalog用户创建数据字典表,这些数据字典表用于同步目标数据库上的控制文件信息(这时这些表是空的)
4.使用 rman TARGET / CATALOG user@service name (通过网络连接到catalog数据库上)
5.使用注册命令 register database; 注册命令执行完后相当于在用户下面建立的很多表中针对于database插入内容
6.这时执行 report schema; 生成的信息不在来自于控制文件,来自于catalog。
写的不错!厉害