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; 表空间已更改。
4. 参数文件的热备
create pfile from spfile ;
create pfile = '' from spfile;
SQL> create pfile = '/u03/backup/hotbak/initdbsrv1.ora' from spfile; 文件已创建。
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;