Oracle的热备份
一、 什么是热备份
热备份也叫联机备份,它是指数据库处于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的热备份的更多相关文章
- 转 oracle的热备份和冷备份
一.冷备份介绍: 冷备份数据库是将数据库关闭之后备份所有的关键性文件包括数据文件.控制文件.联机REDO LOG文件,将其拷贝到另外的位置.此外冷备份也可以包含对参数文件和口令文件的备份,但是这 ...
- oracle的热备份和冷备份
一.冷备份介绍: 冷备份数据库是将数据库关闭之后备份所有的关键性文件包括数据文件.控制文件.联机REDO LOG文件,将其拷贝到另外的位置.此外冷备份也可以包含对参数文件和口令文件的备份,但是这 ...
- 【转】oracle数据库开发的一些经验积累
1.不安装Oracle客户连接Oracle 8的方法 请将以下文件拷贝到运行文件所在目录 一.ODBC动态库 : ctl3d32.dll msvcrt40.dll odbc16gt.dll odbc ...
- 1.4 配置备份策略(Policy)
1.1 配置备份策略(Policy) 一个备份策略由四部分组成. Attributes(属性) Policy是否Active Policy类型 由此Policy产生的任务的优先级 使用的Storage ...
- 1.4 NBU配置备份策略(Policy)
1.4 配置备份策略(Policy) 一个备份策略由四部分组成. Attributes(属性) Policy是否Active Policy类型 由此Policy产生的任务的优先级 使用的Storage ...
- SYSTEM 表空间管理及备份恢复
标签: systemoraclesqldatabasefile数据库 2010-11-28 18:14 12689人阅读 评论(0) 收藏 举报 分类: -----Oracle备份恢复(16) 版权声 ...
- Oracle基础 物理备份 冷备份和热备份(转)
一.冷备份介绍: 冷备份数据库是将数据库关闭之后备份所有的关键性文件包括数据文件.控制文件.联机REDO LOG文件,将其拷贝到另外的位置.此外冷备份也可以包含对参数文件和口令文件的备份,但是这 ...
- Oracle数据库冷备份与热备份操作梳理
Oracle数据库的备份方式有冷备份和热备份两种,针对这两种备份的实施过程记录如下: 一.Oracle冷备份 概念数据库在关闭状态下完成所有物理系统文件拷贝的过程,也称脱机备份.适合于非归档模式(即n ...
- Oracle备份恢复之热备份恢复及异机恢复
原理: 数据库必须运行在归档模式下,否则备份没有意义.备份前冻结块头,使scn号不变化,然后cp物理文件,最后解冻块头.此过程dml语句可以正常执行,动作被写在日志文件里面,当解冻scn号后,日志文件 ...
随机推荐
- OperService.class.php
<?php class OperSerVice{ public function getResult($num1,num2,oper){ switch($oper){ case "+& ...
- android 数据库操作详解
请看郭大神的八篇专栏,包含sql语句 android封装的databasehelper 和郭大神自己的LitePal 三种使用详解 http://blog.csdn.net/column/deta ...
- c# 反射列子
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.R ...
- Ajax中GET和POST的区别
Get方式: 用get方式可传送简单数据,但大小一般限制在1KB下,数据追加到url中发送(http的header传送),也就是说,浏览器将各个表单字段元素及其数据按照URL参数的格式附加在请求行中的 ...
- Python学习笔记-Day3-python函数
1.为什么要用函数? 提高代码重复利用率,减少代码冗余.封装模块化代码,便于调用 2.函数声明定义(注意:函数先声明后调用) 注意:函数的reture循环中的exit功能一样(函数不执行,终止) 函数 ...
- 2014江西理工大学C语言程序竞赛初级组
坐公交 解法:略 #include<stdio.h> #include<string> #include<iostream> #include<math.h& ...
- 2016年12月2日 星期五 --出埃及记 Exodus 20:23
2016年12月2日 星期五 --出埃及记 Exodus 20:23 Do not make any gods to be alongside me; do not make for yourselv ...
- C#中另类自定义公式计算 字符串转换为计算公式,并得出计算结果
[csharp] view plain copy print? //方法一 利用DataTable中的Compute方法 例如:1*2-(4/1)+2*4=6 , , , ); DataTable d ...
- AB串(上帝都不会,我就没救了)
[题目分析] 设答案的长度为m,
- pip安装使用详解
pip类似RedHat里面的yum,安装Python包非常方便.本节详细介绍pip的安装.以及使用方法. 1.pip下载安装 1.1 pip下载 1 # wget "https://py ...