Oracle 热备份是指数据库处于open状态下,对数据库的数据文件、控制文件、参数文件、密码文件等进行一系列备份操作。

热备是基于用户管理备份恢复的一种方式,也是除了RMAN备份之外较为常用的一种备份方式。

一、热备的过程

冻结块头-->控制SCN在备份时不发生变化

进行物理拷贝

解冻块头-->让SCN可以变化(当对SCN解冻后,系统会自动更新SCN至最新的状态)

二、基于数据库的热备

alter database begin backup;

拷贝所有的datafile到备份目录

alter database end backup;

三、基于表空间的热备

alter tablespace tablespace_name begin backup;

拷贝tablespace_name表空间的数据文件到备份目录

alter tablespace tablespace_name end backup;

alter tablespace tablespace_name begin backup时完成的任务

检查点事件发生,检查点通知DBWn将该表空间上所有的脏数据被写入到磁盘

在数据文件头部冻结当前检查点事件发生时的SCN号

所有发生变化数据块的完整镜像(修改前后)被写入到redo log中

允许该表空间内数据的正常读写

建议使用基于表空间的热备,这样将尽可能的减少对系统性能的影响

四、控制文件的热备

alter database backup controlfile to '<dir>' [reuse];          --控制文件的完整备份

alter database backup controlfile to trace as '<dir>'  --用于创建控制文件的语句,丢失了部分信息

控制文件发生变化情况

alter database [add |drop] logfile

alter database [add |drop] logfile member

alter database [add |drop] logfile group

alter database [archivelog |noarchivelog]

alter database rename file

create tablespace

alter tablespace [add | rename] datafile

alter tablespace [read write | read only]

drop tablespace

更多关于控制文件请参考:Oracle 控制文件

五、参数文件的热备

create pfile from spfile ;

create pfile = '<dir>' from spfile;

更多关于参数文件请参考:Oracle 参数文件

六、临时表空间的数据文件、日志文件不需要备份

--查看临时表空间

SQL> select tablespace_name from dba_temp_files;

TABLESPACE_NAME

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

TEMP

--查看临时表空间的数据文件

SQL> select name from v$tempfile;

NAME

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

/u01/app/oracle/oradata/orcl/temp01.dbf

--将临时表空间置为备份模式,收到了错误的提示

SQL> alter tablespace temp begin backup;

alter tablespace temp begin backup

*

ERROR at line 1:

ORA-03217: invalid option for alter of TEMPORARY TABLESPACE

--将临时表空间置为备份模式,收到了错误的提示

SQL> alter temporary tablespace temp begin backup;

alter temporary tablespace temp begin backup

*

ERROR at line 1:

ORA-00940: invalid ALTER command

七、热备脚本

1.基于数据库热备的脚本

SQL> ho cat /tmp/tmphotbak.sql;

set feedback off

set heading off

set verify off

set trimspool off

set pagesize 0

set linesize 200

define dir = '/u01/app/oracle/hotbak'

define script = '/tmp/hotbak.sql'

spool &script

select 'ho cp ' ||name|| ' &dir'  from v$datafile;

spool off

alter database begin backup;

start &script

alter database end backup;

alter database backup controlfile to '&dir/controlbak.ctl';

create pfile = '&dir/initorcl.ora' from spfile;

SQL> start /tmp/tmphotbak.sql;  --执行该脚本即可对数据库进行热备

2.基于表空间热备的脚本

SQL> ho cat /tmp/tmphotbak_tb.sql

set feedback off

set heading off

set verify off

set trimspool off

set pagesize 0

set linesize 200

define dir = '/u01/app/oracle/hotbak'

define script = '/tmp/hotbak_tb.sql'

ho rm &script

ho rm &dir/*

spool &script

select 'alter tablespace '|| tablespace_name ||' begin backup ;' ||

chr(10)||'ho cp ' || file_name || ' &dir ' ||

chr(10)||'alter tablespace '|| tablespace_name || ' end backup;'

from dba_data_files order by tablespace_name;

spool off

start &script

alter database backup controlfile to '&dir/controlbak.ctl';

create pfile = '&dir/initorcl.ora' from spfile;

SQL> start /tmp/tmphotbak.sql;  --执行该脚本即可对数据库基于表空间进行热备

八、备份的相关视图

v$backup

SQL> desc v$backup;

Name                                      Null?    Type

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

FILE#                                              NUMBER

STATUS                                             VARCHAR2(18)

CHANGE#                                            NUMBER   --记录备份时的SCN号

TIME                                               DATE

SQL> select * from v$backup;   --状态为NOT ACTIVE ,此时没有任何数据处于备份状态

FILE# STATUS                CHANGE# TIME

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

1 NOT ACTIVE            1006747 16-AUG-10

2 NOT ACTIVE            1006793 16-AUG-10

3 NOT ACTIVE            1006729 16-AUG-10

4 NOT ACTIVE            1006807 16-AUG-10

5 NOT ACTIVE            1006717 16-AUG-10

SQL> alter tablespace users begin backup;  --对表空间users进行热备

Tablespace altered.

SQL> select * from v$backup;   --对应的file# 为的处于ACTIVE状态

FILE# STATUS                CHANGE# TIME

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

1 NOT ACTIVE            1006747 16-AUG-10

2 NOT ACTIVE            1006793 16-AUG-10

3 NOT ACTIVE            1006729 16-AUG-10

4 ACTIVE                1006852 16-AUG-10

5 NOT ACTIVE            1006717 16-AUG-10

--备份时发生断电或意外故障的恢复

--假定users表空间目前置于begin bakup模式,系统断电

SQL> alter tablespace users begin backup;

Tablespace altered.

--在另一个会话中强制关闭数据库

SQL> shutdown abort;

ORACLE instance shut down.

--启动后收到错误提示

SQL> startup

ORACLE instance started.

Total System Global Area  469762048 bytes

Fixed Size                  1220048 bytes

Variable Size              92275248 bytes

Database Buffers          373293056 bytes

Redo Buffers                2973696 bytes

Database mounted.

ORA-01113: file 4 needs media recovery

ORA-01110: data file 4: '/u01/app/oracle/oradata/orcl/users01.dbf'

--查看备份视图,文件此时处于活动状态

SQL> select * from v$backup;

FILE# STATUS                CHANGE# TIME

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

1 NOT ACTIVE            1006958 16-AUG-10

2 NOT ACTIVE            1006983 16-AUG-10

3 NOT ACTIVE            1006943 16-AUG-10

4 ACTIVE                1007072 16-AUG-10

5 NOT ACTIVE            1006931 16-AUG-10

--使用end backup来终止备份

SQL> alter database datafile 4 end backup;   --此处也可以使用recover datafile 4来完成恢复

Database altered.

SQL> alter database open;

Database altered.

SQL> select * from dual;

D

-

X

转载:http://blog.csdn.net/robinson_0612/article/details/5816012

Oracle 热备份的更多相关文章

  1. oracle热备份

    1:热备份: SHUTDOWN IMMEDIATE; STARTUP MOUNT; alter database archivelog; --ALTER SYSTEM SET LOG_ARCHIVE_ ...

  2. Oracle 热备份batch脚本 Windows

    1.最初来源于网络. 2.根据环境和喜好自己修改. 3.实测是可以完成备份任务的. 4.不推荐用于实际环境. bak.bat:执行时执行此脚本,其他脚本是调用和生成或者生成之后再调用.(需要自己修改先 ...

  3. Oracle数据库冷备份与热备份操作梳理

    Oracle数据库的备份方式有冷备份和热备份两种,针对这两种备份的实施过程记录如下: 一.Oracle冷备份 概念数据库在关闭状态下完成所有物理系统文件拷贝的过程,也称脱机备份.适合于非归档模式(即n ...

  4. Oracle 数据库日常巡检

    1. 检查数据库基本状况 包含:检查Oracle实例状态,检查Oracle服务进程,检查Oracle监听进程,共三个部分. 1.1. 检查Oracle实例状态 select instance_name ...

  5. Linux 下 Oracle 内核参数优化

    数据库的性能优化涉及到整个数据库运行环境的方方面面,诸如操作系统,Oracle自身,存储,网络等等几个大块.而操作系统则是Oracle稳定运行与最大化性能的基石.本文主要描述基于Linux系统下 Or ...

  6. Oracle数据库的备份方法

    1.引言 Oracle数据库的备份方法很多,无论使用那种备份方法,备份的目的都是为了在出现故障后能够以尽可能小的时间和代价恢复系统.比如使用export实用程序导出数据库对象.使用Oracle备份数据 ...

  7. Oracle 闪回特性(FLASHBACK DATABASE)

    --===================================== -- Oracle 闪回特性(FLASHBACK DATABASE) --======================= ...

  8. Oracle RMAN 清除归档日志

    在开发环境及UAT环境经常碰到需要清除归档日志的情形,对于这个问题方法有很多.可以直接使用rm方式清除归档日志,也可以使用find命令来查找符合条件的记录来清除归档日志,或者直接写个shell脚本来搞 ...

  9. Oracle Linux 6.3下安装Oracle 11g R2(11.2.0.3)

    本文主要描写叙述了在Oracle Linux 6.3下安装Oracle 11gR2(11.2.0.3).从Oracle 11g開始,Oracle官方站点不再提供其Patch的下载链接,须要使用Meat ...

随机推荐

  1. 解如何利用 XML 和 JavaScript Object Notation 在 Ajax 客户端和 Java 服务器之间传输数据(代码)(Oracle)。

    ---------------------------------ajaxUtil----------------------------------------------------------- ...

  2. Spring核心概念(一)

    1.解决JavaEE的轻量级框架. 2.环境搭建 第一步:导入spring的jar包 第二步:导入配置文件(一般写在resource下面) 第三步:创建一个类(bean) 第四步:在主配置文件中注入这 ...

  3. [Linux] 输出文件的指定行

    1.获取第k行(以k=10为例) 要注意的是,如果文件包含内容不足10行,应该不输出. # Read from the file file.txt and output the tenth line ...

  4. GCD基础

    一.GCD介绍 1.what is GCD? Grand Central Dispatch 中枢调度器.用很简单的方式实现了极为复杂繁琐的多线程编程.异步执行任务的技术之一.   2.GCD存在于li ...

  5. 51nod 1600 Simple KMP【后缀自动机+LCT】【思维好题】*

    Description 对于一个字符串|S|,我们定义fail[i],表示最大的x使得S[1..x]=S[i-x+1..i],满足(x<i) 显然对于一个字符串,如果我们将每个0<=i&l ...

  6. 携程 决赛 第一题 Crossword

    //真是郁闷的一晚上//比赛时看到这题是就感觉会做,感觉思路清晰 就去准备找第二题 ,因为感觉第二题是个经典问题,(我不会计算几何),就去搜索了下,然后找到求最小面积的,改来改去,一直Wa// 然后就 ...

  7. python笔记-20 django进阶 (model与form、modelform对比,三种ajax方式的对比,随机验证码,kindeditor)

    一.model深入 1.model的功能 1.1 创建数据库表 1.2 操作数据库表 1.3 数据库的增删改查操作 2.创建数据库表的单表操作 2.1 定义表对象 class xxx(models.M ...

  8. python笔记-8(logging模块、re模块、栈与队列)

    一.Logging模块日志 1.logging导入 Import logging 2.知道5个日志级别的等级关系 Debug->info->warning->error->cr ...

  9. python3.x 类和对象

    python同样支持类和对象.在python3.x中没有了经典类,只有新式类,默认创建的就是新式类.具体的新式类与经典类的不同在python3.x中已经没有意义了. 类的定义和实例化 python定义 ...

  10. Windows10安装MySQL8.0

    1.到MySQL官网下载安装包:https://dev.mysql.com/downloads/mysql/:选择8.0版本: 2.将下载好的安装包(mysql-8.0.12-winx64 .zip) ...