`
itrenzheng
  • 浏览: 25180 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

oracle联机热备份的原理

阅读更多
oracle联机热备份的原理
  要求归档模式

  SQL> archive log list;

  Database log mode Archive Mode

  Automatic archival Enabled

  Archive destination USE_DB_RECOVERY_FILE_DEST

  Oldest online log sequence 14

  Next log sequence to archive 16

  Current log sequence 16

  先看用户管理的热备份

  看看下面这个关键的操作,将备份的内容置于backup模式,用户管理的联机热备份必需的操作,

  不然copy备份的数据文件不能用来恢复,即使用某些放时恢复了也会丢数据

  SQL> alter tablespace users begin backup;

  Tablespace altered.

  SQL> list

  1 select d.file_name filename,d.tablespace_name ts_name,b.status

  2 from dba_data_files d,v$backup b

  3* where d.file_id=b.file#

  SQL> /

  FILENAME TS_NAME STATUS

  /u02/oradata/sales/system01.dbf SYSTEM NOT ACTIVE

  /u02/oradata/sales/undotbs01.dbf UNDOTBS1 NOT ACTIVE

  /u02/oradata/sales/sysaux01.dbf SYSAUX NOT ACTIVE

  /u02/oradata/sales/users01.dbf USERS ACTIVE

  /u02/oradata/sales/example01.dbf EXAMPLE NOT ACTIVE

  /u02/oradata/sales/perfstat.dbf PERFSTAT NOT ACTIVE

  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

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

  NAME TABLESPACE STATUS CHECKPOINT_CHANGE#

  /u02/oradata/sales/system01.dbf SYSTEM ONLINE 545926

  /u02/oradata/sales/undotbs01.dbf UNDOTBS1 ONLINE 545926

  /u02/oradata/sales/sysaux01.dbf SYSAUX ONLINE 545926

  /u02/oradata/sales/users01.dbf USERS ONLINE 545498

  /u02/oradata/sales/example01.dbf EXAMPLE ONLINE 545926

  /u02/oradata/sales/perfstat.dbf PERFSTAT ONLINE 545926

  6 rows selected.

  显然,在将users表空间置于backup状态的时候,相应的datafile的文件头的scn就不会再发生改变,

  发生检查点也不会改变。

  SQL> alter system checkpoint;

  System altered.

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

  NAME TABLESPACE STATUS CHECKPOINT_CHANGE#

  /u02/oradata/sales/system01.dbf SYSTEM ONLINE 546196

  /u02/oradata/sales/undotbs01.dbf UNDOTBS1 ONLINE 546196

  /u02/oradata/sales/sysaux01.dbf SYSAUX ONLINE 546196

  /u02/oradata/sales/users01.dbf USERS ONLINE 545498

  /u02/oradata/sales/example01.dbf EXAMPLE ONLINE 546196

  /u02/oradata/sales/perfstat.dbf PERFSTAT ONLINE 546196

  6 rows selected.

  下面end backup,看看scn

  SQL> alter tablespace users end backup;

  Tablespace altered.

  SQL> alter system checkpoint;

  System altered.

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

  NAME TABLESPACE STATUS CHECKPOINT_CHANGE#

  /u02/oradata/sales/system01.dbf SYSTEM ONLINE 546467

  /u02/oradata/sales/undotbs01.dbf UNDOTBS1 ONLINE 546467

  /u02/oradata/sales/sysaux01.dbf SYSAUX ONLINE 546467

  /u02/oradata/sales/users01.dbf USERS ONLINE 546467

  /u02/oradata/sales/example01.dbf EXAMPLE ONLINE 546467

  /u02/oradata/sales/perfstat.dbf PERFSTAT ONLINE 546467

  6 rows selected.

  再说说rman备份

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

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

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

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

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

  $ rman target sys/oracle nocatalog

  RMAN> run {

  2> allocate channel d1 type disk;

  3> backup

  4> format='/u03/oraclebk/%d_%N_%s.bk' tablespace users;

  5> release channel d1;

  6> }

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

  RMAN> list backup of tablespace users;

  List of Backup Sets

  BS Key Type LV Size Device Type Elapsed Time Completion Time

  3 Full 1M DISK 00:00:02 31-MAR-05

  BP Key: 3 Status: AVAILABLE Compressed: NO Tag: TAG20050331T153729

  Piece Name: /u03/oraclebk/SALES_USERS_4.bk

  List of Datafiles in backup set 3

  File LV Type Ckp SCN Ckp Time Name

  4 Full 546792 31-MAR-05 /u02/oradata/sales/users01.dbf

  恢复的时候应用546792开始到现在的归档日志和重做日志.

  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.

  估计是使用的位图文件做的记录!

  附:

  有兴趣的可以看看dump的数据块

  通过下面的查询找一个表对应的数据块

  SQL> select file_id,block_id,blocks

  2 from dba_extents

  3 where segment_name='EMPLOYEES';

  FILE_ID BLOCK_ID BLOCKS

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

  5 81 8

  dump一个块到udump的trc文件

  SQL> alter system dump datafile 5 block 81;

  System altered.

  在udump目录找到对应的trc文件,找到dump那段

  Start dump data blocks tsn: 6 file#: 5 minblk 81 maxblk 81

  buffer tsn: 6 rdba: 0x01400051 (5/81)

  scn: 0x0000.00086c4d seq: 0x01 flg: 0x04 tail: 0x4b502001

  后面省略了

  scn: 0x0000.00086c4d是16进制你可以换算过来552013

  你可以尝试做一下修改,不过一定要保证对应的块被修改了,并且被写了,才能反映出来。

0
0
分享到:
评论

相关推荐

    oracle双机热备份方法

    Oracle双机热备份是一种高可用性解决方案,它允许在主数据库发生故障时,系统能够快速切换到备用数据库,确保业务连续性。以下是对Oracle双机热备份方法的详细解释: 1. **创建Standby Database的前提条件** - 主...

    oracle联机数据库备份详解

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

    oracle的热备份和冷备份[文].pdf

    "Oracle数据库备份技术" Oracle数据库备份是指在数据库运行或关闭情况下,将数据库文件拷贝到...冷备份和热备份都是Oracle数据库备份的重要方法,每种方法都有其优缺点,选择哪种方法取决于具体的数据库环境和需求。

    oracle冷备份和热备份[文].pdf

    Oracle数据库的备份策略主要包括物理备份和逻辑备份,其中冷备份和热备份是物理备份的两种形式。物理备份涉及的是数据库的实际操作系统文件,而不关注数据的逻辑结构。逻辑备份则是通过SQL语言从数据库中抽取数据并...

    oracle备份手册

    3. RMAN(Recovery Manager)联机热备份:Oracle提供的专门备份工具,可实现高效、可靠的在线备份,支持备份到磁盘、网络或磁带。 4. 使用RMAN的无catalog备份:无需数据库的还原目录,简化备份过程,但恢复时可能...

    Oracle三种备份方式

    本文主要介绍了Oracle数据库的三种标准备份方式:导出/导入(EXP/IMP)、热备份和冷备份。 1. **导出/导入(Export/Import)** 导出是Oracle提供的一种逻辑备份方式,通过工具EXP将数据库中的数据抽取到一个文件中...

    Oracle经典数据库备份手册.pdf

    常见的备份方案包括操作系统脱机冷备份、操作系统联机热备份、使用RMAN联机热备份、使用RMAN增量备份和逻辑备份等。 6. 数据库环境 数据库环境是指数据库运行所需的软硬件环境。包括数据库管理系统、操作系统、...

    oracle数据库的备份与恢复

    2. 热备份(联机备份) 热备份允许在数据库运行时进行,因此无需中断服务,更适用于需要持续运行的环境。但是,热备份需要数据库运行在ARCHIVELOG模式下,这样在日志重用前,Oracle会创建redo日志文件的副本。备份...

    Oracle9i数据库的备份与恢复

    - **热备份恢复**:恢复时,首先恢复最新的数据文件备份,然后应用归档日志文件和联机重做日志文件,以确保数据的一致性和完整性。 #### 增量导出和导入 增量导出是一种针对整个数据库的备份方法,它特别适用于...

    oracle数据库的备份与恢复.docx

    oracle 数据库提供了多种备份方式,包括冷备份、热备份和通过 exp 应用程序备份。 冷备份是最简单直接的备份方式,也称为脱机备份。在进行冷备份时,必须关闭数据库,然后使用操作系统的拷贝命令来完成对数据库的...

    Oracle 数据库的备份与恢复方法

    Oracle 提供了三种主要的备份方法,包括导出/导入、热备份和冷备份,每种方法都有其适用场景和特点。 导出/导入是Oracle数据库的逻辑备份方式。Export工具允许将数据从数据库中抽取出来,而Import工具则负责将这些...

    Oracle 11g R2 Rman备份与恢复_刘耀龙的博客-CSDN博客_rman备份.pdf

    物理备份涉及操作系统的物理文件,包括数据文件、控制文件和日志文件,它可以是脱机(冷备份)或联机(热备份)。而逻辑备份则侧重于数据库逻辑组件,如表、存储过程等。Oracle 提供了多种方式进行逻辑备份,如 EXP ...

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

    #### Oracle 热备份 Oracle 数据库支持多种备份策略,其中包括联机(热)备份。这种备份方式主要用于备份正在使用的数据文件,以及与之相关的重做日志文件。热备份通常包括以下步骤: 1. **准备阶段**:确认数据库...

    Oracle 10g 备份和恢复

    热备份可以利用Oracle的Redo Log,通过归档模式来实现,这样即使在数据库运行时也能保证一致性。而冷备份则通常用于周末或维护窗口,以减少对业务的影响。 恢复过程中,最常见的是单个数据文件的恢复。如果一个数据...

    Oracle数据库容灾备份技术的研究与应用.pdf

    另外,还要注意在热备份时不要备份联机重做日志,而是备份归档日志,并对控制文件进行磁盘镜像。 远程异地备份是大型数据库系统常见的容灾备份方案。其目的是在发生灾难时,保证生产系统的备份系统能在异地被建立和...

    oracle培训教材——备份与恢复以及常用命令

    - **操作系统联机热备份**:使用Oracle的`ALTER TABLESPACE BEGIN/END BACKUP`命令,同时备份数据文件。 - **RMAN(Recovery Manager)备份**:Oracle提供的备份工具,支持热备份、增量备份、多通道备份等多种高级...

Global site tag (gtag.js) - Google Analytics