oracle提供了丰富、灵活的备份、还原、恢复管理机制和手段!
首先要明确的是这三个概念:
- 备份——backup:基于状态点的“拍照”、归档
- 还原——restore:回滚到“拍照”的状态点、解档、文件复位
- 恢复——recover:从“拍照”的状态点前滚,重演所有的改变。这其中又有手工管理的recover和smon自动管理的recove。也是我们99%的管理工作!
oracle提供的管理手段
- sql(plus)语句,原始,但推荐!
- rman
- os操作
- oem
oracle的管理机制:(个人的浅显认识)通过control file、datafile、online redo file、archived redo、undo 文件的内部标识识别整个系统是否一致!!个人猜测这个内部标识由resetlogs时候的scn和scn组成!10g里允许跨resetlogs恢复,猜想oracle这哥们可能允许在某些条件下以scn作为一致的标识了!
如果?和?不一致了:?..
- online:别废话!resetlogs
- controlfile:restore或者create controlfile,可以选择resetlogs 或 noresetlogs——关键看:datafile和online是否一致来决定是否resetlogs
- datafile:【先restore 】再 recover,根据情况决定是否resetlogs。 或者 create controlfile,这就必须得resetlogs了
- 以上各种情况的复合情形,也可以在各阶段综合应用以上的各种情况
- archived redo不连续、不一致、损坏:即使上帝在,也不可能通过应用这些文件来recover了。查清这些archive redo日志还有多少利用价值吧,不行的话,delete吧。这些文件可是进行恢复的必要条件!无论是不完全恢复到 scn、time、sequence#、cancel,本质上就是依次应用scn!!!
- undo文件在recover过程中的作用?本人还未弄明白,相必是仅仅提供控制文件的undospace空间用,要oracle不起不来啊;在recover过程结束时候,oracle并不做任何处理或者仅仅是重新初始化该文件;而online redo中的commit事务会应用到datafile,未commit事务从online redo文件中直接删除,否则依照smon自动recover的处理rollback undo文件中的undo内容,而此时undo文件中并不存在,那不就出问题了!
oracle提供的管理类型
- 冷、热:oracle的相关文件是否锁定
- 逻辑、物理:是oracle的数据,还是文件结构和数据
- 完全、不完全:是否是全部的东东(相关文件、相关数据、相关历史...)
backup:对象datafile、undofile、archived logfile、spfile、controlfile
- os冷备份:关闭oracle数据库,保持所有相关文件一致。copy,之后....,想resetlogs就resetlogs,想noresetlogs就noresetlogs。
- datafile热备:将oracle至于backup状态,alter database {begin|end} backup ,然后copy,
- controlfile的热备:alter database backup controlfile to filespec [reuse]
- controlfile for standby的热备:alter database create {physical|logical}standby controlfile as filespec [reuse]
- spfile|pfile的热备:os下直接copy。因为oracle并不锁定此文件。
- pwd文件的热备:os下直接copy。因为oracle并不锁定此文件。
- archived log的热备:os下直接copy................................................这也算!
- rman方式下的热备:将隐藏一起手工的os的copy、路径、命名、历史记录问题。因此:十分推荐。不过要注意备份全相关的文件。否则处理起来也比较麻烦!
- exp逻辑倒出备份,注意nls_lang的设置问题
- expdp服务器倒出备份。注意设置directory对象
restore:
- 像spfile|pfile、pwdsid、archivedlog可以随时随地的restore,前提是他们确实是有效的
- controfile:在nomount状态下,可以利用之前的冷备份直接restore;
- datafile:在nomount状态下,可以利用之前的冷备份直接restore;
- rman方式下的restore:将隐藏一起手工的os的copy、路径、命名、历史记录问题。因此:十分推荐。
- imp逻辑导入
- impdp服务器逻辑导入
recover:没有什么可以说的,基本上就要依赖online redo 、archived redo 进行完全 或 不完全的恢复了!!!所以,archived redo 文件至关重要!
- rman方式下的recover:将隐藏一起手工的os的copy、路径、命名、历史记录问题。因此:十分推荐。
- recover {cancel|continue[default]} --mount--取消、继续recove会话
- recover logfile 'filespec' --mount--直接应用logfile进行recove会话
- 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。
- recover database until {cancel|time datatime|change scn} [using backup controlfile] --mount--recover整个数据库到时间点、scn、cancel
- recover tablespace tbs,...
- recover datafile {filenumber|filename},...
- recover standby tablespace tbs,... until controlfile
- recover standby datafile {filenumber|filename},... until controlfile
- recover managed standby database :
- using current logfile [nodelay] [disconnect]
- until change scn [nodelay] [disconnect]
- finish [force] [{wait|nowait}]
- cancel [{immediate|{wait|nowait}}]