ORA-00392ORA-00312日志正在清除故障

最近在还原Oracle数据库后open的时候碰到了ORA-00392: log 3 of thread 1 is being cleared, operation not allowed,其字面含义则是日志文件正在被清除,不允许操作。

通常情况下,当我们基于不完全恢复的时候,日志文件需要被清空,而此时是正在被清空。不是很好理解啊。下面是这个问题的解决方案。

一、故障现象

<code class="hljs vhdl">SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-00392: log 3 of thread 1 is being cleared, operation not allowed
ORA-00312: online log 3 thread 1: '/oradata/sincnet/redo03.log'
-- 查看故障描述信息
SQL> ho oerr ora 00392
00392, 00000, "log %s of thread %s is being cleared, operation not allowed"
// *Cause: An operation encountered this online log in the middle of being
// cleared. The command that began the clearing may have terminated
// without completing the clearing.
// *Action: If the clear command is still executing then wait for its
// completion. If it terminated then reissue the clear command, or
// drop the log.

--下面的SQL语句表名3个日志文件都处于clearing状态
SQL> select group#,bytes/1024/1024||'M',status from v$log;

GROUP# BYTES/1024/1024||'M' STATUS
---------- ----------------------------------------- ----------------
1 50M CLEARING
3 50M CLEARING_CURRENT
2 50M CLEARING</code>

二、故障处理

<code class="hljs vhdl"><code class="hljs vhdl">下面直接执行clear logfile 命令
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 1;
Database altered.
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 2;
Database altered.
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 3;
Database altered.
--再次查看状态,此时状态显示为常见的几种正常状态
SQL> select group#,bytes/1024/1024||'M',status from v$log;
GROUP# BYTES/1024/1024||'M' STATUS
---------- ----------------------------------------- ----------------
1 50M UNUSED
3 50M CURRENT
2 50M UNUSED
--再次尝试open resetlog,依旧错误,实例终止,需要upgrade
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01092: ORACLE instance terminated. Disconnection forced
ORA-00704: bootstrap process failure
ORA-39700: database must be opened with UPGRADE option
Process ID: 30553
Session ID: 1217 Serial number: 3
--查看是否存在pmon进程
SQL> ho ps -ef|grep pmon
oracle 30589 30440 0 16:02 pts/1 00:00:00 /bin/bash -c ps -ef|grep pmon
oracle 30591 30589 0 16:02 pts/1 00:00:00 grep pmon
--Author : Leshami
--Blog : http://blog.csdn.net/leshami
--下面尝试upgrade,因为当前基于一个11.2.0.1的备份恢复到11.2.0.4,所以需要upgrade
SQL> startup upgrade;
ORA-24324: service handle not initialized
ORA-01041: internal error. hostdef extension doesn't exist
SQL>
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@10134569 DBSRV]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Wed Feb 24 16:03:15 2016
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup upgrade;
ORACLE instance started.
Total System Global Area 1068937216 bytes
Fixed Size 2260088 bytes
Variable Size 704643976 bytes
Database Buffers 352321536 bytes
Redo Buffers 9711616 bytes
Database mounted.
Database opened.
SQL> @$ORACLE_HOME/rdbms/admin/catupgrd.sql; --执行升级脚本</code></code>

关于ORA-00392ORA-00312日志正在清除故障的教程小编就给大家介绍这么多,希望对大家有所帮助!

(0)

相关推荐

  • ORACLE DATAGUARD中手工处理日志v$archive_GAP的方法

    从9i以后,oracle dataguard 备库一般都不需要手工处理丢失的日志,FAL自动会帮我们处理,下面通过个案例来讲下手工处理丢失的日志的方法: 1.在备库查询有哪些日志丢失,没应用到备库 SQL> select * from V$ARCHIVE_GAP; THREAD# LOW_SEQUENCE# HIGH_SEQUENCE# ---------- ------------- -------------- 1 9873 9876 我们可以看到9873到9876这四个归档日志丢失, 2.

  • 教你怎样用Oracle方便地查看报警日志错误

    在网上查了几天的资料,尝试综合清除告警日志内容及建外部表的方式来解决这一问题. 一:备份并清除告警日志内容 将每天的告警日志备份好,然后进行清除. 1:备份报警日志 在$ORACLE_HOME/SID/bdump/   目录下, 按日期备份alert_ORACLE_你的实例名.LOG这个文件,如:alert_ORACLE_orcl_201408111639_bak.LOG. 2:清除日志内容 打开报警日志文件,用true > 文件名 可清除掉里面的内容 具体示例: 假如,我现在第一次进行该设置,

  • oracle 11g的警告日志和监听日志的删除方法

    oracle 11g的监听日志和警告日志都是在/u01/oracle/diag/tnslsnr/oracle/listener目录和/u01/oracle/diag/rdbms/db1/db1目录下都有以下分别简称listener目录和db1目录.这两目录下都有如下目录:alert cdump hm incident incpkg ir lck metadata stage sweep trace 其中警告日志在alert目录下,监听日志在trace目录下.listener目录下产生的日志文件比

  • Linux下Oracle归档日志自动清理脚本代码(sh)

    复制代码 代码如下: #!/bin/sh export BACK_DATE=`date +%Y%m%d` export BACKUP_PATH=/home/oracle/dbbak echo `mkdir -p ${BACKUP_PATH}/archivelog/${BACK_DATE}` rman msglog=$BACKUP_PATH/archivelog/${BACK_DATE}/arch_0_$BACK_DATE.log << EOF connect target /; delete

  • ORACLE 报警日志如何查看?第1/2页

    1.了解oracle外部表 外部表定义:结构被存放在数据字典,而表数据被放在OS文件中的表 作用:在数据库中查询OS文件的数据,还可以将OS文件数据装载到数据库中 与其它表的区别:在外部表上不能执行DML操作,也不能在外部表上建索引,只能执行select操用 2.建一个简单的外部表1.建一个OS上的文件 因为外部表主要是查看OS上的文件,首先在OS上建一个文件mkdir -p /oracle/ext vi /oracle/ext/ext.dat 10,20,30 40,50,60 70,80,9

  • oracle 如何关闭打开归档日志

    查看oracle数据库是否为归档模式 SQL> select name,log_mode from V$database; NAME LOG_MODE ------------------ ------------------------ TEST NOARCHIVELOG SQL> archive log list Database log mode No Archive Mode Automatic archival Disabled Archive destination USE_DB_

  • Oracle数据库系统紧急故障处理方法

    正在看的ORACLE教程是:Oracle数据库系统紧急故障处理方法.Oracle物理结构故障是指构成数据库的各个物理文件损坏而导致的各种数据库故障.这些故障可能是由于硬件故障造成的,也可能是人为误操作而引起.所以我们首先要判断问题的起因,如果是硬件故障则首先要解决硬件问题.在无硬件问题的前提下我们才能按照下面的处理方发来进一步处理. 控制文件损坏: 控制文件记录了关于oracle的重要配置信息,如数据库名.字符集名字.各个数据文件.日志文件的位置等等信息.控制文件的损坏,会导致数据库异常关闭.一

  • ORA-00392ORA-00312日志正在清除故障

    最近在还原Oracle数据库后open的时候碰到了ORA-00392: log 3 of thread 1 is being cleared, operation not allowed,其字面含义则是日志文件正在被清除,不允许操作. 通常情况下,当我们基于不完全恢复的时候,日志文件需要被清空,而此时是正在被清空.不是很好理解啊.下面是这个问题的解决方案. 一.故障现象 <code class="hljs vhdl">SQL> alter database open

  • SQL Server 数据库清除日志的方法

    方法一: 1.打开查询分析器,输入命令 BACKUP LOG database_name WITH NO_LOG 2.再打开企业管理器--右键要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至xxm,这里会给出一个允许收缩到的最小m数,直接输入这个数,确定就可以了. 方法二: 设置检查点,自动截断日志 一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大 1.设置数据库模式为简单模

  • VBS脚本也有GUI图形界面 日志清除功能

    使用方法:将下面的代码保存为rizhi.vbs双击运行即可,如果不行可能是杀毒软件的问题.可以搜索下.我们以前提供过解决方法. 复制代码 代码如下: set ie=wscript.createobject("internetexplorer.application","event_") '创建ie对象' ie.menubar=0 '取消菜单栏' ie.addressbar=0 '取消地址栏' ie.toolbar=0 '取消工具栏' ie.statusbar=0 '

  • SQL Server误区30日谈 第14天 清除日志后会将相关的LSN填零初始化

    误区 #14.清除日志后会将相关的LSN填零初始化 错误     当日志文件在手动增长,自动增长和创建时都会进行填零初始化操作.但是请不要把这个过程和定期清除日志的过程搞混.日志截断仅仅意味着将一个或多个VLF标记为不活动以便被重复使用.在日志清除的过程中,并没有任何日志被清除或是填0."清除日志"和"截断日志"意思是一样的,但都属于用词不当,因为在这个过程中日志的大小不会有任何改变. 你可以在我的博客中看到有关日志文件填零初始化的博文:Search Engine

  • SQL Server 2005删除日志文件的几种方法小结

    使用MS数据库的朋友就会知道一个问题,C盘的空间很容易被占满了.因为本来系统盘就分区比较小,这是由于数据库在使用过程中会使日志文件不断增加,使得数据库的性能下降,并且占用大量的磁盘空间.SQL Server数据库都有log文件,log文件记录用户对数据库修改的操作.可以通过直接删除log文件和清空日志在清除数据库日志. 一.删除LOG1.分离数据库.分离数据库之前一定要做好数据库的全备份,选择数据库--右键--任务--分离. 勾选删除连接 分离后在数据库列表将看不到已分离的数据库. 2.删除LO

  • 简单整理MySQL的日志操作命令

    1.首先确认你日志是否启用了 MySQL>show variables like 'log_bin'; 如果启用了,即ON那日志文件就在MySQL的安装目录的data目录下 2.怎样知道当前的日志 MySQL> show master status; 3.看二进制日志文件用MySQLbinlog shell>MySQLbinlog mail-bin.000001 或者 shell>MySQLbinlog mail-bin.000001 | tail 4.正确删除MySQL BIN-

  • SQLServer日志清空语句(sql2000,sql2005,sql2008)

    SQL Server日志清空方法 在查询分析器中顺序执行以下三步,其中 databasename 为你的数据库文件名 sql2000日志清空 可以将jb51.ldf文件变得很小,方便备份数据库等,在sqlserver查询分析器中执行即可. 复制代码 代码如下: DUMP TRANSACTION [jb51] WITH NO_LOGBACKUP LOG [jb51] WITH NO_LOGDBCC SHRINKDATABASE([jb51]) 1.清空日志: DUMP TRANSACTION [d

  • SQL Server 数据库备份和还原认识和总结(二)

    通过<SQL Server 数据库备份和还原认识和总结(一)>,相信您对数据备份和还原有了一个更深入的认识,在上文中我没有对事务日志做剖析,在此推荐宋沄剑的文章,对事务日志做了比较详细的讲解:http://www.jb51.net/article/31038.htm.本文将针对上文继续进行数据备份和还原讲解,主要讲解备份和还原的一些关键选项. 数据库备份选项 备份数据库时,有几个备份选项需要了解一下,覆盖介质.事务日志等.谈到覆盖介质时,必须先对这个概念有所了解,不然无从谈起. ● 介质集 (

  • Windows 2003 工作手册(3)

    二十一.如何对传入的连接禁用 NetBT 代理    版权所概要 默认情况下,在基于 Windows XP 和 Windows Server 2003 的系统上,对传入的远程访问服务 (RAS) 或虚拟专用网 (VPN) 连接启用 Netbios 代理.此设置允许 RAS 客户端在其所连接的局域网 (LAN) 中解析 Netbios 名称.在被配置为 RAS 或 VPN 服务器的计算机上,如果从命令外壳程序中运行 Ipconfig /all 命令,将返回信息显示WINS Proxy Enable

  • 利用Supervisor管理Redis进程的方法教程

    前言 Supervisor 是一个用 Python 实现的进程管理工具,可以很方便地启动,关闭,重启,查看,以及监控进程,当进程由于某种原因崩溃或者被误杀后,可以自动重启并发送事件通知.Supervisor 可谓运维利器,使用 Supervisor 来管理进程,可以提高系统的高可用特性. 随着 Redis 越来越流行,越来越多的公司都使用上了 redis,因此 Redis 的进程管理就成了很多公司都需要面临的问题,本文介绍如何使用 Supervisor 来管理 Redis 进程. Supervi

随机推荐