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. 怎么样编译DeepMind?

    可以通过下面的文章来编译著名的deepmind系统. How to build DeepMind LabDeepMind Lab uses Bazel as its build system. Its ...

  2. postfix邮件服务器搭建01-准备篇

    本系列文章主要介绍linux下主流的开源邮件系统postfix的搭建过程,构建一个通过postfix虚拟用户管理的完整的邮件系统, 该系统包括以下组件: 邮件收发端postfix,dovecot, 邮 ...

  3. Xcode 8 修改项目名

    很麻烦,不想修改了 有个教程,贴一下. From: 大发写字的地方 Xcode8 修改包名(含cocopods)

  4. 【排序】希尔排序,C++实现

    原创博文,转载请注明出处! 本文代码的github地址 # 基本思路       希尔排序是”直接插入排序“的改进版,也称为“缩小增量排序”.基本原理:先将待排序的数组元素分成多个序列,然后对每个子序 ...

  5. 【集成学习】sklearn中xgboost模块中plot_importance函数(绘图--特征重要性)

    直接上代码,简单 # -*- coding: utf-8 -*- """ ################################################ ...

  6. (转)Java获取CLASSPATH路径

    ClassLoader提供了两个方法用于从装载的类路径中取得资源: public URL getResource(String name); public InputStream getResourc ...

  7. BZOJ2705 SDOI2012 Longge的问题 【欧拉函数】

    BZOJ2705 SDOI2012 Longge的问题 Description Longge的数学成绩非常好,并且他非常乐于挑战高难度的数学问题.现在问题来了:给定一个整数N,你需要求出∑gcd(i, ...

  8. Vue生命周期函数详解

    vue实例的生命周期 1 什么是生命周期(每个实例的一辈子) 概念:每一个Vue实例创建.运行.销毁的过程,就是生命周期:在实例的生命周期中,总是伴随着各种事件,这些事件就是生命周期函数: 生命周期: ...

  9. 动态添加 items to PopupMenu

    引用自http://stackoverflow.com/questions/10175140/adding-items-to-popupmenu DevExpress.XtraBars.BarMana ...

  10. cockroachdb 安装试用(单机伪分布式)

    1. 下载 以下地址,选择对应的操作系统版本即可 https://www.cockroachlabs.com/docs/stable/install-cockroachdb.html 2. 启动 // ...