CLEAR   UNARCHIVED   LOGFILE的使用

ALTER DATABASE CLEAR UNARCHIVED LOGFILE的使用

在进入今天主题之前,先来讨论一个v$log动态性能视图的两个字段:

我们需要注意上图中的两个字段:STATUS和ARCHIVED

STATUS有3种状态:CURRENT,ACTIVE和INACTIVE;在发生日志切换的时候,会触发数据库执行一次CHECKPOINT,CHECKPOINT会触发DBWn进程将内存中的脏数据写入到硬盘,一旦写入完成,之前的日志组的STATUS就会变成INACTIVE,表示如果此时发生宕机,不再需要改日志组的日志进行实例恢复,反之,需要用到该日志组的日志完成实例恢复;在实际的工作中发现,对于一个”不忙“的数据库,日志组ACTIVE的状态可能持续数小时,如果此时停电或异常关闭,将可能丢失两个日志组的数据;从这点来说,为了数据的安全,日志组成员不应设置的过大,应该有一个“适合”的大小。

ARCHIVED有两种状态:YES,NO;YES表示ARCH进程已经将该日志组的Online Redo LogFile拷贝到归档目的地,成为一个Archived Redo Logfile,NO表示还没有拷贝完成。日志组的状态和日志组是否归档之间是没有必然的联系,它们分别由不同的进程来控制。在出现故障,需要手动恢复的时候,我们应该注意观察最新的日志组状态及是否归档,这可能帮助到我们的恢复过程,另外,V$LOG的数据来源于控制文件,所以恢复的控制文件或重建的控制文件不能说明数据库最新的日志组状态。

下面通过一个简单的例子来讨论ALTER DATABASE CLEAR UNARCHIVED LOGFILE的使用:
C:\Users\LIUBINGLIN>sqlplus / as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on 星期五 1月 4 23:22:26 2013

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options

SQL> select status from v$instance;

STATUS
------------
OPEN

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area  267825152 bytes
Fixed Size                  1384044 bytes
Variable Size             109052308 bytes
Database Buffers          150994944 bytes
Redo Buffers                6393856 bytes
数据库装载完毕。
SQL> select group#,thread#,sequence#,status from v$log;

GROUP#    THREAD#  SEQUENCE# STATUS
---------- ---------- ---------- ----------------
         4          1         41 CURRENT
         3          1          0 UNUSED

SQL> alter database clear unarchived logfile group 4;

数据库已更改。

SQL> alter database open;

数据库已更改。

SQL> select group#,thread#,sequence#,status from v$log;

GROUP#    THREAD#  SEQUENCE# STATUS
---------- ---------- ---------- ----------------
         3          1         42 CURRENT
         4          1          0 UNUSED

SQL> shutdown abort
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area  267825152 bytes
Fixed Size                  1384044 bytes
Variable Size             109052308 bytes
Database Buffers          150994944 bytes
Redo Buffers                6393856 bytes
数据库装载完毕。
SQL> select group#,thread#,sequence#,status from v$log;

GROUP#    THREAD#  SEQUENCE# STATUS
---------- ---------- ---------- ----------------
         4          1          0 UNUSED
         3          1         42 CURRENT

SQL> alter database clear unarchived logfile group 3;
alter database clear unarchived logfile group 3
*
第 1 行出现错误:
ORA-01624: 日志 3 是紧急恢复实例 orcl (线程 1) 所必需的
ORA-00312: 联机日志 3 线程 1: ‘F:\APP\ORACLE\ORADATA\ORCL2\REDO03.LOG‘

SQL> alter database open;

数据库已更改。

SQL> select group#,thread#,sequence#,status from v$log;

GROUP#    THREAD#  SEQUENCE# STATUS
---------- ---------- ---------- ----------------
         3          1         42 INACTIVE
         4          1         43 CURRENT

SQL> alter system switch logfile;

系统已更改。

SQL> shutdown abort
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area  267825152 bytes
Fixed Size                  1384044 bytes
Variable Size             109052308 bytes
Database Buffers          150994944 bytes
Redo Buffers                6393856 bytes
数据库装载完毕。
SQL> select group#,thread#,sequence#,status from v$log;

GROUP#    THREAD#  SEQUENCE# STATUS
---------- ---------- ---------- ----------------
         4          1         43 ACTIVE
         3          1         44 CURRENT

SQL> alter database clear unarchived logfile group 4;
alter database clear unarchived logfile group 4
*
第 1 行出现错误:
ORA-01624: 日志 4 是紧急恢复实例 orcl (线程 1) 所必需的
ORA-00312: 联机日志 4 线程 1: ‘F:\APP\ORACLE\ORADATA\ORCL2\REDO04.LOG‘

总结:ALTER DATABASE CLEAR UNARCHIVED LOGFILE只能用于清除正常关闭下的CURRENT状态的日志组。

时间: 2024-08-12 17:39:55

CLEAR   UNARCHIVED   LOGFILE的使用的相关文章

记录一则clear重做日志文件的案例

1.官方文档描述 2.故障报错信息 3.分析解决问题 1.官方文档描述 关于Clearing a Redo Log File的官方文档描述: A redo log file might become corrupted while the database is open, and ultimately stop database activity because archiving cannot continue. In this situation the ALTER DATABASE CL

20、oracle用户管理恢复

下面会一一讲解控制文件.redo文件及非归档模式.归档模式数据文件丢失的情况下,如何恢复数据? (1)控制文件(controlfile)丢失 在做恢复实验之前,先备份好数据. 案例1.模拟一个控制文件丢失 select name from v$controlfile; SQL> select name from v$controlfile; NAME -------------------------------------------------------------------------

6数据库物理文件管理

ORACLE文件组成:控制文件,数据文件,日志文件 控制文件    相关视图:    V$DATABASE    V$CONTROLFILE    V$CONTROLFILE_RECORD_SECTION    V$PARAMETER查看控制文件信息:SELECT TYPE,RECORD_SIZE,RECORDS_TOTAL,RECORDS_USED FROM V$CONTROLFILE_RECORD_SECTION; TYPE                 RECORD_SIZE RECOR

OCP-V13-003

QUESTION 3 Your database is in ARCHIVELOG mode. You have two online redo log groups, each of which contains one redo member. When you attempt to start the database, you receive the following errors: ORA-00313: open failed for members of log group 1 o

ORACLE之常用FAQ V1.0

[B]第一部分.SQL&PL/SQL[/B][Q]怎么样查询特殊字符,如通配符%与_[A]select * from table where name like 'A\_%' escape '\' [Q]如何插入单引号到数据库表中[A]可以用ASCII码处理,其它特殊字符如&也一样,如 insert into t values('i'||chr(39)||'m');  -- chr(39)代表字符'或者用两个单引号表示一个or insert into t values('I''m');  

【恢复,1】 redo 日志恢复的各种情况

Recovering After the Loss of Online Redo Log Files If a media failure has affected the online redo logs of a database, then the appropriate recovery procedure depends on the following considerations: The configuration of the online redo log: mirrored

Oracle数据文件在open状态被删除的恢复记录

1.查看当前状态: SQL> select status from v$instance; STATUS------------OPEN SQL> show parameter name; NAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------db_file_name_convert 

简单记录一次REDO文件损坏报错 ORA-00333重做日志读取块出错

一.故障描述 首先是实例恢复需要用到的REDO文件损坏 二.解决方法 1.对于非当前REDO或者当前REDO但是无活动事务使用以下CLEAR命令: 用CLEAR命令重建该日志文件SQL>alter database clear logfile group 3: 如果是该日志组还没有归档,则需要用SQL>alter database clear unarchived logfile group 3: 因为是当前实例恢复需要用的REDO,且未归档,使用是CLEAR命令不行的. 2.没备份,有备份可

Oracle 归档错误案例

Oracle 归档错误案例 系统环境: 操作系统: RedHat EL55 Oracle :   Oracle 11.2.0.1.0 案例:    客户数据库服务器的归档日志空间被塞满,未发现:DBA在发现日志切换被hang后,强制关了库,导致实例启动失败...... 错误现象: 在做日志归档时,数据库被hang...... 16:56:02 [email protected] prod>alter system switch logfile; 告警日志: ORACLE Instance pro