`

Oracle热备份

阅读更多

Oracle 版本:9i、10g
1、        进行热备份的要求?
热备份是一种数据库的处于打开时的物理备份,因为数据库在不断发生改变,因此备份的文件必然是不一致的,这就要求数据库必须处于归档日志模式。

2、        热备份的一般流程?
        查看数据库是否处于归档日志模式,若不是将数据库置为归档日志模式。
Rem check the archived mode
Archive log list;
Rem if not archivelog mode issue the following statements
Shutdown immediate;
Startup mount;
Alter database archivelog;
Alter database open;
        查看当前的归档日志情况确认已归档
Archive log list;
        将表空间置为热备份模式(以users 表空间为例)
Alter tablespace users begin backup;
        物理拷贝数据文件
Rem for windows
Sql> host copy c:\oracle\ora92\user01.dbf d:\oracle\hotbackup;
Rem for linux/unix
Sql>host cp  /oracle/ora92/user01.dbf  /oracle/oracle92/user01.dbf
        结束表空间的热备份模式
Alter tablespace users end backup;
        相同方法备份其他表空间(read only 和 offline 表空间不能置为热备份模式)
        备份二进制的控制文件
Alter system backup control file to 'd:\oracle\hotback\controlfile.ctl' reuse;
Rem reuse 表示当文件存在时覆盖。

3、        开始热备份时发生什么?
        执行一个checkpoint 将所有dirty data 写入文件(保证热备份开始前文件是一致的)
        锁定文件头的checkpoint scn,但是数据库的改变可以正常进行。
        在alert文件中增加一条记录

4、        热备份时相关SCN 如何处理?
在开始进行热备份时,数据文件头的checkpoint scn 和控制文件中该文件的scn lock住,但是数据文件的dml操作可以正常进行,也就意味着block 的scn 是正常增加的,数据文件并没有锁定。为什么要Lock 文件的checkpoint scn(实际上对应了恢复时的rba) 主要是为了标示进行恢复操作时需要的redo log,这样就可以保证数据文件内所有的块都能得到恢复,因为在进行数据文件拷贝时无法保证数据文件头是最先拷贝完成的。如果先拷贝的是数据文件的其他部分然后才去拷贝的数据文件头,这时候很有可能数据文件头的checkpoint scn已经改变了而恢复时应用redo log的范围是由数据文件头的rba决定的。
当热备份结束时,在备份结束的时候,oracle会把数据文件头和control文件中关于这个数据文件的SCN号更新为数据库的SCN号。

5、        为什么热备份时产生的redo大量增加?
首先说下造成大量增加的直接原因吧,因为数据文件在进行热备份时,该数据文件中的处于data buffer中数据块在首次发生改变时oracle会把整块的block  image 写入redo log。注意该处首次改变是对处于buffer中的数据块而言的,而不是文件中的block,例如对于datafile1 的第20个块:
File ---data buffer 从文件中读入db buffer
Data buffer-----change  产生block image to redo log
Data buffer ------change  不产生blcok image 而是正常的change vector
Data buffer ----file  从db buffer 写入文件
File ----data buffer  又从文件中读入db buffer
Data buffer-----change   再次产生block image to redo log
Data buffer ------change  不产生blcok image 而是正常的change vector

之所以要存储block image主要是为了处理由于oracle 的block size 和操作系统的block size 不一致而可能造成的split block(指数据块不一致)。热备份中我们用的是操作系统命令copy or cp 来拷贝数据文件,这些命令操作的块大小都是由操作系统决定的而操作系统块和数据库块大小一般不相同。如果当数据库块在改变的同时在进行拷贝,就很有可能造成拷贝的数据块不一致(其中一部份改变前拷贝的一部分是改变后拷贝的)。Oracle 在恢复时将split block 当成是currption block,这时就需要redo log中的block image覆盖现有块来进行恢复

6、        Rman备份为什么不用锁文件头scn,不增加redo?
锁文件头scn只是为了可以正确标示恢复时的rba,热备份方式中这个rba需要从备份的数据文件本身获取,而rman方式将其写入了controlfile 或catalog,所以不用锁文件头。
Rman 在备份时需要使用两个缓冲区一个输入缓冲区,一个输出缓冲区。数据块在从输入缓冲区传送到输出缓冲区时会进行一致性校验,不一致时会重新读取直到一致。所以rman备份的文件数据块级都是一致的,不需要block image。
(两个缓冲区默认在pga中如果设置了io_slave 会在larger pool 中。)

7、        热备份过程中发生crash如何恢复?(以users 表空间 user01.dbf  file# 9 为例)
如果在热备份的过程中发生crash在startup时会报:ORA-01113文件9需要恢复。
有两种方式可以解决这个问题:
1、        alter tablespace users end backup;
2、        recover datafile 9;
因为这时报的错误和restore了一个文件后需要恢复时一样的,所以在确定是没有end backup时用第一种方法否则应该用第二种。

8、        热备份恢复相关视图?
v$recover_file:需要恢复的文件
v$recover_log:需要应用的归档日志
x$kcvfh :可以查看各个文件的rba

9、        热备份相关脚本?(备份脚本)
set linesize 800 verify off pagesize 0 feedback off
define dir='c:\oracle\admin\hotback\2008-10-26'
define log='c:\oracle\admin\hotback\2008-10-26\bklog.txt'
define fil='c:\oracle\admin\sqlsheet\bkdatafile.sql'
set serveroutput on
spool &fil
prompt spool &log
prompt archive log list;;
prompt alter system switch logfile;;
declare
cursor c_tbs is select tablespace_name tbsname from dba_tablespaces where status='ONLINE';
cursor c_datafile(tn varchar2) is select file_name from dba_data_files where tablespace_name=tn;
begin
for row_tbs in c_tbs loop
dbms_output.put_line('alter tablespace '||row_tbs.tbsname||' begin backup;');
for row_file in c_datafile(row_tbs.tbsname) loop
   dbms_output.put_line('host copy '||row_file.file_name||' &dir;');
end loop;
dbms_output.put_line('alter tablespace '||row_tbs.tbsname||' end backup;');
end loop;
end;
/
prompt alter system switch logfile;;
prompt alter database backup controlfile to '&dir\controfile.ctl';;
prompt archive log list;;
prompt spool off;;
spool off;
@&fil

10、        当归档日志文件不在默认位置时如何处理?
我们在进行热备份恢复时需要的归档日志文件很有可能从默认的归档位置移走了,在恢复时要一个一个指定归档日志位置很麻烦,可以使用以下方式解决。
        Recover from 'new_dir' datafile 9;  -- 该方法我试了下不行,好像已被oracle废除
        Set logsource  'new_dir'   --注意没有"="
Recover datafile 9;

<!-- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"> <rdf:Description rdf:about="http://localhost:8082/pages/viewpage.action?pageId=688162" dc:identifier="http://localhost:8082/pages/viewpage.action?pageId=688162" dc:title="Oracle热备份" trackback:ping="http://localhost:8082/rpc/trackback/688162" /> </rdf:RDF> --><!-- Root decorator: this is a layer of abstraction that Confluence doesn't need. It will be removed eventually. -->
分享到:
评论

相关推荐

    Oracle热备份脚本

    Oracle热备份脚本是数据库管理员在日常运维中常用的一种工具,尤其在Windows环境下,通过批处理(bat)文件实现自动化,能够大大提高工作效率并确保数据的安全性。本文将详细讲解Oracle热备份的概念、重要性,以及...

    oracle热备份原理分析

    Oracle热备份原理分析 在数据库管理领域,Oracle数据库系统因其高效稳定而被广泛使用。为了保障数据的安全性和可用性,数据库备份是至关重要的环节。Oracle热备份,也称为在线备份,是在数据库运行状态下进行的一种...

    oracle热备份

    Oracle热备份是一种在数据库运行状态下进行的备份方法,它允许你在不影响用户操作的情况下获取数据库的完整备份。这种备份策略在数据库系统中至关重要,因为它确保了业务连续性,减少了因备份而产生的停机时间。 ...

    oracle热备份代码

    1、制作日志镜像,以备还原 2、control_files加镜像 3、冷备份(数据会丢失,目录结构也需相同) 4、热备份(前提,开启日志模式)

    oracle的冷备份和热备份方法介绍

    本文主要介绍了Oracle数据库的两种物理备份方式:冷备份和热备份。 冷备份是一种简单且快速的数据保护策略,它在数据库完全关闭的状态下进行。这种备份方式提供了对数据库完整性的保证,因为所有数据文件都在一致的...

    oracle数据库热备恢复手册

    Oracle 热备份恢复手册 本文档旨在模拟测试 Oracle 热备份的各种恢复情况,并为以后工程人员提供实施借鉴。文档记录了各种恢复的情况,以方便恢复时使用。 知识点一:Undo 表空间恢复 * 当Undo 表空间数据文件...

    oracle的冷热备份

    热备份是在数据库正常运行的情况下进行的数据备份,主要通过Oracle的归档日志功能实现。这种方式可以在不影响业务的情况下进行备份,非常适合在线环境。 - **优点**: - 可以在数据库正常运行时进行备份,不影响...

    ORACLE 基于时间点热备份

    ### ORACLE 基于时间点热备份 #### 概述 在数据库管理与维护过程中,备份是一项极其重要的任务,特别是在企业级应用中,确保数据的安全性和可用性至关重要。Oracle数据库提供了多种备份策略来满足不同场景的需求。...

    oracle双机热备份方法

    oracle双机热备份方法oracle双机热备份方法oracle双机热备份方法

    oracle备份

    比如使用export实用程序导出数据库对象、使用Oracle备份数据库、使用Oracle对称复制、使用Oracle并行服务器、使用Oracle冷备份、使用Oracle热备份等各种备份方法都有其优缺点、适用的场合和相应的软硬件要求。...

    oracle的数据备份与恢复

    通过阅读`oracle数据恢复.txt`、`oracle热备份步骤.txt`和`oracle冷备份步骤.txt`,你可以更深入地理解并掌握这些关键概念和实践技巧,从而确保你的Oracle数据库在面对数据丢失或系统故障时能够迅速恢复,保持业务...

    Oracle 冷备份与热备份的区别

    ### Oracle冷备份与热备份的区别 #### 物理备份与逻辑备份的概念 在数据库领域,备份是一项非常重要的工作,它可以确保在系统发生故障时能够快速恢复数据,减少数据丢失的风险。Oracle作为一款广泛使用的数据库管理...

    ORACLE备份&恢复案例

    在IT领域,数据库管理是至关重要的,而Oracle作为全球广泛使用的数据库系统,其备份与恢复策略对于企业数据安全起着核心作用。这篇“ORACLE备份&恢复案例”着重探讨了如何在Oracle环境中有效地进行数据备份并执行...

    Oracle备份

    Oracle热备份是数据库管理系统Oracle中的一种重要备份策略,它允许在数据库处于运行(open)状态下进行数据文件、控制文件、参数文件等关键组件的备份,从而确保即使在系统运行过程中也能实现数据保护。热备份的优点...

    oracle冷备份和热备份

    Oracle数据库的备份是确保数据安全和业务连续性的重要环节,主要分为冷备份和热备份两种方式。 冷备份是在数据库正常关闭的状态下进行的,这意味着在备份期间,数据库必须是不工作的。这种备份方法非常快速,因为只...

    Oracle数据库四种备份方法优缺点.pdf

    Oracle 数据库提供了多种备份方法,包括冷备份、热备份、EXP 数据库导出和 EXPDP 数据泵技术等。每种备份方法都有其优缺点和适用场合。 1. Oracle 冷备份 Oracle 冷备份是指在数据库关闭的情况下,使用拷贝的...

Global site tag (gtag.js) - Google Analytics