oracle数据库中clear,ALTER DATABASE CLEAR UNARCHIVED LOGFILE的使用

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

1e26a96472f42e4a98719a68033dd499.png

我们需要注意上图中的两个字段: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状态的日志组。

相关文章:

《Redo丢失的4种情况及处理方法》:http://blog.itpub.net/23135684/viewspace-626935/

--end--

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值