手工备份, 我只考虑全备, 即 control file, redo log file, datafile, password file, spfile(pfile), listener.ora, tnsnames.ora 等全部备份. 这样,在数据库恢复时, 啥文件都全了, 能够很顺利的恢复到备份的时间点.

手动备份

分为全备 或部分备份, 一致性备份和 非一致性备份.

一致性全备: (一种冷备份)

操作方法:  目前我们系统使用的这种, 就是将数据库正常关闭, 然后在操作系统下, copy 所有的 control file, data file 等 到别的地方. 最好将 online redo log file , parameter file, password file 一起备份, 因为这样恢复的时候就会非常简单, 直接将文件copy 回来就可以了, 不用备份的是 archivelog file.

这种备份的好处是 : 操作简单.

这种备份的缺点是 :不支持 7 * 24 小时系统, 即数据库不能被关闭的情况. copy 数据需要很长时间, 恢复时直到最后的全备时刻. 剩下的内容可以依靠archilve log 文件操作.

非一致性备份(热备) : 可以单独备份 tablespace 或者 datafile 等内容.  (必须在 archivelog 模式下)

这种备份不好, 要不就全备, 要不就用 rman, 不适用这种非一致性备份(热备).

操作方法:

1. alter tablespace users begin backup;   -- 将要备份的内容设置成backup 模式

2. !cp /../users01.dbf /backup/users01.dbf  -- 操作系统的拷贝操作

3. alter tablespace users end backup;  -- 关闭 backup 模式

4. alter system archive log current;  -- 将日志归档

重复上边的每一步骤, 所有的表空间. (include SYSTEM tablespace and UNDO tablespace)

注意: 将数据库的某个tablespace 设置成 backup 模式后, more redo log entries may be generated because the log writer block images of changed blocks of the datafile in backup mode to the redo log instead of just the row information. This could have a significant impact on the size of redo logs and the performance of the log writer. 所以 BEGIN BACKUP to END BACKUP 之间的时间间隔应该尽量缩小, 这也就是为什么要一个一个的备份表空间, 而不是所有的表空间一起备份的原因.

好处: 可以数据库不关闭的情况下完成备份.

热备: 尽量选择在数据库不忙时进行. 不要用

控制文件(特殊)备份

很多操作都会改变控制文件的内容, 所以我们要经常备份控制文件.

2进制文件 : alter database backup controlfile to ‘control11.bkp’; -- 另外将 control file 保存在别的地方. 热备controlfile, 这种办法用来恢复, 也是2进制文件

text 文件 : alter database backup controlfile to trace;  -- 这个语句会重现创建control file (就在原来control file 的路径上)   -- 得到建立控制文件的脚本, 这种办法用来重建control file, 是脚本文件

例如 alter database backup controlfile to trace as ‘/u01/user_backup/recreate_controlfile.txt’;

(这里先简单说一下使用 RMAN 备份 control file)

backup current controlfile;

backup database include current controlfile;

或者将 RMAN 设置成自动备份 controlfile : configure controlfile autobackup on;

备份 password file 和 parameter file (只要操作系统级别的copy 就可以了)


手动恢复

这里我只考虑恢复到全备的时间点.

操作办法很简单, 就是将之前的备份文件, 全部copy到原来的路径就可以了. 这样, 只恢复到了之前的时间点, 如果想一致性恢复, 参考下边的 recovery in Archivelog.  如果想要一致性恢复 从 手动全备 作为参考, 那么你需要保存好 最新的 redo log file, archivelog file, control file .

Recovery in Archivelog (完整恢复) (这部分内容也很重要)

完整的恢复, 即恢复到数据库损坏的时刻, 不是恢复到数据库的之前的某个时间点.

注意, 我们只考虑 Archivelog 模式的恢复.

步骤:

1. 首先之前要有全备的文件, 就是操作系统级别的 copy. (全备之后的所有的archivelog文件都要保存起来)

2. database 出现问题 , 比如一个数据文件丢失

3. 将全备的文件(与丢失的文件相同) copy 到正常的文件的路径, 比如从 /backup/user01.dbf –> /u01/oradata/ora10g/user01.dbf ( 注意, 此时的数据是不一致的, 因为是全备的 datafile )

4. 打开数据库到 mount 状态

5. recover database 这个命令即可. 注意, 这个命令之所以能自动完成, 要求它所需要的文件(redo log, archive log, control file)都在指定的路径上. 换句话说, 只要没有损坏redo log 和 archive log 和 control file,  然后使用 recover database; 就可以恢复了. 所以, 利用这条命令来recover时, 不能使用你之前备份的redo log file, control file(archive log file 不需要备份) 要用当前的 control file, redo 和 archivelog 才能实现 一致性恢复. (条件实在是太苛刻了, 要求 control file, redo log, archive 都不能有损坏)

以上恢复就完成了. 注意, 这样恢复完以后不用全备也可以, 因为恢复的是一致性的.

如果你要恢复到不同的路径, 比如原来的磁盘损坏了, 新增加了一块磁盘, 这时候就需要指定恢复的路径:

1. 首先, 加一块新的磁盘, 分区, 格式化.

2. 挂在, mount /dev/sdb1 md(目录), 将备份文件复制到md目录下, 注意路径

3. 修改 parameter file 中对应文件的路径 (spfile, 注意这步关键是将数据文件找到对应的正确的路径)

control file 非常重要!

综上恢复, 可知, 一般情况下, 可以参考我们系统这种方式, 每半个月全备, 出问题, 直接 recover database, 所以… 备份策略如下:

备份策略

小的系统, 参考我们系统, 半个月全备, 然后保存好所有的 archivelog 和 redo 信息, 有问题, 直接 recover database.

大的系统, 参考 rman

重建control file
  • All control files are lost becuase of a failure
  • The name of a database needs to be changed
  • The current settings in the control file need to be changed

control file 丢失, 代价是巨大的, 所以最好不要丢失 control file. 详情请看 control file 专题

oracle 手动 备份 恢复的更多相关文章

  1. Oracle RMAN备份恢复指导书

    目 录 1 目的与范围... 1 2 术语和定义... 1 3 角色和职责... 2 4 使用RMAN备份数据库... 2 4.1.1 检查数据库模式... 2 4.1.2 连接到target数据库. ...

  2. oracle 增量备份恢复策略(基础知识)

    EXP和IMP是Oracle提供的一种逻辑备份工具.逻辑备份创建数据库对 象的逻辑拷贝并存入一个二进制转储文件.这种逻辑备份需要在数据库启动的情况下使用, 其导出实质就是读取一个数据库记录集(甚至可以 ...

  3. oracle之三备份恢复概述

    备份恢复概述 1.1 数据库故障的类型: 1)user process failure: pmon 自动处理 2)instance failure: smon 自动处理 3)user errors : ...

  4. Oracle数据库备份恢复,巡检须要关注的对象设置以及相关恢复概述

    数据库备份恢复.巡检须要关注的对象设置: 1.数据库名称,以及DBID:  --dbid在v$database中     SYS@ORCL>select dbid,name from v$dat ...

  5. Oracle DB备份恢复篇之丢失控制文件

    实验目的 本篇主要模拟控制文件丢失后,如何根据实际情况恢复数据库,才能使数据库尽可能不丢失数据. 实验环境 1)Linux系统环境 [oracle@DG1 ~]$ lsb_release -a LSB ...

  6. Oracle Rman备份恢复和管理

    参考资料: Oracle之Rman入门指南 一步一步学Rman Rman简介 Rman-Recover manager恢复管理工具. Oracle集成了很多环境的一个数据库备份和恢复的工具. Rman ...

  7. oracle分区表备份恢复

    https://blog.csdn.net/jc_benben/article/details/51546815

  8. oracle备份恢复

    1.oracle文件备份恢复 /etc/oraInst.loc /etc/oratab /home/oracle 家目录 /oracle 安装目录 /usr/local/bin/dbhome /usr ...

  9. Oracle数据库备份、灾备的23个常见问题

    为了最大限度保障数据的安全性,同时能在不可预计灾难的情况下保证数据的快速恢复,需要根据数据的类型和重要程度制定相应的备份和恢复方案.在这个过程中,DBA的职责就是要保证数据库(其它数据由其它岗位负责) ...

随机推荐

  1. golang 聊天室

    近期看了一些关于golang的资料.发现它的WEBSOCKT实现真起来真的非常easy.以下是代码 go.net/websocket是须要安装的,这个自己装上即可 package main impor ...

  2. PageRank学习

    喜欢手写学习,记忆深刻(字丑勿喷!). 计算过程的代码如下: public class PageRank { private static double m[][]={ { 0 , 0.5 , 1 , ...

  3. 网络编程-Java中的Internet查询

    前提 在深入理解URL.URI等概念,或者学些Socket相关的知识之,有必要系统理解一下Internet相关的一些基础知识. Internet地址 连接到Internet(因特网)的设备称为节点(n ...

  4. ZK框架笔记4、通用组件、页面、桌面

    组件(component)是一种用户接口(UI)对象,如一个标签.按钮.树.         页面(page)是一个组件的集合.         桌面(desktop)是一个包含相同URL请求的页面. ...

  5. RTTI机制与作用(转)

    一.RTTI(Run-Time Type identification),通过运行时类型信息,程序能够使用基类的指针或引用来检查这些指针或引用所指向的对象的实际派生类型.面向对象的编程语言,想C++, ...

  6. Zoho CEO:云计算泡沫巨大 Salesforce仅仅是新的Siebel

    最近Zoho CEO - Sridhar Vembu接受科技博客媒体Diginomica的专訪,从独特的眼光和见解.讲述了云计算行业环境.SaaS公司的生存状态.商业观念以及Zoho的商业模式. Sr ...

  7. struts2 ValueStack的作用

    Value Stack的作用: 1.       可以作为一个数据中转站 2.       用于在前台-后台之间传递数据,最典型的做法就是struts2标签也ognl表达式的结合.我用得最多的就是数据 ...

  8. SugarCE问题点记录

    问:如何获取module参数?如果module参数不存在,如何处理?答:首先检查$_REQUEST['module'],然后再检查$sugar_config['default_module']是否有设 ...

  9. struts2中 JFreeChart使用

    添加3个包 struts2-jfreechart-plugin-2.3.16.3.jar jcommon-1.0.16.jar jfreechart-1.0.13.jar struts.xml中配置 ...

  10. (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹

    1 - 基础,浏览一个文件夹 我们知道,在win32中是以外壳名字空间的形式来组织文件系统的,在外壳名字空间里的每一个对象(注)都实现了一个IShellFolder的接口,通过这个接口我们可以直接查询 ...