一、 什么是热备份

    热备份也叫联机备份,它是指数据库处于open状态下,对数据库的数据文件、控制文件、参数文件、密码文件等进行一系列备份操作(其中数据文件是必须备份的)。

    它要求数据库处在归档模式下。

    在热备时,是可以进行DML操作的

二、 热备的过程

    冻结块头-->控制SCN在备份时不发生变化,并产生检查点,发生在置于备份状态的时候

     进行物理拷贝

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

三、 需要注意的问题

  由于数据文件处于备份状态时重做日志后台进程要将这些文件的所有的变化数据块写到重做日志文件中,这对重做日志缓冲区和重做日志文件的压力都增大了,所以需要注意几下加点:

  •   重做日志缓冲区和重做日志文件适当增大
  •   在联机备份时,每次只备份一个表空间
  •   在DML最少的时候做备份

四、 几种不同的热备方式

1、 基于表空间的热备

  --查询表空间的名字和状态

SQL> select file_id,tablespace_name,status from dba_data_files; 

   FILE_ID TABLESPACE_NAME          STATUS
---------- ------------------------------ ---------
4 USERS AVAILABLE
3 UNDOTBS1 AVAILABLE
2 SYSAUX AVAILABLE
1 SYSTEM AVAILABLE
5 COSTCTL_TBS AVAILABLE
6 DEV_DATA AVAILABLE
7 PDMS_DATA AVAILABLE 已选择7行。

  --开始备份,将会

SQL> alter tablespace PDMS_DATA  begin backup;

表空间已更改。

  --拷贝数据文件到指定的备份磁盘上

SQL> host cp /opt/oracle/app/oradata/pdms/PDMS_DATA.dbf /u03/backup/hotbak

  --查看所有数据文件的备份状态

SQL> select * from v$backup;

     FILE# STATUS         CHANGE# TIME
---------- ------------------ ---------- --------------
1 NOT ACTIVE 0
2 NOT ACTIVE 0
3 NOT ACTIVE 0
4 NOT ACTIVE 0
5 NOT ACTIVE 0
6 NOT ACTIVE 0
7 ACTIVE 12657642 15-12月-16

  --将表空间重新设置为非备份状态

SQL> alter tablespace PDMS_DATA end backup;

表空间已更改。

  --查看备份状态

SQL> select * from v$backup;

     FILE# STATUS         CHANGE# TIME
---------- ------------------ ---------- --------------
1 NOT ACTIVE 0
2 NOT ACTIVE 0
3 NOT ACTIVE 0
4 NOT ACTIVE 0
5 NOT ACTIVE 0
6 NOT ACTIVE 0
7 NOT ACTIVE 12657642 15-12月-16 已选择7行。

2. 基于数据库的热备

  alter database begin backup;

拷贝所有的datafile到备份目录

alter database end backup;

3. 控制文件的热备

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

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

SQL> alter database backup controlfile to '/u03/backup/hotbak/control01.ctl';

数据库已更改。

SQL> alter database backup controlfile to trace as '/u03/backup/hotbak/control02.ctl';

数据库已更改。

查control02.ctl

-- The following are current System-scope REDO Log Archival related
-- parameters and can be included in the database initialization file.
--
-- LOG_ARCHIVE_DEST=''
-- LOG_ARCHIVE_DUPLEX_DEST=''
--
-- LOG_ARCHIVE_FORMAT=%t_%s_%r.dbf
--
-- DB_UNIQUE_NAME="dbsrv1"
--
-- LOG_ARCHIVE_CONFIG='SEND, RECEIVE, NODG_CONFIG'
-- LOG_ARCHIVE_MAX_PROCESSES=3
-- STANDBY_FILE_MANAGEMENT=MANUAL
-- STANDBY_ARCHIVE_DEST=?/dbs/arch
-- FAL_CLIENT=''
-- FAL_SERVER=''
--
-- LOG_ARCHIVE_DEST_3='LOCATION=/u03/ARCHLOG/'
-- LOG_ARCHIVE_DEST_3='OPTIONAL REOPEN=300 NODELAY'
-- LOG_ARCHIVE_DEST_3='ARCH NOAFFIRM NOEXPEDITE NOVERIFY SYNC'
-- LOG_ARCHIVE_DEST_3='REGISTER NOALTERNATE NODEPENDENCY'
-- LOG_ARCHIVE_DEST_3='NOMAX_FAILURE NOQUOTA_SIZE NOQUOTA_USED NODB_UNIQUE_NAME'
-- LOG_ARCHIVE_DEST_3='VALID_FOR=(PRIMARY_ROLE,ONLINE_LOGFILES)'
-- LOG_ARCHIVE_DEST_STATE_3=ENABLE
--
-- LOG_ARCHIVE_DEST_2='LOCATION=/u02/ARCHLOG/'
-- LOG_ARCHIVE_DEST_2='OPTIONAL REOPEN=300 NODELAY'
-- LOG_ARCHIVE_DEST_2='ARCH NOAFFIRM NOEXPEDITE NOVERIFY SYNC'
-- LOG_ARCHIVE_DEST_2='REGISTER NOALTERNATE NODEPENDENCY'
-- LOG_ARCHIVE_DEST_2='NOMAX_FAILURE NOQUOTA_SIZE NOQUOTA_USED NODB_UNIQUE_NAME'
-- LOG_ARCHIVE_DEST_2='VALID_FOR=(PRIMARY_ROLE,ONLINE_LOGFILES)'
-- LOG_ARCHIVE_DEST_STATE_2=ENABLE
--
-- LOG_ARCHIVE_DEST_1='LOCATION=/u01/ARCHLOG/'
-- LOG_ARCHIVE_DEST_1='MANDATORY REOPEN=300 NODELAY'
-- LOG_ARCHIVE_DEST_1='ARCH NOAFFIRM NOEXPEDITE NOVERIFY SYNC'
-- LOG_ARCHIVE_DEST_1='REGISTER NOALTERNATE NODEPENDENCY'
-- LOG_ARCHIVE_DEST_1='NOMAX_FAILURE NOQUOTA_SIZE NOQUOTA_USED NODB_UNIQUE_NAME'
-- LOG_ARCHIVE_DEST_1='VALID_FOR=(PRIMARY_ROLE,ONLINE_LOGFILES)'
-- LOG_ARCHIVE_DEST_STATE_1=ENABLE --
-- Below are two sets of SQL statements, each of which creates a new
-- control file and uses it to open the database. The first set opens
-- the database with the NORESETLOGS option and should be used only if
-- the current versions of all online logs are available. The second
-- set opens the database with the RESETLOGS option and should be used
-- if online logs are unavailable.
-- The appropriate set of statements can be copied from the trace into
-- a script file, edited as necessary, and executed when there is a
-- need to re-create the control file.
--
-- Set #1. NORESETLOGS case
--
-- The following commands will create a new control file and use it
-- to open the database.
-- Data used by Recovery Manager will be lost.
-- Additional logs may be required for media recovery of offline
-- Use this only if the current versions of all online logs are
-- available. -- After mounting the created controlfile, the following SQL
-- statement will place the database in the appropriate
-- protection mode:
-- ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "DBSRV1" NORESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/opt/oracle/app/oradata/dbsrv1/redo01.log' SIZE 50M BLOCKSIZE 512,
GROUP 2 '/opt/oracle/app/oradata/dbsrv1/redo02.log' SIZE 50M BLOCKSIZE 512,
GROUP 3 '/opt/oracle/app/oradata/dbsrv1/redo03.log' SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE DATAFILE
'/opt/oracle/app/oradata/dbsrv1/system01.dbf',
'/opt/oracle/app/oradata/dbsrv1/sysaux01.dbf',
'/opt/oracle/app/oradata/dbsrv1/undotbs01.dbf',
'/opt/oracle/app/oradata/dbsrv1/users01.dbf',
'/opt/oracle/app/oradata/costctl/COSTCTL_TBS.dbf',
'/opt/oracle/app/oradata/dbsrv1/DEV_DATA.DBF',
'/opt/oracle/app/oradata/pdms/PDMS_DATA.dbf'
CHARACTER SET AL32UTF8
; -- Commands to re-create incarnation table
-- Below log names MUST be changed to existing filenames on
-- disk. Any one log file from each branch can be used to
-- re-create incarnation records.
-- ALTER DATABASE REGISTER LOGFILE '/u03/ARCHLOG/1_1_694916203.dbf';
-- ALTER DATABASE REGISTER LOGFILE '/u03/ARCHLOG/1_1_917304775.dbf';
-- Recovery is required if any of the datafiles are restored backups,
-- or if the last shutdown was not normal or immediate.
RECOVER DATABASE -- All logs need archiving and a log switch is needed.
ALTER SYSTEM ARCHIVE LOG ALL; -- Database can now be opened normally.
ALTER DATABASE OPEN; -- Commands to add tempfiles to temporary tablespaces.
-- Online tempfiles have complete space information.
-- Other tempfiles may require adjustment.
ALTER TABLESPACE TEMP ADD TEMPFILE '/opt/oracle/app/oradata/dbsrv1/temp01.dbf'
SIZE 38797312 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
ALTER TABLESPACE COSTCTL_TBS_TEMP ADD TEMPFILE '/opt/oracle/app/oradata/costctl/COSTCTL_TBS_temp.dbf'
SIZE 524288000 REUSE AUTOEXTEND ON NEXT 8192 MAXSIZE 32767M;
ALTER TABLESPACE PDMS_DATA_TEMP ADD TEMPFILE '/opt/oracle/app/oradata/pdms/PDMS_DATA_TEMP.dbf'
SIZE 524288000 REUSE AUTOEXTEND ON NEXT 8192 MAXSIZE 32767M;
-- End of tempfile additions.
--
-- Set #2. RESETLOGS case
--
-- The following commands will create a new control file and use it
-- to open the database.
-- Data used by Recovery Manager will be lost.
-- The contents of online logs will be lost and all backups will
-- be invalidated. Use this only if online logs are damaged. -- After mounting the created controlfile, the following SQL
-- statement will place the database in the appropriate
-- protection mode:
-- ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "DBSRV1" RESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/opt/oracle/app/oradata/dbsrv1/redo01.log' SIZE 50M BLOCKSIZE 512,
GROUP 2 '/opt/oracle/app/oradata/dbsrv1/redo02.log' SIZE 50M BLOCKSIZE 512,
GROUP 3 '/opt/oracle/app/oradata/dbsrv1/redo03.log' SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE DATAFILE
'/opt/oracle/app/oradata/dbsrv1/system01.dbf',
'/opt/oracle/app/oradata/dbsrv1/sysaux01.dbf',
'/opt/oracle/app/oradata/dbsrv1/undotbs01.dbf',
'/opt/oracle/app/oradata/dbsrv1/users01.dbf',
'/opt/oracle/app/oradata/costctl/COSTCTL_TBS.dbf',
'/opt/oracle/app/oradata/dbsrv1/DEV_DATA.DBF',
'/opt/oracle/app/oradata/pdms/PDMS_DATA.dbf'
CHARACTER SET AL32UTF8
; -- Commands to re-create incarnation table
-- Below log names MUST be changed to existing filenames on
-- disk. Any one log file from each branch can be used to
-- re-create incarnation records.
-- ALTER DATABASE REGISTER LOGFILE '/u03/ARCHLOG/1_1_694916203.dbf';
-- ALTER DATABASE REGISTER LOGFILE '/u03/ARCHLOG/1_1_917304775.dbf';
-- Recovery is required if any of the datafiles are restored backups,
-- or if the last shutdown was not normal or immediate.
RECOVER DATABASE USING BACKUP CONTROLFILE -- Database can now be opened zeroing the online logs.
ALTER DATABASE OPEN RESETLOGS; -- Commands to add tempfiles to temporary tablespaces.
-- Online tempfiles have complete space information.
-- Other tempfiles may require adjustment.
ALTER TABLESPACE TEMP ADD TEMPFILE '/opt/oracle/app/oradata/dbsrv1/temp01.dbf'
SIZE 38797312 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
ALTER TABLESPACE COSTCTL_TBS_TEMP ADD TEMPFILE '/opt/oracle/app/oradata/costctl/COSTCTL_TBS_temp.dbf'
SIZE 524288000 REUSE AUTOEXTEND ON NEXT 8192 MAXSIZE 32767M;
ALTER TABLESPACE PDMS_DATA_TEMP ADD TEMPFILE '/opt/oracle/app/oradata/pdms/PDMS_DATA_TEMP.dbf'
SIZE 524288000 REUSE AUTOEXTEND ON NEXT 8192 MAXSIZE 32767M;
-- End of tempfile additions.
--

4. 参数文件的热备

  create pfile from spfile ;

create pfile = '<dir>' from spfile;

SQL> create pfile = '/u03/backup/hotbak/initdbsrv1.ora' from spfile;

文件已创建。

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

五、热备脚本

基于表空间的热备(推荐使用这种方式)

vim hotbak.sql

set feedback off
set heading off
set verify off
set trimspool off
set pagesize 0
set linesize 200
define dir = '/u03/backup/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/initdbsrv1.ora' from spfile;

其中char(10)表示换行,红色部分需要自行修改

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

基于数据库(数据文件)的热备

vim hotbak.sql

set feedback off
set heading off
set verify off
set trimspool off
set pagesize 0
set linesize 200
define dir = '/u03/backup/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/initdbsrv1.ora' from spfile;

Oracle的热备份的更多相关文章

  1. 转 oracle的热备份和冷备份

    一.冷备份介绍:    冷备份数据库是将数据库关闭之后备份所有的关键性文件包括数据文件.控制文件.联机REDO LOG文件,将其拷贝到另外的位置.此外冷备份也可以包含对参数文件和口令文件的备份,但是这 ...

  2. oracle的热备份和冷备份

    一.冷备份介绍:    冷备份数据库是将数据库关闭之后备份所有的关键性文件包括数据文件.控制文件.联机REDO LOG文件,将其拷贝到另外的位置.此外冷备份也可以包含对参数文件和口令文件的备份,但是这 ...

  3. 【转】oracle数据库开发的一些经验积累

    1.不安装Oracle客户连接Oracle 8的方法  请将以下文件拷贝到运行文件所在目录 一.ODBC动态库 : ctl3d32.dll msvcrt40.dll odbc16gt.dll odbc ...

  4. 1.4 配置备份策略(Policy)

    1.1 配置备份策略(Policy) 一个备份策略由四部分组成. Attributes(属性) Policy是否Active Policy类型 由此Policy产生的任务的优先级 使用的Storage ...

  5. 1.4 NBU配置备份策略(Policy)

    1.4 配置备份策略(Policy) 一个备份策略由四部分组成. Attributes(属性) Policy是否Active Policy类型 由此Policy产生的任务的优先级 使用的Storage ...

  6. SYSTEM 表空间管理及备份恢复

    标签: systemoraclesqldatabasefile数据库 2010-11-28 18:14 12689人阅读 评论(0) 收藏 举报 分类: -----Oracle备份恢复(16) 版权声 ...

  7. Oracle基础 物理备份 冷备份和热备份(转)

    一.冷备份介绍:    冷备份数据库是将数据库关闭之后备份所有的关键性文件包括数据文件.控制文件.联机REDO LOG文件,将其拷贝到另外的位置.此外冷备份也可以包含对参数文件和口令文件的备份,但是这 ...

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

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

  9. Oracle备份恢复之热备份恢复及异机恢复

    原理: 数据库必须运行在归档模式下,否则备份没有意义.备份前冻结块头,使scn号不变化,然后cp物理文件,最后解冻块头.此过程dml语句可以正常执行,动作被写在日志文件里面,当解冻scn号后,日志文件 ...

随机推荐

  1. linux crontab定时执行

    #利用crontab定时执行url研究了两种简单方式#一利用lynx访问url yum install lynxservice crond startcrontab -einsert键* * * * ...

  2. Browser对象

    Window对象即浏览器中打开的窗口,当文档里面有框架(frame或者iframe标签)时,浏览器会为HTML文档创建一个window对象,并为每个框架创建一个额外的window对象. 属性close ...

  3. python怎么装模块

    windows下 最简单的方法: File---Settings--Project  ---Project Interpreter 下----点击 +号,输入你需要安装的模块名,点击Install P ...

  4. linux终端拖动鼠标总是产生ctrl+c

    是因为有道词典,打开有道词典设置,取消勾选取词划词里面的所有框框

  5. Android Webview实现文件下载功能

        在做美图欣赏Android应用的时候,其中有涉及到Android应用下载的功能,这个应用本身其实也比较简单,就是通过WebView控制调用相应的WEB页面进行展示.刚开始以为和普通的文件下载实 ...

  6. csharp通过dll调用opencv函数,图片作为参数

    [blog 项目实战派]csharp通过dll调用opencv函数,图片作为参数          ​一直想做着方面的研究,但是因为这个方面的知识过于小众,也是由于自己找资料的能力比较弱,知道今天才找 ...

  7. 最流行的编程语言JavaScript能做什么?

    本文转自互联网! 首先很遗憾的一点是,"PHP虽然是最好的语言",但是它不是最流行的语言. 对不起的还有刚刚在4月TIOBE编程语言排行榜上榜的各个语言: 你们都很棒,但是你们都担 ...

  8. uml中定义的关系详细详解

    uml定义的关系主要有六种:依赖.类属.关联.实现.聚合和组合.下面对其定义和表示方法逐一说明. 依赖(Dependency):元素A的变化会影响元素B,但反之不成立,那么B和A的关系是依赖关系,B依 ...

  9. WPF调用office2010的ppt出错

      各位热爱WPF编程小伙伴不可避免的会遇到将ppt嵌入到自己编写的软件,可是有时候会遇到错误,此错误值出现在卸载office2013并安装其他版本office时候会出现.这是由于某些机器上offic ...

  10. AJAX文档

    AJAX 文档 AJAX开发简略.................................................................................... ...