Chinaunix首页 | 论坛 | 博客
  • 博客访问: 251098
  • 博文数量: 59
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 698
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-19 21:17
文章分类

全部博文(59)

文章存档

2009年(14)

2008年(45)

我的朋友

分类: Oracle

2008-10-25 14:58:53

oracle备份
1、我们知道oracle的备份有如下几种:
冷备份:就是数据库在关闭的情况下进行的备份,恢复时也很容易,但是恢复后丢失该冷备份以后的产生的数据。
热备:一般热备需要在数据库归档模式下进行,热备时数据库是打开的,能够同时对外提供服务。
rman:rman是oracle的恢复管理器,是oracle的一个内部工具,在备份时可以很好的与oracle交互,读取每个备份数据块的状态。他只备份已经使用的数据库块。与冷被热备相比,应该占用比较少的磁盘空间。
以上的备份是物理备份,还有逻辑备份,比如对一张重要的表进行备份。通过exp进行备份。
2、每种备份的方式
1)冷备
直接copy数据文件,日志文件,参数文件,密码文件,控制文件即可。如果数据库关闭时是一致的状态,那么该冷备份就是一个一致性的备份。当数据库故障时,还原后就可以直接打开数据库,而不需要做任何的恢复。
2)热备
需要对表空间置backup模式
alter tablespace XXX begin backup;
cp XXX ....
alter tablespace XXX end backup;
我们知道操作系统os block一般是512byte,而oracle block一般为8k,因此一个oracle block由多个os block组成。我们知道oracle数据库在打开数据库经过如下的检查:一个是数据库文件版本检查,那就是checkpoint cnt,即使一个表空间是只读状态,那么该变量也会一直修改的;另外一个就是检查数据文件头的开始SCN与控制文件的结束SCN是否一致,如果一致则不需要恢复。
现在热备在copy过程中,该表空间中数据库还是可以被修改的,也就是说我们cp过程中,一个块在开始cp和结束cp时,块的状态可能是不一样的,这样就导致了分裂块,因此在cp过程会产生非常多的日志。
发出alter tablespace XXX begin backup命令时,oracle数据库做了什么?
oracle会锁定文件头,因此不会增加checkpoint scn,而只会增加checkpoint cnt.而不管我们cp时拷贝块的顺序如何,我们会从文件头的scn处开始恢复,这样就避免数据的丢失损坏。
 
与rman的差异
rman是等cp这个块是一致的才会去写备份集,因为rman是oracle的内部工具,可以很方便的检查数据块的状态。
 
分裂块
在热备份cp过程中,如果有进程修改某个数据库,那么该块会被写进日志文件里面。因为该数据块可能包含了多个操作系统的版本块。导致了数据块的不一致。所以在备份模式下如果有语句对备份块产生更新,那么oracle会先把当前块复制一份到redo,当恢复的时候如果碰到数据块不一致就从redo把这个镜像拷贝回去,然后在这个一致性的镜像开始恢复。
阅读(613) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~