`
hugang357
  • 浏览: 182667 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

Oracle 数据库备份与恢复

阅读更多
一、Oracle归档方式
确认数据库归档方式:
SVRMGR> archive log list;
SQL> select log_mode from v$database;

二、Oracle归档方式配置步骤:
1、启动自动归档进程ARCH
log_archive_start=true

2、确定归档日志文件存储目录
log_archive_dest=目录名
3、确定归档日志文件存储格式
log_archive_format=%t_%s.arc
4、确定归档日志文件镜像目录:
log_archive_duplex_dest=镜像目录名
5、以MOUNT方式启动数据库,修改数据库归档方式:
SVRMGR> connect internal
SVRMGR> startup mount
SVRMGR> alter database archivelog;
SVRMGR> alter database open;

// 前面1、2、3、4四个参数都在参数文件中。
  • 在Oracle8i以后,可以使用多个镜像目录:[8i最多是5个,9i是10个,与duplex方式不能混用]
  • log_archive_dest_1='location=d:\oracle\archive1'
    log_archive_dest_2='location=d:\oracle\archive2'
    log_archive_dest_3='location=d:\oracle\archive3'
  • 归档文件的格式为二进制,可以没有后缀。
  • 实际操作:
    1、在d:\oracle目录下建立archive1, archive2两个目录
    2、修改init.ora文件,增加下面四行:
    log_archive_start=true
    log_archive_format=%t_%s.arc
    log_archive_dest=d:\oracle\archive1
    log_archive_duplex_dest=d:\oracle\archive2
    3、进入svrmgrl
    SVRMGR> connect internal/oracle
    SVRMGR> shutdown immediate
    SVRMGR> startup mount
    SVRMGR> alter database archivelog;
    SVRMGR> alter database open;
    4、进入SQL*Plus
    SQL> alter system switch logfile;
    //检查d:\oracle\archive1及archive2目录下是否有归档的日志文件。
  • 在线启动或关闭归档方式
  • SQL> Alter system archive log start;
    SQL> Alter system archive log stop;

    三、数据库物理备份
  • 为了最大限度地进行恢复,应选择最合理的备份方法来防止介质失败导致的数据丢失。
  • (1)非归档的操作系统备份
    (2)归档的操作系统备份
    (3)Export工具备份
    注释:
    。用归档的操作系统备份的方法来恢复到介质失败后的失败点。
    。用其它的恢复方法恢复到介质失败后的最后一次备份点。
    。用Export工具创建一个直接的数据库备份文件,它不能与归档log文件组合使用。

    1、完全数据库脱机备份:可以在归档及非归档两种模式下使用。
    操作步骤:
    (1)编写一个要备份的最新的文件列表。
    (2)用SHUTDOWN命令关闭Oracle例程。
    (3)用操作系统的备份工具,备份所有的数据文件、Redo Log文件、控制文件、参数文件。
    (4)重启Oracle例程。
    2、部分数据库联机备份:
    备份步骤如下:
    (1) 确认数据库运行在ARCHIVELOG下。
    (2) 对于某一个表空间进行备份:
    SQL> Alter tablespace 表空间名 begin backup;
    (3) 操作系统备份相应数据文件
    (4) 设置表空间备份结束标识:
    SQL> Alter tablespace 表空间名 end backup;
    恢复数据文件:
    SVRMGR> Alter database RECOVER datafile '数据库文件名及路径';
    <=等价=>
    SVRMGR> RECOVER datafile '数据库文件名及路径';
    3、部分数据库脱机备份:
    备份步骤如下:
    (1) 确认数据库运行在ARCHIVELOG下。
    (2)将某一个表空间脱机:
    SQL> Alter tablespace 表空间名 offline;
    (3) 操作系统备份相应数据文件
    (4) 将表空间联机:
    SQL> Alter tablespace 表空间名 online;
    恢复时也需要进行恢复数据文件:
    SVRMGR> Alter database RECOVER datafile '数据库文件名及路径';
    <=等价=>
    SVRMGR> RECOVER datafile '数据库文件名及路径';
    四、完全数据库恢复应用实例
  • 完全数据库恢复的语法:
  •   在数据库关闭时,数据库恢复语法(可以Mount):
    SVRMGR> Alter database recover datafile 'filespec';
    SVRMGR> Alter database recover database;
    SVRMGR> Recover datafile 'filespec';
    SVRMGR> recover database;
    第1、3及第2、4条命令分别等价。
      在数据库运行时,数据库恢复语法(OPEN):
    SVRMGR> recover tablespace 表空间名;
    SVRMGR>recover datafile 'filespec';
    1、数据库文件被删除,数据库关闭时,数据库恢复方法:
    A、复制数据文件的备份文件
    B、以mount方式启动数据库
    C、恢复数据文件
    SVRMGR> alter database recover datafile '数据文件名';
    D、打开数据库
    SVRMGR> alter database open;
    2、数据库在运行时,数据文件被删除的数据库恢复方法:
    A、将数据文件设置为offline:
    SVRMGR> alter database datafile '数据文件名' offline;
    B、复制数据文件的备份文件
    C、恢复数据文件
    SVRMGR> alter database recover datafile '数据文件名';
    D、将数据文件设置为online:
    SVRMGR> alter database datafile '数据文件名' online;

    3、数据文件被删除,该数据文件没有备份,数据库恢复方法:
    A、以mount方式启动数据库
    B、运行以下命令:
    SVRMGR> Alter database create datafile '被删除数据文件名及路径'
        as '被删除数据文件名及路径';
    C、恢复数据文件
    SVRMGR> alter database recover datafile '数据文件名';
    D、打开数据库
    SVRMGR> alter database open;
    五、不完全数据库恢复实例:
    1、恢复一个被Dropped的基表:
    A、关闭数据库
    B、拷贝全部的数据文件(不拷贝日志及控制文件)
    注:这些拷贝的数据文件是以前做的数据文件的备份,现在拷贝回数据库数据文件所在目录,覆盖掉原来的。当然,最好在覆盖之前将现在的数据文件及归档日志做好备份。
    C、实施基于时间的不完全数据库恢复
    SVRMGR> Alter database recover database until time '2002-05-17:9:00:00';
    D、打开数据库
    SVRMGR> Alter database open RESETLOGS;
    // 执行了resetlogs之后,文件同步号将从0开始,以前所有的归档日志全部失效。
    2、恢复一个被Dropped的表空间:
    A、查询跟踪文件,确定表空间删除时间
    D:\oracle\admin\db_name\bdump\sidAlrt.log
    B、关闭数据库,复制未删除表空间前的全部数据文件及控制文件,不复制日志文件。
    C、实施基于时间的数据库恢复:
    SVRMGR> Alter database recover database until time '2002-05-17:9:00:00' using backup controlfile;
    D、打开数据库
    SVRMGR> Alter database open RESETLOGS;
    六、数据库逻辑备份:(Export/Import)
    1、exp user01/user01 file=user01  // 用户方式:将user01用户的所有数据导出到user01.dmp文件中
    2、exp user01/user01 file=user01_table tables=(emp,dept, pay, ...)   // 表方式,将指定用户的指定表导出。
    3、exp    // 交互方式
    4、卸出(导出)大表:
    exp user/password file=filename direct=y  ...
    // 加上direct=y,表明用直接路径卸出数据,不通过内存,直接卸出到磁盘,效率高,节省内存。
    4、全部数据库卸出:
    exp system/manager file=fulldb full=y direct=y
    // 加上full=y,表示将整个数据库全部卸出。
    用户方式和表方式可以在NT 与 UNIX之间的Oracle进行数据传输,但整个数据库方式不能,因为包含了相关的数据文件信息。

    七、卸出表空间:
    1、检验表空间自包含性:检查表空间是不是与其它表空间有外键约束,有外键约束的不能卸出。
    SQL> execute ...
    2、将表空间设为只读
    3、使用export卸出表空间
    exp transport_tablespace=y tablespaces=mis file=expdat.dmp
    4、使用Import装入表空间
    imp transport_tablespace=y datafile='d:\oracle\oradata\x.dbf' tablespaces=mis file=expdat.dmp

    八、Windows 计划任务备份数据文件
    1、C:\> net start schedule //启动计划服务
        net stop schedule //停止计划服务
      
    2、AT命令安排计划:
    C:\>at 22:00 /every:m,t,w,th, f, s, su d:\fullback.bat // 每周一到周日的晚上十点运行d:\fullback.bat批处理文件
    C:\>at /delete /yes  // 删除全部计划
    3、fullback.bat
    svrmgrl @d:\fullback.sql
    4、fullback.sql
    connect internal/oracle
    shutdown immediate
    host copy d:\oracle\oradata\ora8i\*.* e:\back
    startup

    还可以为数据库在线备份建立脚本通过AT调用执行,实现数据库的联机备份。

    Oracle中用户管理的不完全恢复
    用户管理的不完全恢复必须满足下面三个条件才可以使用:
    a) 归档模式
    b) 要有所有datafile在误操作之前的备份
    c) 要有自要使用的备份以来的所有归档
    不完全恢复的类型
    a) 基于时间点 :比如从alter警告文件中查到drop table操作是什么时候发生的  

    recover database until time '2000-10-01 10:10:10'

    b) 基于Cancel : 可能中间某个归档损坏或丢失

    recover database untill cancel

    c) 基于SCN(系统改编号)  

    recover database until scn

    -- 另同时使用备份的控制文件的不完全恢复

    using backup control file

    实例说明几种场景的不完全恢复
    1.
    truncate table dept;
    alter system switch logfile;
    delete from emp where empno=;
    alter system switch logfile;
    alter system switch logfile;

    --发现是误操作
    --启动EM,用logminer(日志查看器)查时间点或SCN

    oemapp consol

    登陆到management server(参看:如何使用management server,后面会发布)
    -->工具-->数据库应用程序-->日志查看器-->创建查询条件
    --比如:表=DEPT (必须大写) 开始时间 结束时间
    查询出误操作时间或SCN,比如时间:2006-07-14 13:52:18 SCN 12345
    --好现在开始做基于时间点的不完全恢复
    a.shutdown immediate
    b.restore(复制) full backup到数据文件目录下
    c.startup mount
    d.alter session set NLS_date_format = 'YYYY-MM-DD HH24:MI:SS'
    e.recover database until time '2004-07-14 13:52:17';
    //recover database until scn 12345
    f.alter database open resetlogs --必须带resetlogs
    g.删除所有归档、冷备 热备(已经都没用了,必须重新备份)
    h.备份(不要忘了)
    2.基于cancel的模拟

    delete dept where depno=42;//假如users表空间下的表
    commit;
    alter database switch logfile;--多次
    alter database switch logfile;
    alter database switch logfile;
    --发现失误,实行恢复
    shutdown immediate

    删除users表空间(对应的文件号假如是9)和一个归档日志
    试着做完全恢复,失败,
    --参看http://www.david-studio.org/new/resource/showdetail.jsp?ID=12
    --做基于cancel的恢复

    shutdown immediate

    还原所有文件

    startup mount
    alter tablespace users online--将offline的所有文件online
    recover database until cancel
    alter database open resetlogs

    别忘了重新备份

    3. 使用备份的控制文件的不完全恢复
    --已经有所有数据文件的备份
    --备份控制文件
    alter system switch logfile;
    alter system switch logfile;
    alter system switch logfile;
    alter database backup controlfile to 'd:ackupcon1.ctl';
    alter system switch logfile;
    conn scott/tiger
    delete dept where deptno=42;
    commit;
    alter system switch logfile;
    alter system switch logfile;
    alter system switch logfile;
    shutdown abort/immediate/normal/transactional

    删除所有数据文件,备份和删除当前的控制文件,但是归档必须存在

    startup [nomount]

    --报错 查看状态

    nomount, select status from v$instance;

    从备份中恢复控制文件
    复制所有备份的数据文件(在删除前要已经有备份)

    recover database until cancel using backup controlfile;
    alter database open resetlogs;

    别忘了做全备
    4.联机日志全部丢失

    shutdown immediate

    删除所有的联机日志

    startup

    --报联机日志错误

    recover database until cancel

    --这步实际上什么也不做,但必须做这个操作

    alter database open resetlogs;

    别忘了做全备,以前的都没用了(包括归档)
    5.误删除了表空间怎么恢复,必须归档模式
    archive log list
    select * from v$tablespace
    select * from scott.emp;

    --删除表空间

    drop tablespace indx including contents and datafiles;
    alter system switch logfile;

    --开始恢复

    shutdown immediate

    恢复所有的数据文件和控制文件,必须用老的控制文件
    查询alter,查看drop indx表空间的时间,比如: 2006-07-10 10:10:10

    startup mount
    alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
    recover database until time ;2006-07-10 10:10:09' using backup controlfile;
    alter database open resetlogs
    分享到:
    评论

    相关推荐

      基于RMAN的Oracle数据库备份与恢复机制.pdf

      基于RMAN的Oracle数据库备份与恢复机制.pdf 本文档详细介绍了基于RMAN的Oracle数据库备份与恢复机制。Oracle Recovery Manager(RMAN)是Oracle公司提供的一种专门备份工具,能够实现数据库定制备份、自动备份等...

      Oracle数据库备份与恢复实例讲解.pptx

      "Oracle数据库备份与恢复实例讲解" Oracle数据库备份与恢复是数据库管理员的重要任务之一。备份是指将数据库中的数据复制到其他媒体上,以便在数据库故障或数据丢失时能够快速恢复数据库。恢复是指从备份中恢复...

      oracle数据库备份与恢复脚本

      oracle数据库备份与恢复脚本:第1步:创建临时表空间 第2步:创建数据表空间 第3步:创建用户并指定表空间

      Oracle数据库备份与恢复

      中文版Oracle数据库备份与恢复Oracle数据库备份与恢复Oracle数据库备份与恢复Oracle数据库备份与恢复

      Oracle数据库备份与恢复.pdf

      Oracle数据库备份与恢复是数据库管理中至关重要的环节。备份的目的是为了防止数据丢失,确保在发生意外情况时能够迅速恢复数据库。恢复则是当数据库出现问题时,通过备份数据将其恢复到某个状态的过程。本文将详细...

      oracle数据库备份与还原实例

      介绍  本实例均为linux系统下操作,采用exp与imp方式导出和导入。其中还包含linux服务器间sftp传输。

      oracle数据库备份与恢复

      oracle数据库备份与恢复 oracle数据库备份与恢复 oracle数据库备份与恢复 oracle数据库备份与恢复 oracle数据库备份与恢复 oracle数据库备份与恢复

      oracle数据库备份与还原

      oracle的数据库备份与还原,有数据泵的导入导出

      Oracle数据库备份与恢复总结

      Oracle数据库备份与恢复总结

      oracle数据库备份与恢复方案.doc

      Oracle 数据库备份与恢复方案中使用的备份工具是 Oracle RMAN(Recovery Manager),它是一种用于备份、还原和恢复数据库的 Oracle 工具。RMAN 只能用于 ORACLE8 或更高的版本中。它能够备份整个数据库或数据库部件...

      实验8-Oracle数据库备份与恢复.pdf

      Oracle 数据库备份与恢复 Oracle 数据库备份与恢复是数据库管理中非常重要的一部分。备份是指将数据库中的数据复制到另外一个介质以防止数据丢失,而恢复是指将备份的数据还原到数据库中。Oracle 数据库提供了多种...

      Oracle数据库备份与恢复实例讲解ppt课件.pptx

      Oracle数据库备份与恢复实例讲解 本文档旨在介绍 Oracle 数据库备份与恢复的实例讲解。备份和恢复是数据库管理员的重要职责之一,目的是为了保护数据库免受故障的影响,确保数据的安全和可靠性。 一、数据库常见...

      oracle数据库备份与恢复.doc

      oracle数据库备份与恢复.doc

      Oracle数据库备份与恢复策略.pdf

      "Oracle数据库备份与恢复策略" 一、.oracle数据库备份的重要性 在油气勘探项目中,数据是石油企业的重要资源。但是,数据安全问题日益突出。为了避免或降低不可预测的灾难给油田带来的损失,建立一套安全、可靠、...

      Oracle数据库备份与恢复操作手册

      Oracle数据库备份与恢复操作手册,主要介绍oracle数据库冷备份和恢复,热备份和恢复以及rman备份和恢复.

    Global site tag (gtag.js) - Google Analytics