Oracle 热备份

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

-- Oracle 热备份

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

 

    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

 

    有关Oracle的冷备份,请参考:Oracle 冷备份

九、更多参考 

Oracle 冷备份 

SPFILE错误导致数据库无法启动 

Oracle 用户、对象权限、系统权限 

Oracle 角色、配置文件 

  Oracle 联机重做日志文件(ONLINE LOG FILE) 

  Oracle 控制文件(CONTROLFILE) 

  Oracle 表空间与数据文件 

Oracle 归档日志

 

时间: 2024-08-31 13:48:13

Oracle 热备份的相关文章

Oracle热备份详解

Oracle 热备份是指数据库处于open状态下,对数据库的数据文件.控制文件.参数文件.密码文件等进行一系列备份操作. 热备是基于用户管理备份恢复的一种方式,也是除了RMAN备份之外较为常用的一种备份方式. 一.热备的过程 冻结块头-->控制SCN在备份时不发生变化 进行物理拷贝 解冻块头-->让SCN可以变化(当对SCN解冻后,系统会自动更新SCN至最新的状态) 二.基于数据库的热备 alter database begin backup; 拷贝所有的datafile到备份目录 alter

Oracle 热备份和冷备份的区别

冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库.冷备份时将关键性文件拷贝到另外的位置的一种说法.对于备份Oracle信息而言,冷备份时最快和最安全的方法.冷备份的优点是: 1. 是非常快速的备份方法(只需拷文件) 2. 容易归档(简单拷贝即可) 3. 容易恢复到某个时间点上(只需将文件再拷贝回去) 4. 能与归档方法相结合,做数据库"最佳状态"的恢复. 5. 低度维护,高度安全. 但冷备份也有如下不足: 1. 单独使用时,只能提供到"某一时间

Oracle 基于备份控制文件的恢复(unsing backup controlfile)

    Oracle 基于备份控制文件的恢复(unsing backup controlfile)     有关RMAN的备份恢复与管理请参考     RMAN 概述及其体系结构     RMAN 配置.监控与管理     RMAN 备份详解     RMAN 还原与恢复     RMAN catalog 的创建和使用     基于catalog 创建RMAN存储脚本     基于catalog 的RMAN 备份与恢复     RMAN 备份路径困惑     使用RMAN实现异机备份恢复(WIN

批量迁移Oracle数据文件,日志文件及控制文件

   有些时候需要将Oracle的多个数据文件以及日志文件重定位或者迁移到新的分区或新的位置,比如磁盘空间不足,或因为特殊需求.对于这种情形可以采取批量迁移的方式将多个数据文件或者日志文件实现一次性迁移.当然备份恢复也是其中的方式之一.本文主要描述如何使用批量方式来迁移数据文件,日志文件.如需要也可以将整个数据库迁移到新的位置以及重命名数据库. 1.环境及需求 robin@SZDB:~> cat /etc/issue Welcome to SUSE Linux Enterprise Server

Oracle数据库的备份方法

1.引言 Oracle数据库的备份方法很多,无论使用那种备份方法,备份的目的都是为了在出现故障后能够以尽可能小的时间和代价恢复系统.比如使用export实用程序导出数据库对象.使用Oracle备份数据库.使用Oracle对称复制.使用Oracle并行服务器.使用Oracle冷备份.使用Oracle热备份等各种备份方法都有其优缺点.适用的场合和相应的软硬件要求.本文主要就用export实用程序导出数据库对象.Oracle冷备份.Oracle热备份这三种最基本的备份方法进行详细的探讨,分析各自的优缺

Oracle RAC OCR 与健忘症

    OCR就好比Windows的一个注册表,存储了所有与集群,RAC数据库相关的配置信息.而且是公用的配置,也就是说多个节点共享相同的配置信息.因此该配置应当存储于共享磁盘.本文主要基于Oracle 10g RAC描述了集群的OCR以及OCR产生的健忘问题.   一.OCR的特点   类似于Windows注册表,用于存储所有与集群,RAC数据库相关的配置信息   被多个节点所共享,因此,只能存储于共享磁盘.支持单disk以及镜像方式来存放.大小通常100MB-1GB.   在Oracle 1

Oracle RAC OCR 的管理与维护

   OCR相当于Windows的注册表.对于Windows而言,所有的软件信息,用户,配置,安全等等统统都放到注册表里边.而集群呢,同样如此,所有和集群相关的资源,配置,节点,RAC数据库统统都放在这个仓库里.如果OCR被破坏则导致集群服务启动异常,需要修复OCR.因此OCR的管理与维护对于整个集群而言,是相当重要的.本文主要描述了Oracle 10g RAC下的OCR的管理与维护. 1.环境 oracle@bo2dbp:~> cat /etc/issue Welcome to SUSE Li

Oracle RAC OCR 的备份与恢复

        Oracle Clusterware把整个集群的配置信息放在共享存储上,这些信息包括了集群节点的列表.集群数据库实例到节点的映射以及CRS应用程序资源信息.也即是存放在ocr 磁盘(或者ocfs文件)上.因此对于这个配置文件的重要性是不言而喻的.任意使得ocr配置发生变化的操作在操作之间或之后都建议立即备份ocr.本文主要基于Oracle 10g RAC环境描述OCR的备份与恢复.        OCR 相关参考:        Oracle RAC OCR 与健忘症      

使用yum快速部署Oracle安装环境(11g)

    基于Linux安装过Oracle的童鞋们都应该清楚,安装Oracle的确是一件比较费时费力的差事,因为仅仅是前期的rpm包,内核参数,创建用户等等这些个步骤都让那些新手不免眼花缭乱,一不留神,就导致最终的安装过程中报错而不得不从头来过.现在基于Oracle Linux,Oracle仅仅需要通过安装oracle-rdbms-server-11gR2-preinstall RPM包即可全部搞定其余未安装的RPM包,解决之间的依赖关系,配置内核参数等等.客官,正在基于Oracle Linux