因停电等不可控因素导致控制文件损坏
2016-07-22 17:12
260 查看
案例一、今天处理一家医院因停电导致数据库打不开,三个控制文件和日志文件均损坏
提示找不到控制文件,先去文件系统下确认控制文件是否丢失,若丢失一个,使用其他的控制文件直接复制一份即可,若全部丢失,需要使用rman恢复;
如果没有开启归档,则需要重建控制文件
使用不同控制文件启动oracle
alter system set control_files='控制文件路径' scope=spfile;
只能自己创建控制文件
首次尝试
CREATE CONTROLFILE REUSE DATABASE "orcl" NORESETLOGS NOARCHIVELOG
--要看需要恢复的库是否开启归档,设置NORESTLOGS不会重写redo日志,保证数据一致性
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 4672
LOGFILE
GROUP 1 '存储路径+redo01.log' SIZE 50M,
GROUP 2 '存储路径+redo02.log' SIZE 50M,
GROUP 3 '存储路径+redo03.log' SIZE 50M
-- STANDBY LOGFILE
DATAFILE
'路径+所有数据文件名称'
CHARACTER SET ZHS16GBK;
遇到问题
1、此步骤不需要创建临时表空间
2、注意逗号位置
3、遇到ORA-01192: must have at least one enabled thread
c121
发现redo日志出现错误,将NORESETLOGS改为RESETLOGS成功创建;
再次重启报参数错误
执行create pfile ='c:\aa.ora' from spfile;
shutdown immediate;
编辑aa.ora
末尾添加隐含参数_allow_resetlogs_corruption=true强制启动数据库,设置此参数之后,在数据库Open过程中,Oracle会跳过某些一致性检查,从而使数据库可能跳过不一致状态
重启数据库
执行startup mount pfile='c:\aa.ora';
成功启动;
ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/app/oracle/oradata/orcl/temp02.dbf'
size 100M;--添加一个临时数据文件
使用隐含参数_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提供的方法成功解决
提示找不到控制文件,先去文件系统下确认控制文件是否丢失,若丢失一个,使用其他的控制文件直接复制一份即可,若全部丢失,需要使用rman恢复;
如果没有开启归档,则需要重建控制文件
使用不同控制文件启动oracle
alter system set control_files='控制文件路径' scope=spfile;
只能自己创建控制文件
首次尝试
CREATE CONTROLFILE REUSE DATABASE "orcl" NORESETLOGS NOARCHIVELOG
--要看需要恢复的库是否开启归档,设置NORESTLOGS不会重写redo日志,保证数据一致性
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 4672
LOGFILE
GROUP 1 '存储路径+redo01.log' SIZE 50M,
GROUP 2 '存储路径+redo02.log' SIZE 50M,
GROUP 3 '存储路径+redo03.log' SIZE 50M
-- STANDBY LOGFILE
DATAFILE
'路径+所有数据文件名称'
CHARACTER SET ZHS16GBK;
遇到问题
1、此步骤不需要创建临时表空间
2、注意逗号位置
3、遇到ORA-01192: must have at least one enabled thread
c121
发现redo日志出现错误,将NORESETLOGS改为RESETLOGS成功创建;
再次重启报参数错误
执行create pfile ='c:\aa.ora' from spfile;
shutdown immediate;
编辑aa.ora
末尾添加隐含参数_allow_resetlogs_corruption=true强制启动数据库,设置此参数之后,在数据库Open过程中,Oracle会跳过某些一致性检查,从而使数据库可能跳过不一致状态
重启数据库
执行startup mount pfile='c:\aa.ora';
成功启动;
ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/app/oracle/oradata/orcl/temp02.dbf'
size 100M;--添加一个临时数据文件
使用隐含参数_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提供的方法成功解决
相关文章推荐
- Struts2 文件上传为什么会自动生成对应file的fileName和ContentType
- json 数据 添加 删除 排序
- struts.xml constant说明
- nginx非80端口单tomcat动静分离设置
- 在互联网你的请求是如何被引导、劫持到cache设备的?方式及原理总结
- 文章标题
- 2016 Multi-University Training Contest 2 Eureka
- 链接(3)
- 前端开发填坑笔记
- js判断对象是否为空
- 带权并查集
- 分享一点在用Qt编写计算器的过程中所遇到的问题(主要是信号和槽的问题)大神们就没必要看了,都是一些小白摸爬打滚的经验
- 多屏幕适配
- 1.17 k阶斐波那契序列的第m项值的函数算法
- react-native 在android运行时报UNEXPECTED TOP-LEVEL EXCEPTION
- HDU 5745 La Vie en rose
- 2016多校联赛2D La Vie en rose(hdu 5745)
- ffmpeg.c函数结构简单分析(画图)
- 最长公共递增子序列
- tomcat的maxThreads、acceptCount(最大线程数、最大排队数)