Oracle学习笔记:备份、还原、恢复的一点理解

oracle提供了丰富、灵活的备份、还原、恢复管理机制和手段!

首先要明确的是这三个概念:

  • 备份——backup:基于状态点的“拍照”、归档
  • 还原——restore:回滚到“拍照”的状态点、解档、文件复位
  • 恢复——recover:从“拍照”的状态点前滚,重演所有的改变。这其中又有手工管理的recover和smon自动管理的recove。也是我们99%的管理工作!

oracle提供的管理手段

  1. sql(plus)语句,原始,但推荐!
  2. rman
  3. os操作
  4. oem

oracle的管理机制:(个人的浅显认识)通过control file、datafile、online redo file、archived redo、undo 文件的内部标识识别整个系统是否一致!!个人猜测这个内部标识由resetlogs时候的scn和scn组成!10g里允许跨resetlogs恢复,猜想oracle这哥们可能允许在某些条件下以scn作为一致的标识了!

如果?和?不一致了:?..

  1. online:别废话!resetlogs
  2. controlfile:restore或者create controlfile,可以选择resetlogs 或 noresetlogs——关键看:datafile和online是否一致来决定是否resetlogs
  3. datafile:【先restore 】再 recover,根据情况决定是否resetlogs。 或者 create controlfile,这就必须得resetlogs了
  4. 以上各种情况的复合情形,也可以在各阶段综合应用以上的各种情况
  5. archived redo不连续、不一致、损坏:即使上帝在,也不可能通过应用这些文件来recover了。查清这些archive redo日志还有多少利用价值吧,不行的话,delete吧。这些文件可是进行恢复的必要条件!无论是不完全恢复到 scn、time、sequence#、cancel,本质上就是依次应用scn!!!
  6. undo文件在recover过程中的作用?本人还未弄明白,相必是仅仅提供控制文件的undospace空间用,要oracle不起不来啊;在recover过程结束时候,oracle并不做任何处理或者仅仅是重新初始化该文件;而online redo中的commit事务会应用到datafile,未commit事务从online redo文件中直接删除,否则依照smon自动recover的处理rollback undo文件中的undo内容,而此时undo文件中并不存在,那不就出问题了!

oracle提供的管理类型

  1. 冷、热:oracle的相关文件是否锁定
  2. 逻辑、物理:是oracle的数据,还是文件结构和数据
  3. 完全、不完全:是否是全部的东东(相关文件、相关数据、相关历史...)

 

backup:对象datafile、undofile、archived logfile、spfile、controlfile

  1. os冷备份:关闭oracle数据库,保持所有相关文件一致。copy,之后....,想resetlogs就resetlogs,想noresetlogs就noresetlogs。
  2. datafile热备:将oracle至于backup状态,alter database {begin|end} backup ,然后copy,
  3. controlfile的热备:alter database backup controlfile to filespec [reuse]
  4. controlfile for standby的热备:alter database create {physical|logical}standby controlfile as filespec [reuse]
  5. spfile|pfile的热备:os下直接copy。因为oracle并不锁定此文件。
  6. pwd文件的热备:os下直接copy。因为oracle并不锁定此文件。
  7. archived log的热备:os下直接copy................................................这也算!
  8. rman方式下的热备:将隐藏一起手工的os的copy、路径、命名、历史记录问题。因此:十分推荐。不过要注意备份全相关的文件。否则处理起来也比较麻烦!
  9. exp逻辑倒出备份,注意nls_lang的设置问题
  10. expdp服务器倒出备份。注意设置directory对象

restore:

  1. 像spfile|pfile、pwdsid、archivedlog可以随时随地的restore,前提是他们确实是有效的
  2. controfile:在nomount状态下,可以利用之前的冷备份直接restore;
  3. datafile:在nomount状态下,可以利用之前的冷备份直接restore;
  4. rman方式下的restore:将隐藏一起手工的os的copy、路径、命名、历史记录问题。因此:十分推荐。
  5. imp逻辑导入
  6. impdp服务器逻辑导入

recover:没有什么可以说的,基本上就要依赖online redo 、archived redo 进行完全 或 不完全的恢复了!!!所以,archived redo 文件至关重要!

  1. rman方式下的recover:将隐藏一起手工的os的copy、路径、命名、历史记录问题。因此:十分推荐。
  2. recover  {cancel|continue[default]} --mount--取消、继续recove会话
  3. recover logfile 'filespec' --mount--直接应用logfile进行recove会话
  4. recover [automatic] [from 'location'].... [test] [allow n corruption] --mount--automatic 指出recove自动搜索本地可用的log_archive_dest[_1]或指定的location的符合log_archive_famat的 archived redo文件,并applying,如果文件没有搜到或终止,则弹出prompt建议的automatic的文件名。test意思时模拟recover。 allow n corrupton意思是允许archived redo文件有n个坏块存在,用于test时可以指定大于1的值。而当真正应用recover时,只能是0、1。
  5. recover database until {cancel|time datatime|change scn} [using backup controlfile] --mount--recover整个数据库到时间点、scn、cancel
  6. recover tablespace tbs,...
  7. recover datafile {filenumber|filename},...
  8. recover standby tablespace tbs,... until controlfile
  9. recover standby datafile {filenumber|filename},... until controlfile
  10. recover managed standby database :
  • using current logfile [nodelay] [disconnect]
  • until change scn [nodelay] [disconnect]
  • finish [force] [{wait|nowait}]
  • cancel [{immediate|{wait|nowait}}]                    
原文地址:https://www.cnblogs.com/jinzhenshui/p/1407666.html