人工热备份和RMAN

Posted 太古丶凶兽

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了人工热备份和RMAN相关的知识,希望对你有一定的参考价值。

相关连接:

http://www.itpub.net/thread-739895-1-1.html

http://blog.sina.com.cn/s/blog_6fd335bb0100qnzv.html

http://www.oracledistilled.com/oracle-database/backup-and-recovery/user-managed-online-backups-hot-backup/  --好文

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

begin backup、end backup是人工热备份

rman 是服务器自动备份

 

大家在做hotbackup的时候, 一般是
alter tablespace XXXX begin backup;
!cp ....
alter tablespace XXXX end backup;
我们都知道在hotbackup 的同时是允许对正在备份的文件写入的, 那么随着cp的进行, 复制下来的文件从时间的角度看是在不同的时间段有cp 读出来的, 里面的数据一定是不一致的. 那么hot backup如何保证恢复时的一致性呢? 这要从begin backup说起.
begin backup 做了什么呢? 基本上, 当我们begin backup时, oracle 会把这个ts中的所有数据文件都标记为hot-backup-in-progress, 同时这个命令会checkpoint这个ts的所有文件. 也就是说, 所有的dirty block 都会被写回到所属的数据文件. 这时候, 文件头中的checkpoint scn 记录这时的scn. 尽管在整个backup 过程中, oracle 可能会发生多次checkpoint, begin backup 的数据文件的checkpoint scn不会随之改变, 而其它文件的scn会被更新, 也就是说, begin backup的文件的scn被锁定于开始备份的scn. 虽然checkpoint 不会改变备份文件的头, checkpoint还是会把数据写入到这些文件中去, 也就是说, cp复制的文件无论如何都是不一致的. 那么怎样保证我们恢复的时候, 能够恢复到开始备份时的scn呢? 原来当备份中的文件中的某个块发生第一次修改的时候, oracle会把这个块(与开始备份时的数据一致)复制到redo log中. 当我们在恢复的时候, oracle 会把redolog 应用到这些数据文件, 相当于把这些修改过的块的数据再复制会数据文件. 从而, 把文件恢复到开始备份是的一致状态. 有个内部init parameter _LOG_BLOCKS_DURING_BACKUP控制是否将block写到redo log.这个参数默认是true.
相关的几个视图
v$backup
v$datafile_header
v$log

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/orapeasant/archive/2007/12/20/1956253.aspx

 

 

在oracle 10g之前,需要对每个表空间逐一进行热备设置,但是在oracle 10g开始,可以直接通过alter database begin/end backup来进行数据库备份模式的切换。

以上是关于人工热备份和RMAN的主要内容,如果未能解决你的问题,请参考以下文章

pg_rman用法

oracle都有哪些备份方式?

Oracle数据库实验--Oracle数据库备份

Oracle数据库实验--Oracle数据库备份

Oracle数据库实验--Oracle数据库备份

100天精通Oracle-实战系列(第12天)Oracle 本地部署 RMAN 脚本定时备份数据库