一oracle热备份介绍,Oracle 热备份

--=======================

-- Oracle热备份

--=======================

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

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

一、热备的过程

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

进行物理拷贝

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

二、基于数据库的热备

alterdatabasebeginbackup;

拷贝所有的datafile到备份目录

alterdatabaseendbackup;

三、基于表空间的热备

alter tablespace tablespace_name beginbackup;

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

alter tablespace tablespace_name endbackup;

alter tablespace tablespace_name beginbackup时完成的任务

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

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

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

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

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

四、控制文件的热备

alterdatabasebackup controlfile to'

alterdatabasebackup controlfile to trace as'

控制文件发生变化情况

alterdatabase [add |drop] logfile

alterdatabase [add |drop] logfile member

alterdatabase [add |drop] logfile group

alterdatabase [archivelog |noarchivelog]

alterdatabase rename file

create tablespace

alter tablespace [add | rename] datafile

alter tablespace [read write | read only]

drop tablespace

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

五、参数文件的热备

create pfile from spfile ;

create pfile ='

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

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

--查看临时表空间

SQL>select tablespace_name from dba_temp_files;

TABLESPACE_NAME

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

TEMP

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

SQL>selectnamefrom v$tempfile;

NAME

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

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

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

SQL>alter tablespace temp beginbackup;

alter tablespace temp beginbackup

*

ERROR at line 1:

ORA-03217: invalid optionforalterof TEMPORARY TABLESPACE

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

SQL>alter temporary tablespace temp beginbackup;

alter temporary tablespace temp beginbackup

*

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

alterdatabasebeginbackup;

start &script

alterdatabaseendbackup;

alterdatabasebackup 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 orderby tablespace_name;

spool off

start &script

alterdatabasebackup controlfile to'&dir/controlbak.ctl';

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

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

八、备份的相关视图

v$backup

SQL>desc v$backup;

NameNull?    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 beginbackup;--对表空间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 beginbackup;

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>alterdatabase datafile 4 endbackup;--此处也可以使用recover datafile 4来完成恢复

Database altered.

SQL>alterdatabaseopen;

Database altered.

SQL>select*from dual;

D

-

X

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值