• 冷/热/逻辑备份与恢复 岁月无情


    冷/热/逻辑是ORACLE中最基本的三种备份与恢复,也是最简单的、最原始的,它们在8i之前就出现了,不过优点不如恢复管理器RMAN多,但RMAN是8i之后才出现的,同时8i开始出现的STANDBY(9i后叫DATA GUARD),是一种更高级的数据库备份与恢复

    ................

    对于数据库比较小,也不是7X24,用这三种基本备份就足够保存数据安全性,但不如RMAN好;对于数据库超大的或是7X24的,只有用STANDBY方式。

    下面先说说这三种基本备份与恢复,RMAN和STANDBY以后再说

    一、逻辑备份与恢复

    1、备份。就是用exp程序导出数据库的对象,一般都用全部是导出,语法:$ORACLE_HOME/bin/exp system/manager@prod file=/oracle/backup/oradata/expprod.dmp full=y log=/oracle/backup/log/explog.log

    当然也可以按用户/表模式来导出,所有导出选项可以通过

    $ORACLE_HOME/bin/exp help=y获得

    2、恢复。就是用imp程序从备份文件中导入全部对象,语法:

    $ORACLE_HOME/bin/imp system/manager@prod file=/oracle/backup/oradata/expprod.dmp full=y log=/oracle/backup/log/implog.log

    注意,导入后可能有些对象要重新编译才使用。

    逻辑备份与恢复对于大点的数据库是不合适的,因为速度很慢,不过从10g开始,逻辑备份提供了expdb/impdb两种高速导出/导入方式,用这两种方式必须在数据库中创建一目录create or replace directory DMPDIR as '/oracle/backup/oradata'

    创建目录后就可以跟exp/imp一样导出/导入了语法:

    $ORACLE_HOME/bin/expdp system/manager DIRECTORY=DMPDIR DUMPFILE=expdpprod.dmp full=y

    其中DMPDIR就是在数据库中创建的目录对象

    二、冷备份与恢复

    1、备份。就是关闭数据库,然后用操作系统的复制命令,把数据文件、日志文件、控制文件、初始化参数文件COPY到备份目录

    --备份所有数据文件

    cp $ORACLE_BASE/oradata/*.dbf /oracle/backup/oradata/*.dbf

    --备份所有日志文件

    cp $ORACLE_BASE/oradata/*.log /oracle/backup/oradata/*.log

    ...

    2、恢复。关闭目标数据库,用操作系统的复制命令,把数据文件、日志文件、控制文件、初始化参数文件从备份目录COPY到相应的数据库目录

    --恢复所有数据文件

    cp /oracle/backup/oradata/*.dbf $ORACLE_BASE/oradata/*.dbf

    --恢复所有日志文件

    cp /oracle/backup/oradata/*.log $ORACLE_BASE/oradata/*.log

    ...

    三、热备份与恢复

    要用热备份,首要把数据库置于归档模式

    --用archive log list查看数据库是否处于归档模式

    SQL> archive log list;

    Database log mode No Archive Mode

    Automatic archival Disabled

    ...

    --数据库不在归档模式,要关闭重新装载才能修改

    SQL> shutdown immediate;

    Database closed.

    Database dismounted.

    ORACLE instance shut down.

    SQL> startup mount;

    ORACLE instance started.

    Total System Global Area 171966464 bytes

    Fixed Size 787988 bytes

    Variable Size 145750508 bytes

    Database Buffers 25165824 bytes

    Redo Buffers 262144 bytes

    Database mounted.

    --更改数据库置于归档模式

    SQL> alter database archivelog;

    Database altered.

    --再用archive log list可以看到数据库处于归档模式

    SQL> archive log list;

    Database log mode Archive Mode

    Automatic archival Enabled

    ...

    SQL> alter database open;

    Database altered.

    至此,数据库已置于归档模式,可以对数据库进行热备份了

    1、备份

    --备份表空间(注意释放锁住SCN的数据文件)

    alter tablespace 表空间名 begin backup

    !cp 表空间的数据文件 /oracle/backup/data/

    alter tablespace 表空间名 end backup

    ...

    --备份归档日志

    !cp $LOG_ARCHIVE_DEST/* /oracle/backup/log/*

    --备份控制文件

    alter database backup controlfile to '/oracle/backup/ctlfile.bak'

    2、恢复

    --关闭数据库

    shutdown immediate;

    --恢复数据文件和归档日志

    !cp oracle/backup/data/* $ORACLE_BASE/oradata/*

    !cp oracle/backup/log/* $ORACLE_BASE/oradata/*

    --不完全恢复

    startup mount

    recover database until time 'yyyy-mm-dd hh24:mi:ss';

    --打开数据库并重置日志

    alter database open resetlogs

    这里的热备份恢复是一种很简单的不完全恢复,还有其他的几种不完全恢复;除了不完全恢复之外,还有完全恢复;不完全恢复与完全恢复是两种不同的概念,以后再说

  • 相关阅读:
    LeetCode-Search a 2D Matrix
    Cocos2d-x 学习(1)—— 通过Cocos Studio创建第一个Demo
    SpringMVC经典系列-12基于SpringMVC的文件上传---【LinusZhu】
    poj 2126 Factoring a Polynomial 数学多项式分解
    [每天读书半小时] 2015-6-8 设计模式
    LeetCode_Path Sum II
    MySql截取DateTime字段的日期值
    Fiddler2 中文手册
    fiddler2抓包工具使用图文教程
    Fiddler2 抓取手机APP数据包
  • 原文地址:https://www.cnblogs.com/huyinyang/p/3032816.html
Copyright © 2020-2023  润新知