ITPub博客

首页 > 数据库 > Oracle > 重做日志的恢复

重做日志的恢复

原创 Oracle 作者:leon830216 时间:2014-02-23 22:01:27 0 删除 编辑
1. 准备工作
首先 run 一个 checkpoint, 减少已提交事务的丢失
alter system checkpoint;

启动到 mount 状态, 确定丢失日志文件状态
startup mount
select * from v$log;

如果生成 redo 文件失败, 先切换日志, 删除损坏日志, 再生成同名新日志


2. 恢复

2-1. 用户管理的恢复

2-1-1. 丢失非活动日志 (inactive)
由于已经完成检查点, 非活动日志所保护的数据都已写入 datafile, 只需重建该日志组即可

清除日志组
alter database clear logfile group 1

如果数据库处于归档模式, 并且该日志组尚未完成归档, 则需使用如下强制命令清除,会丢失归档日志
alter database clear unarchived logfile group 1

2-1-2. 丢失当前或活动日志 (current或active)

数据库正常关闭情况下, 由于数据库已完成检查点, 当前日志所保护的数据都已写入磁盘
恢复所有数据文件, 执行基于取消的不完全恢复
startup mount
recover database until cancel
alter database open resetlogs

数据库异常关闭情况下, 恢复所有数据文件, 执行给予取消的不完全恢复
需指定最后一个完好的归档日志用来完成恢复, 此操作将丢失联机 redo 日志的内的全部数据
startup mount
recover database until cancel
alter database open resetlogs

如果数据库没有备份并处于非归档模式, 则可利用隐含参数强制地忽略一致性打开数据库
成功打开后,exp -> 新建库 -> imp

alter system set "_allow_resetlogs_corruption"=true scope=spfile
shutdown immediate
startup mount
recover database using backup controlfile until cancel
cancel
alter database open resetlogs
shutdown immediate
startup

2-2. 基于RMAN的不完全恢复
startup mount;
run{
# 做不完全恢复时, 指定恢复执行的终点的日志序号
set until sequence 1 thread 2;
restore database;
recover database;
}
alter database open resetlogs;

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22558114/viewspace-1086572/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: RMAM基础命令
下一篇: 不完全恢复
请登录后发表评论 登录
全部评论

注册时间:2009-09-18

  • 博文量
    160
  • 访问量
    380449