oracle错误备忘(ORA-00354,ORA-00353和ORA-00312的处理方法)

简介:
昨天根据客户要求,增加了一个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这些损坏的日志文件的时候,通常回收到类似下面的错误:

ORA-00354: corrupt redo log block header

ORA-00353: log corruption near block 3740 change 0 time 04/11/2006 13:49:56  

ORA-00312: online log 1 thread 1: '/oracle/oradata/TSMISC02/redo01.log'

或者:

sys@TSMISC02> ALTER SYSTEM DUMP LOGFILE '/oracle/oradata/TSMISC02/redo01.log';

ALTER SYSTEM DUMP LOGFILE '/oracle/oradata/TSMISC02/redo01.log'

*

ERROR at line 1:

ORA-00354: corrupt redo log block header

ORA-00353: log corruption near block 3740 change 6918597 time 04/10/2006 23:53:24

ORA-00334: archived log: '/oracle/oradata/TSMISC02/redo01.log'

Elapsed: 00:00:03.36

sys@TSMISC02>

这里首先介绍一下oracle使用日志文件的策略。每一个数据库至少有两个或多个日志文件组(redo log group),每个组中至少有一个日志成员(redo log member)。日志文件的主要功能是真实完整的记录对数据库作的全部修改。在出现故障时,如果不能将修改数据永久地写入数据文件,则系统将利用日志前滚来恢复数据库数据文件。日志文件主要是保护数据库以防止故障。

如果LGWR 至少能够访问一个组内的某一个成员,那么oracle就会对这个组内的可访问成员继续照常进行读写操作,也就是说,LGWR 将忽略组内的不可用成员。如果在日志切换时LGWR 无法访问下一个组的所有成员或者损坏的日志文件时改组中日志成员,数据库的正常操作就无法进行了。这也就是oracle常说的,为了防止日志文件的故障或丢失,强烈建议镜象日志(mirrored redo log),即,在不同磁盘上维护至少两个或多个日志文件(redo log member)副本的作用——只要组内有一个可用的成员,oracle就会继续“正常”操作。

回到这里,如果数据库发生日志文件的上述损坏,不管是哪种原因造成的,解决方法无外乎是使用完好的文件恢复已经损坏的文件,或者初始化损坏的文件组等等(日志文件的故障处理不做这里的重点介绍,我将会在其他的文章中逐一说明和举例)。

我们这里主要是使用了_disable_loggingtrue这个隐含参数(实际性能故障诊断时,你可以通过alert.log找到相关信息)造成了归档数据库中,所有日志不能归档,最终数据库不能继续操作的问题,因此解决方法就是:

a)如果是使用了隐含参数,那么去掉这个隐含参数:

    alter system set "_disable_logging"=false scope=both;

b)然后,初始化损坏的redo log

alter database clear unarchived logfile '<logilename>'; 

例如:

sys@TSMISC02> alter system set "_disable_logging"=false scope=both;

System altered.

Elapsed: 00:00:00.01

sys@TSMISC02>

sys@TSMISC02> alter database clear unarchived logfile '/oracle/oradata/TSMISC02/redo02.log'; 

Database altered.

Elapsed: 00:00:00.18

sys@TSMISC02> alter database clear unarchived logfile '/oracle/oradata/TSMISC02/redo03.log'; 

Database altered.

Elapsed: 00:00:00.17

sys@TSMISC02>

OK,马上执行命令:
alter   database  clear unarchived logfile  ' D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG '

再打开数据库,一切正常,重新导入,问题解决。

我需要加强下对oracle基本故障处理方面知识的学习了。


文章转自庄周梦蝶  ,原文发布时间5.17

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
SQL 存储 Oracle
oracle错误代码大全(超详细)
本篇文章是对oracle错误代码进行了详细的总结与分析,需要的朋友参考下
1310 0
QGS
|
11月前
|
监控 Oracle 网络协议
Navicat Premium 12远程登入Oracle,mariadb报错及处理方法
Navicat Premium 12远程登入Oracle报错及处理方法
QGS
105 0
|
SQL Oracle 关系型数据库
解决Oracle的状态: 失败 -测试失败: IO 错误: The Network Adapter could not establish the connection
解决Oracle的状态: 失败 -测试失败: IO 错误: The Network Adapter could not establish the connection
1635 0
解决Oracle的状态: 失败 -测试失败: IO 错误: The Network Adapter could not establish the connection
|
Oracle 关系型数据库
oracle复杂查询备忘
oracle复杂查询备忘
|
SQL Oracle 关系型数据库
【数据库】解决 oracle: SQL 错误 [900] [42000]: ORA-00900: 无效 SQL 语句
【数据库】解决 oracle: SQL 错误 [900] [42000]: ORA-00900: 无效 SQL 语句
1928 0
【数据库】解决 oracle: SQL 错误 [900] [42000]: ORA-00900: 无效 SQL 语句
|
存储 Oracle 关系型数据库
常见Oracle错误都在这了: ORA-00257/ORA-00313/ORA-28000/ORA-28000
常见Oracle错误都在这了: ORA-00257/ORA-00313/ORA-28000/ORA-28000
常见Oracle错误都在这了: ORA-00257/ORA-00313/ORA-28000/ORA-28000
|
Oracle 安全 关系型数据库
出现身份验证错误,要求的函数不受支持(这可能是由于CredSSP加密Oracle修正)
出现身份验证错误,要求的函数不受支持(这可能是由于CredSSP加密Oracle修正)
|
Oracle 关系型数据库 Linux
Oracle 数据库设置最大进程数参数方法,oracle最大进程数满了处理方法,sysdba管理员登录报“maximum number of processes (150) exceeded“问题解决
Oracle 数据库设置最大进程数参数方法,oracle最大进程数满了处理方法,sysdba管理员登录报“maximum number of processes (150) exceeded“问题解决
937 0
Oracle 数据库设置最大进程数参数方法,oracle最大进程数满了处理方法,sysdba管理员登录报“maximum number of processes (150) exceeded“问题解决
|
运维 Oracle 关系型数据库
Oracle运维笔记之有关外部表的ORA-20011错误
Oracle运维笔记之有关外部表的ORA-20011错误
Oracle运维笔记之有关外部表的ORA-20011错误

推荐镜像

更多