昨天根据客户要求,增加了一个jasperreport实现的报表打印功能,然后在测试服务器上测试通过,因为看到测试数据库上的数据都太“旧”了,我就从正式环境下导出了OA系统的数据,导出操作一切顺利,在导入过程中却由于网络问题中断(因为我是远程导入,备份文件在我的机器上)。再次连接数据库,一直报错,说什么只允许内部连接。远程重启了下oracle服务,登录数据库还是不行,发现数据库根本没打开,通过sqlplus执行
<!---->alter database open;
命令,报错:
<!---->
ORA-16014: 日志 1 的序列号 680 未归档, 没有可用的目的地
ORA-00312: 联机日志 1 线程 1: <!---->alter database clear unarchived logfile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG'
看情况是日志文件出错,幸好是测试服务器,把我这个对oracle管理一窍不通的家伙急坏了。马上baidu了下错误代码,找到一篇文章:
在日志文件损坏或者dump这些损坏的日志文件的时候,通常回收到类似下面的错误:<o:p></o:p>
ORA-00354: corrupt redo log block header<o:p></o:p>
ORA-00353: log corruption near block 3740 change 0 time 04/11/2006 13:49:56 <o:p></o:p>
ORA-00312: online log 1 thread 1: '/oracle/oradata/TSMISC02/redo01.log'<o:p></o:p>
或者:<o:p></o:p>
sys@TSMISC02> ALTER SYSTEM DUMP LOGFILE '/oracle/oradata/TSMISC02/redo01.log'; <o:p></o:p>
ALTER SYSTEM DUMP LOGFILE '/oracle/oradata/TSMISC02/redo01.log'<o:p></o:p>
*<o:p></o:p>
ERROR at line 1:<o:p></o:p>
ORA-00354: corrupt redo log block header<o:p></o:p>
ORA-00353: log corruption near block 3740 change 6918597 time 04/10/2006 23:53:24<o:p></o:p>
ORA-00334: archived log: '/oracle/oradata/TSMISC02/redo01.log'<o:p></o:p>
Elapsed: 00:00:03.36<o:p></o:p>
sys@TSMISC02><o:p></o:p>
这里首先介绍一下oracle使用日志文件的策略。每一个数据库至少有两个或多个日志文件组(redo log group),每个组中至少有一个日志成员(redo log member)。日志文件的主要功能是真实完整的记录对数据库作的全部修改。在出现故障时,如果不能将修改数据永久地写入数据文件,则系统将利用日志前滚来恢复数据库数据文件。日志文件主要是保护数据库以防止故障。
如果LGWR 至少能够访问一个组内的某一个成员,那么oracle就会对这个组内的可访问成员继续照常进行读写操作,也就是说,LGWR 将忽略组内的不可用成员。如果在日志切换时LGWR 无法访问下一个组的所有成员或者损坏的日志文件时改组中日志成员,数据库的正常操作就无法进行了。这也就是oracle常说的,为了防止日志文件的故障或丢失,强烈建议镜象日志(mirrored redo log),即,在不同磁盘上维护至少两个或多个日志文件(redo log member)副本的作用——只要组内有一个可用的成员,oracle就会继续“正常”操作。
回到这里,如果数据库发生日志文件的上述损坏,不管是哪种原因造成的,解决方法无外乎是使用完好的文件恢复已经损坏的文件,或者初始化损坏的文件组等等(日志文件的故障处理不做这里的重点介绍,我将会在其他的文章中逐一说明和举例)。<o:p></o:p>
我们这里主要是使用了_disable_logging=true这个隐含参数(实际性能故障诊断时,你可以通过alert.log找到相关信息)造成了归档数据库中,所有日志不能归档,最终数据库不能继续操作的问题,因此解决方法就是:<o:p></o:p>
(a)如果是使用了隐含参数,那么去掉这个隐含参数:<o:p></o:p>
alter system set "_disable_logging"=false scope=both;<o:p></o:p>
(b)然后,初始化损坏的redo log:<o:p></o:p>
alter database clear unarchived logfile '<logilename>'; <o:p></o:p>
例如:<o:p></o:p>
sys@TSMISC02> alter system set "_disable_logging"=false scope=both;<o:p></o:p>
System altered.<o:p></o:p>
Elapsed: 00:00:00.01<o:p></o:p>
sys@TSMISC02><o:p></o:p>
sys@TSMISC02> alter database clear unarchived logfile '/oracle/oradata/TSMISC02/redo02.log'; <o:p></o:p>
Database altered.<o:p></o:p>
Elapsed: 00:00:00.18<o:p></o:p>
sys@TSMISC02> alter database clear unarchived logfile '/oracle/oradata/TSMISC02/redo03.log'; <o:p></o:p>
Database altered.<o:p></o:p>
Elapsed: 00:00:00.17<o:p></o:p>
sys@TSMISC02>
OK,马上执行命令:
<!---->alter database clear unarchived logfile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG'
再打开数据库,一切正常,重新导入,问题解决。
我需要加强下对oracle基本故障处理方面知识的学习了。
分享到:
相关推荐
Oracle数据库不同版本间的客户端与服务端的连接问题通常涉及到安全和兼容性配置,这篇文章主要讲述了在Oracle 11g R2客户端尝试连接Oracle 19c服务端时,遇到了两个特定的错误:ORA-28040和ORA-01017,以及如何解决...
Oracle数据库发生ORA-04031错误原因浅析及处理 Oracle数据库是甲骨文公司提供的...本文通过对ORA-04031错误的分析和解决方法的介绍,旨在帮助读者更好地理解Oracle数据库中的ORA-04031错误,并提供了实用的解决方法。
ORA-00312: online log 1 thread 1: '/oradata/10g/db/instant/redo01.log' ``` 此错误表明,在尝试归档序列号为230的日志文件时出现了问题,并且达到了恢复文件目的地大小的限制。同时给出了具体的问题文件路径为`...
### Oracle 错误 ORA-00132 和 ORA-00214 解析及处理 #### 一、错误概述 在Oracle数据库管理过程中,遇到ORA-00132和ORA-00214这类错误时,往往意味着数据库配置或启动过程中出现了问题。下面将对这两个错误进行...
### Oracle ORA-12518 故障处理 #### 概述 在Oracle数据库管理过程中,遇到ORA-12518错误是较为常见的问题之一。此错误通常发生在客户端试图连接到数据库服务器的过程中,当监听器无法将客户端连接顺利地移交给...
本文将详细介绍如何在Windows和Linux操作系统下解决ORA-00702错误。 **ORA-00702错误解析** ORA-00702错误信息表明数据库实例试图访问一个尚未完全初始化的数据文件或控制文件。这可能是由于数据库在不正常的情况下...
### ERwin连接Oracle报ORA-01041内部错误,hostdef扩展名不存在的知识点解析 #### 一、问题背景及概述 在使用ERwin数据建模工具连接Oracle数据库时,可能会遇到ORA-01041内部错误提示:“hostdef扩展名不存在”。...
通过以上方法,我们可以有效地解决ORA-29275错误,并提高Oracle数据库的整体稳定性和数据完整性。需要注意的是,在实际操作过程中,应当根据具体情况选择最适合的解决方案。例如,在某些情况下,调整字段长度可能是...
在创建Oracle数据库连接时遇到的错误ORA-01017和ORA-02063涉及到用户认证问题以及Oracle数据库版本之间的差异处理。ORA-01017错误表示用户名或密码无效,登录被拒绝,而ORA-02063则通常表示在Oracle数据库之间进行...
然而,有时在使用Navicat连接Oracle数据库时可能会遇到各种问题,如"ORA-12737 InstantClientLight"错误。本文将深入探讨这个错误及其解决方案,同时也会涉及Navicat与Oracle的集成以及InstantClient的相关知识。 ...
在使用Oracle Data Pump工具IMPDP(Import Data Pump)进行数据导入的过程中,可能会遇到ORA-39002和ORA-39070等错误。本文将针对这些错误的排查方法进行详细介绍,帮助用户理解问题的原因及解决策略。 ### 错误...
ORA-00604: 递归SQL层1出现错误 ORA-03106: 致命的双工通信协议错误 ORA-02063: 紧接着line(源于dblink) 以及 ORA-04052: 在查找远程对象时出错 ORA-00604: 递归SQL层1出现错误 ORA-03120: 双工转换例行程序:整数...
错误描述:oracle远程连接服务器出现 ORA-12170 TNS:连接超时 错误检查:有很多是oracle自身安装的问题,但是我这里服务器配置正常,监听正常,服务正常,远程可以ping通服务器。 这里主要是防火墙问题,解决办法: ...
ora-00604 错误 解决 方法 ora-00604 错误 解决 方法 ora-00604 错误 解决 方法 ora-00604 错误 解决 方法 ora-00604 错误 解决 方法ora-00604 错误 解决 方法
在Oracle数据库的日常管理和运维中,我们经常遇到各种"ORA-"开头的错误代码,这些错误代码是Oracle系统用来标识特定问题的。Oracle数据库是全球广泛使用的数据库管理系统,它提供了复杂的数据存储、处理和管理功能。...
当尝试使用Kettle连接Oracle 12c时,可能会遇到错误"ORA-28040:没有匹配的验证协议"。这个错误通常意味着客户端和服务器之间的安全认证不兼容。 **ORA-28040错误的解释:** 此错误通常出现在Oracle数据库服务器...
之前用PL/SQL DEVELOPER和SQLPLUS 登录数据库都没有问题,就是应用程序通过JDBC连接Oracle时无法成功连接,出现ORA-12505错误listener does not currently know of SID given in connect descriptor