oracle学习文档整理2

结论:
如果数据库是正常shutdown,非当前日志都可以直接clear来重新生成,而且不会丢失数据,因为正常关闭db,数据已经写入dbf文件了。
唯独当前日志不可以,当前日志必须首先从有效的备份中拷贝一个日志文件过来,然后用
alter database clear unarchived logfile group n;

方法二:用cancel模式恢复数据库
recover database until cancel;
alter database open resetlogs; --resetlogs就是根据控制文件让系统自动重新生成redo

结论:
如果数据库是正常关闭的,用recover database until cancel可以轻松恢复或者说重新建立所有的redo,不再区分是否
是当前日志,而且由于正常关闭不会丢失任何数据,唯一可能丢失的情况就是如果日志还没有归档这种恢复方法由于要
resetlogs所以在恢复完成后日志清零,以前的备份不再起作用,所以建议立即备份。

方法三:通过重新生成控制文件来恢复redo
alter database backup controlfile to trace;
创建控制文件
CREATE CONTROLFILE REUSE DATABASE "ORA9" RESETLOGS ARCHIVELOG
-- SET STANDBY TO MAXIMIZE PERFORMANCE
MAXLOGFILES 50
MAXLOGMEMBERS 5
MAXDATAFILES 100
MAXINSTANCES 1
MAXLOGHISTORY 226
LOGFILE
GROUP 1 '/T3/ORACLE/oradata/ORA9/redo01.log' SIZE 100M,
GROUP 2 '/T3/ORACLE/oradata/ORA9/redo02.log' SIZE 100M,
GROUP 3 '/T3/ORACLE/oradata/ORA9/redo03.log' SIZE 100M
-- STANDBY LOGFILE
DATAFILE
'/T3/ORACLE/oradata/ORA9/system01.dbf',
'/T3/ORACLE/oradata/ORA9/undotbs01.dbf',
'/T3/ORACLE/oradata/ORA9/cwmlite01.dbf',
'/T3/ORACLE/oradata/ORA9/drsys01.dbf',
'/T3/ORACLE/oradata/ORA9/example01.dbf',
'/T3/ORACLE/oradata/ORA9/indx01.dbf',
'/T3/ORACLE/oradata/ORA9/odm01.dbf',
'/T3/ORACLE/oradata/ORA9/tools01.dbf',
'/T3/ORACLE/oradata/ORA9/users01.dbf',
'/T3/ORACLE/oradata/ORA9/xdb01.dbf',
'/T3/ORACLE/oradata/ORA9/test01.dbf'
CHARACTER SET ZHS16GBK
;
另存为一个脚本运行@clone.sql
打开数据库alter database open resetlogs;

前三种方法都是假设db正常关闭,数据已经写入数据库文件中,所以不会由数据存在redo种,所以clear也不会丢失数据。

方法四:修改系统参数方法
shutdown abort 强行关闭数据库,手动模拟删除redo文件启动数据库后报错,尝试前面三种方法都无法恢复丢失的redo文件
修改init.ora,加入一行
_allow_resetlogs_corruption=true
启动with pfile
打开数据库alter database open resetlogs;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值