Rman备份必须在数据库处于归档的时候进行。(archive log list查询)
增量备份分为几个等级:每个等级备份的数据量不同;0级增量备份及是数据库的全备份。
增量备份的好处在于:减少了备份的数据量,节省磁盘空间;减少了恢复扫描的块的数量。
增量备份都必须从0级开始。Backup incremental level 0 database;
9I中将所有的数据块读入内存中,用每个数据块中的scn号与父备份集相比较来确定是否被修改。
10g中通过块跟踪的方式来确定哪些块被修改。
Rman可以通过copy命令将数据文件转存(copy datafile 1 to '路径')
1)累积增量备份(cumulative)
备份之前最好通过 report schema查看数据库的数据文件大小及数量。
从上级备份之后开始备份。
周末的0级,周一2级,周二2级,周三1级,周四2级,周五2级,周六2级
因为增量备份默认的是差异备份,所以在进行累积备份时必须使用cumulative关键字
Backup incremental level 0 cumulative database;
Backup incremental level 2 cumulative database;
Backup incremental level 2 cumulative database;
Backup incremental level 1 cumulative database;
Backup incremental level 2 cumulative database;
Backup incremental level 2 cumulative database;
Backup incremental level 2 cumulative database;
通过这种备份可以恢复一周内任意时间的数据。例如:要恢复周四的数据则直接通过周三的备份集和周四的备份集就可以恢复。
这是默认的备份方式,是同级备份之后开始。
周末的0级,周一2级,周二2级,周三1级,周四2级,周五2级,周六2级
Backup incremental level 0 database;
Backup incremental level 2 database;
Backup incremental level 2 database;
Backup incremental level 1 database;
Backup incremental level 2 database;
Backup incremental level 2 database;
Backup incremental level 2 database;
通过这种备份可以恢复一周内任意时间的数据。例如:要恢复周四的数据则直接通过周三的备份集和周四的备份集就可以恢复。
3)两种方式的区别
累积增量备份是从上一级开始到现在的改变的数据都进行备份,同一级备份过的进行从新备份。
差异增量备份是从同一级开始到现在的改变的数据进行备份,同一级备份过的就不进行备份了。
1,出现数据文件的丢失
2,通过rman进行恢复(用的是0级差异备份)
恢复时默认的是用最新的那个备份集,如果要用其他的备份集可以指定某个tag
Restore database from tag tag的值;
还原之后数据库的数据文件头的scn和控制文件的scn的值就会不同(如果要数据库能打开则必须保证数据文件头的scn和控制文件的scn相同,所以还有做recover)
3)进行数据库的恢复操作(recover)
Recover可以在rman中,也可以在sqlplus中进行,但是两者的区别在于,sqlplus中的recover只能使用归档进行恢复,如果归档不存在就会报错。而rman中则用的备份集进行恢复。
恢复完成后数据文件头的scn和控制文件的scn相同,这样数据库才能打开。
4)当数据文件丢失,归档但没有备份的时候可以通过
Alter database create datafile '丢失的数据文件名称' as '丢失的数据文件名称';
进行重新创建,然后用recover进行恢复。
控制文件丢失是将数据库中的所有信息都丢失了,因为rman的备份信息都保留在控制文件中;
如果有控制文件的单独备份可以直接通过指定restore使用的文件名进行恢复
Set dbid进行连接数据库
Restore 数据库通过指定的备份文件
然后将数据置于mount状态
最后进行数据文件的恢复
打开数据库(因为是非完全恢复所以要重置日志文件打开数据库)
完成后要对数据库的全备份。保证所有的数据正确
是否是当前日志可以通过select status from v$log查看
1,非当前日志的丢失
可以发现当前的日志文件为第三组;
直接通过alter database clear lofile 进行重建日志文件。然后打开数据即可
2,当前日志的丢失
删除第一组日志文件。
运用上面的方法不行了
通过修改隐含参数不对打开数据库进行scn验证。
然后对数据进行恢复
最后通过resetlogs打开数据库
4)表空间的恢复
Rman>Sql “alter tablespace undo1 offline”
Rman>Restore tablespace undo1
Rman>Recover tablespace undo1
Rman>Sql “alter tablespace undo1 online”
周日0级,周一1级差异,周二1级差异,周三1级累积,周四1级差异,周五一级累积,周六一级差异
Backup incremental level 0 cumulative database;
Backup incremental level 1 database;
Backup incremental level 1 database;
Backup incremental level 1 cumulative database;
Backup incremental level 1 database;
Backup incremental level 1 cumulative database;
Backup incremental level 1 database;
但是如果数据库能在1小时内备份完成,则建议每天进行全备份。
1,host 暂时退出rman的命令提示符,进入操作系统的命令环境
2,sql 'alter system archive log' 可以执行sql语句,但是不能执行select,或者说是执行了但是看不到结果
3,backup database 进行数据库全备份
4,backup database format ‘f:\oracle\backup\bak_%U’;以指定名称的备份集进行备份
5,backup tablespace users 进行表空间的备份
6,list backup of database/tablespace users/controlfile/spfile/datafile只显示相应的备份集
7,report schema 查询连接数据库的数据文件,控制文件等信息
8,delete (noprompt)backup (integer)删除备份集,noprompt直接删除不提示,integer删除指定的备份集
9,backup datafile (integer)备份指定的数据文件
10,backup database include current controlfile 备份数据库加上控制文件
11,configure controlfile autobackup on 将数据文件自动备份
12,backup current controlfile plus archivelog 备份控制文件加上归档日志
注意:备份归档的步骤
1,对当前的redolog进行归档(alter system archive log current)
2,备份所有已归档的日志(backup archive log all)
3,对指定项进行备份
4,再次对当前的redolog进行归档(alter system archive log current)
5,对新生成的尚未备份的归档文件进行备份
13,backup spfile 参数文件进行备份
14,show all 查询当前的配置参数
15,delete expired backup 删除无效的备份
16,delete obsolete;删除过期的备份
17,delete backup(set) (integer)删除指定的备份集
18,crosscheck backup 检查备份集的状态
19,configure retention policy to recovery window of N days;备份集保留的天数
20,configure retention policy to redundancy N;备份集的冗余的数
21,backup validate database ;对数据进行检查看是否有备份,并记录到v$database_block_corruption视图中
Sql>Create tablespace rman_ts datafile ‘f:\rman.dat’ size 10M;
Sql>Create user rman identified by rman default tablespace rman_ts quota unlimited on rman_ts;
Sql>Grant recovery_catalog_owner,connect,resoure to rman;
C:>rman target / 远程@db_link catalog rman/rman@db_link;
注意:catalog是可以将远程的数据库,导入到本地,但是连接catalog rman/rman这个必须是本地的连接。
Rman>create catalog tablespace rman_ts;
Rman>register database;
Rman>备份命令(或脚本);