因停电等不可控因素导致控制文件损坏

案例一、今天处理一家医院因停电导致数据库打不开,三个控制文件和日志文件均损坏

提示找不到控制文件,先去文件系统下确认控制文件是否丢失,若丢失一个,使用其他的控制文件直接复制一份即可,若全部丢失,需要使用rman恢复;

如果没有开启归档,则需要重建控制文件

使用不同控制文件启动oracle

alter system set control_files='控制文件路径' scope=spfile;

只能自己创建控制文件

首次尝试

  1. CREATE CONTROLFILE REUSE DATABASE "orcl" NORESETLOGS  NOARCHIVELOG --要看需要恢复的库是否开启归档,设置NORESTLOGS不会重写redo日志,保证数据一致性
  2.     MAXLOGFILES 16  
  3.     MAXLOGMEMBERS 3  
  4.     MAXDATAFILES 100  
  5.     MAXINSTANCES 8  
  6.     MAXLOGHISTORY 4672  
  7. LOGFILE  
  8.   GROUP 1 '存储路径+redo01.log'  SIZE 50M,  
  9.   GROUP 2 '存储路径+redo02.log'  SIZE 50M,  
  10.   GROUP 3 '存储路径+redo03.log'  SIZE 50M  
  11. -- STANDBY LOGFILE

    DATAFILE  

  12.  '路径+所有数据文件名称'
  13. CHARACTER SET ZHS16GBK;
  14. 遇到问题 
  15. 1、此步骤不需要创建临时表空间
  16. 2、注意逗号位置
  17. 3、遇到ORA-01192: must have at least one enabled thread
  18. 发现redo日志出现错误,将NORESETLOGS改为RESETLOGS成功创建;
  19. 再次重启报参数错误
  20. 执行create pfile ='c:\aa.ora' from spfile;
  21. shutdown immediate;
  22. 编辑aa.ora
  23. 末尾添加隐含参数_allow_resetlogs_corruption=true强制启动数据库,设置此参数之后,在数据库Open过程中,Oracle会跳过某些一致性检查,从而使数据库可能跳过不一致状态
  24. 重启数据库
  25. 执行startup mount pfile='c:\aa.ora';
  26. 成功启动;
  27. ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/app/oracle/oradata/orcl/temp02.dbf' size 100M;--添加一个临时数据文件
  28. 使用隐含参数_allow_resetlogs_corruption,以后可能会出现一些问题,为了保险起见,将数据导出后重建数据库实例。

案例二、又是停电,很频繁又难解决
这次的停电导致 ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务,怀疑是实例服务的问题,重启服务没效果,查阅http://blog.sina.com.cn/s/blog_5007d1b10100oqo8.html这篇文章,修改了listener.ora,重启实例服务和监听服务,进入空闲例程,
直接 startup 又报 ora-00119 ora- 00132 ,此处推荐一篇文章 http://blog.csdn.net/xb12369/article/details/26720275 ,按此方法解决,成功启动

案例三、
停电导致undo表空间损坏,错误代码ora00600[4194] 
重建undo表空间,修改pfile文件夹下的init.ora.2252016132644文件,根据http://www.cnblogs.com/xwdreamer/p/3778383.html提供的方法成功解决


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值