zoukankan      html  css  js  c++  java
  • 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

     转载:http://blog.csdn.net/robinson_0612/article/details/5816012

  • 相关阅读:
    1.vue-1
    7.Docker -- 虚拟服务器
    11.Django -- 中间件
    10.Django -- csrf -- 文件上传
    9.djang -- cookie和session
    8.Django --Ajax
    YOLO v1原理详解
    带你一文读懂Faster RCNN论文
    Week13
    Week12
  • 原文地址:https://www.cnblogs.com/future2012lg/p/3141902.html
Copyright © 2011-2022 走看看