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

     View Code

    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;
  • 相关阅读:
    Ubuntu把在任事器范围起更次要的脚色
    linux下firefox 3.0 flash失效的治理法子
    Fedora的一些根蒂设置装备摆设(三、有关Firefox的放慢设置装备摆设)
    Linux操纵零碎下即时通讯软件
    QGtkStyle 让 KDE 法式拥有 Gnome 外不雅
    Ubuntu 8.04 告白登岸德国柏林的地铁零碎
    关于linux的一些重要日记文件
    linux下挂载U盘进程
    对Fedora9的一些心得领会(另附一些末尾设置装备安插)
    使用distinct在mysql中查询多条不重复记载值的处理责罚步调
  • 原文地址:https://www.cnblogs.com/chenlaichao/p/7857455.html
Copyright © 2011-2022 走看看