`

Oracle数据库联机热备份的原理简介

阅读更多
http://oracle.chinaitlab.com/backup/838957.html
要求归档模式
引用
SQL> archive log list
数据库日志模式            存档模式
自动存档             启用
存档终点            USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列     94
下一个存档日志序列   96
当前日志序列           96

先看用户管理的热备份

  看看下面这个关键的操作,将备份的内容置于backup模式,用户管理的联机热备份必需的操作,
  不然copy备份的数据文件不能用来恢复,即使用某些放时恢复了也会丢数据。



alter tablespace users begin backup;
select d.file_name filename, d.tablespace_name ts_name, b.status
  from dba_data_files d, v$backup b
  where d.file_id=b.file#;

USERS表空间现在处于backup模式,究竟这时候怎么了?

  在我们alter tablespace users begin backup 的时候是

  锁定了users表空间对应的数据文件头的change scn.

  首先考虑一下数据库怎么用日志文件做恢复:查找不一致的数据文件(根据文件头中旧的scn)

  如果锁定了文件头,这个文件头中的scn就不会改变(当然了数据块还是会变化的,还可以做读写)。

  然后就会应用这个scn到现在的日志。那我锁定了scn,不管你后边怎么修改,

  总之做恢复的时候是应用锁定的时候的scn一直到现在的日志(完全恢复的话)

  举个例子:

  a,b两个数据文件,把a置于备份模式,b正常

  这时候两个change scn都是100,然后开始备份

  这期间有数据库的修改,备份完成的时候,Scn变成了200.但是由于a的备份模式,

  所以a的文件头中记录的scn还是100,b是200.

  某个时间,假设scn 500

  这时候a丢失

  copy回a的备份,然后recover,完全恢复的话数据库就应用100—500这段的日志,自然也就不会丢失数据了。

  因为不管在我copy备份的过程中你做什么操作,总之都在锁定的时change scn之后,

  所以应用的日志就不会有遗漏了。这时候应该能理解为什么要数据库处于archived模式了

  看看数据文件头的change scn
select NAME,TABLESPACE_NAME,STATUS,CHECKPOINT_CHANGE# from v$datafile_header 



显然,在将users表空间置于backup状态的时候,相应的datafile的文件头的scn就不会再发生改变,发生检查点也不会改变。
alter system checkpoint;
select NAME,TABLESPACE_NAME,STATUS,CHECKPOINT_CHANGE# from v$datafile_header;


下面end backup,看看scn
引用

SQL> alter tablespace users end backup;

表空间已更改。

SQL> alter system checkpoint;

系统已更改。

select NAME,TABLESPACE_NAME,STATUS,CHECKPOINT_CHANGE# from                                                  v$datafile_header;


再说说rman备份

  个人认为理解了用户管理的热备份,rman就已经理解了一大半了

  rman 备份是针对块一级的,支持增量备份,稍后说怎么做的增量备份

  Rman备份并不需要将数据库或者表空间置于backup状态,但是它会把scn记录

  在catalog中对应你的backupset准备在恢复的时候来使用

  对users表空间做一个完全备份
引用

RMAN> run{
2> allocate channel d1 type disk;
3> backup
4> tablespace users;
5> release channel d1;
6> }

看一下备份集里都有什么,注意看Ckp SCN 11351573018754,


恢复的时候应用11351573018754开始到现在的归档日志和重做日志。
rman的增量备份的基本原理

  其实原理很简单,主要就是弄明白怎么样在做增量备份时确定某个数据块需要备份,哪个不需要

  rman在做1级备份的时候怎么来确定0级备份之后都有哪些数据块做了修改呢?看下面一段

  Each data block in a datafile contains a system change number (SCN), which is the

  SCN at which the most recent change was made to the block. During an incremental

  backup, RMAN reads the SCN of each data block in the input file and compares it to

  the checkpoint SCN of the parent incremental backup. If the SCN in the input data

  block is greater than or equal to the checkpoint SCN of the parent, then RMAN copies

  the block.

  原来block里边也有一个change scn

  也就是说在做level 1级备份的时候,需要扫描所有的数据块并且用块中记录修改的SCN

  跟level 0备份时的SCN做比较(备份记录中的Ckp SCN),来确定这个块是否需要备份。

  所以扫描整个数据文件是不可避免的 !

  这是传统的rman做增量备份

  在10g中rman做增量备份不再需要扫描整个数据文件了

  10g引入的新特性 block change tracking:

  Block change tracking进程记录自从上一次备份以来数据块的变化,并把这些信息记录在跟踪文件中。

  RMAN使用这个文件判断增量备份中需要备份的变更数据。这极大的促进了备份性能,

  RMAN可以不再扫描整个文件以查找变更数据。

  RMAN's change tracking feature for incremental backups improves incremental

  backup performance by recording changed blocks in each datafile in a change tracking

  file. If change tracking is enabled, RMAN uses the change tracking file to identify

  changed blocks for incremental backup, thus avoiding the need to scan every block in

  the datafile.

  估计是使用的位图文件做的记录!
  • 大小: 15 KB
  • 大小: 18.3 KB
  • 大小: 17.9 KB
  • 大小: 18.1 KB
  • 大小: 2.1 KB
分享到:
评论

相关推荐

    oracle联机数据库备份详解

    联机热备份应该安排在用户活动最少的时间段进行。联机热备份包括三个过程,即逐个表空间地备份数据文件、备份归档重做日志文件和备份控制文件。1. 逐个表空间地备份数据文件该过程又可以分为四个步骤,即查询表空间...

    Oracle数据库管理员技术指南

    7.2.3 热备份 7.2.4 使备份方式的持续时间最小化 7.2.5 为什么不应备份联机重做日志 7.2.6 ARCHIVELOG 和 NOARCHIV- ELOG方式 7.2.7 为什么应使用 ARCHIVELOG 方式 7.2.8 为什么应该复用归档重做日志 7.3 ...

    数据库的联机(热)备份.txt

    数据库的联机(热)备份

    oracle 12c 数据库 教程

    归档模式:冷备份,离线备份,热备份,联机备份 6 Spfile:二进制,9i 之后 Pfile:文本,9i 之前 6 可以将 spfile 转换为 pfile 6 注意:scope 的取值有三个:memory、spfile、both 7 一个表...

    广州威腾科技针对电信行业的NetBunker解决方案

    为了保证业务的顺利进行和拓展,必须建立一个高可靠性、可用性、可扩展性的数据存储系统,每天的数据库联机热备份使用NetBunker Oracle备份代理,由Oracle备份代理调RMAN(Oracle恢复服务器)进行数据库、表空间等...

    oracle数据库11G初学者指南.Oracle.Database.11g,.A.Beginner's.Guide

    7.1 Oracle备份和恢复基本原理 7.1.1 从何处着手 7.1.2 备份的体系结构 7.1.3 Oracle二进制文件 7.1.4 参数文件 7.1.5 控制文件 7.1.6 重做日志 7.1.7 撤消段 7.1.8 检查点 7.1.9 归档日志 7.1.10 数据文件、表空间...

    ORACLE 常用手册导入导出

    在进行数据库的恢复时,一定要了解Oracle数据库的原理,分析故障的原因,然后针对故障的情况进行相应的恢复。例如以下情况: - Oracle程序文件损坏? - control file损坏? - Online redo log损坏? - datafile...

    Oracle Database 11g初学者指南--详细书签版

    在技术会议和用户组会议上她乐于展现和分享有关Oracle数据库主题的思想.她的Email是michelle_malcher@ioug.org. 目录 封面 -14 封底 -13 扉页 -12 版权 -11 关于作者 -10 前言 -8 目录 -5 第1章 数据库基础 1 1.1 ...

    ORACLE之常用FAQ V1.0(整理)

    [Q]怎么样热备份一个表空间 29 [Q]怎么快速得到整个数据库的热备脚本 30 [Q]丢失一个数据文件,但是没有备份,怎么样打开数据库 30 [Q]丢失一个数据文件,没有备份但是有该数据文件创建以来的归档怎么恢复 30 [Q]...

Global site tag (gtag.js) - Google Analytics