ORACLE 视图之V$LOG

V$LOG视图展示ORACLE online redo的信息.

ExpandedBlockStart.gif 代码
SQL >   select   *   from  v$ log
  
2    /
 
    
GROUP #    THREAD#  SEQUENCE#      BYTES    MEMBERS ARCHIVED STATUS           FIRST_CHANGE# FIRST_TIME
-- -------- ---------- ---------- ---------- ---------- -------- ---------------- ------------- -----------
          1            1            6     52428800            1  NO       INACTIVE                6139037   2009 - 12 - 8   2
         
2            1            8     52428800            1  NO        CURRENT                  6139054   2009 - 12 - 8   2
         
3            1            0     52428800            1  NO       UNUSED                  6139039   2009 - 12 - 8   2

 

可以看该实例有三个日志组(GROUP#),每个日志组有一个成员(MEMBERS). 状态INACTIVE表示crash recovery不需要此日志文件.CURRENT表示是当前日志文件,

UNUSED建立之后未曾写入.FIRST_CHANGE#表示该日志组 LOWEST SCN.

首先来看两个重要的SCN,第一个系统SCN,表示当前系统的变化状态:

SQL >   select  dbms_flashback.get_system_change_number  from  dual
  
2    /
 
GET_SYSTEM_CHANGE_NUMBER
-- ----------------------
                  6139710

 各数据文件SCN:

ExpandedBlockStart.gif 代码
SQL >    select   FILE #,STATUS,CHECKPOINT_CHANGE#,RESETLOGS_CHANGE#  from  V$DATAFILE_HEADER
  
2    /
 
     
FILE # STATUS  CHECKPOINT_CHANGE# RESETLOGS_CHANGE#
-- -------- ------- ------------------ -----------------
          1  ONLINE              6140215             5925484
         
2  ONLINE              6140215             5925484
         
3  ONLINE              6140215             5925484
         
4  ONLINE              6140215             5925484
         
5  ONLINE              6140215             5925484
         
6  ONLINE              6140215             5925484
         
7  ONLINE              6140215             5925484

从控制文件获得各数据文件SCN,即从V$DATAFILE视图,在数据库正常运行时,他们两个是相同的.

V$LOG FIRST_CHANGE#,下一个序号的日志的FIRST_CHANGE#之间的日志信息,都保存在这个日志文件中,如果有一个数据文件的CHECKPOINT_CHANGE#在他们之间,说明这个日志中有没有CHECKPOINT的数据该日志不能清除.例如: 

 

ExpandedBlockStart.gif 代码
SQL >   select   *   from  v$ log
  
2    /
 
    
GROUP #    THREAD#  SEQUENCE#      BYTES    MEMBERS ARCHIVED STATUS           FIRST_CHANGE# FIRST_TIME
-- -------- ---------- ---------- ---------- ---------- -------- ---------------- ------------- -----------
          1            1           14     52428800            2  NO       INACTIVE                6176759   2009 - 12 - 8   2
         
2            1           15     52428800            1  NO       ACTIVE                  6176761   2009 - 12 - 8   2
         
3            1           16     52428800            1  NO        CURRENT                  6176772   2009 - 12 - 8   2
 
SQL
>   select   FILE #,STATUS,CHECKPOINT_CHANGE#,ONLINE_CHANGE#  from  v$datafile
/  
    
FILE # STATUS  CHECKPOINT_CHANGE# ONLINE_CHANGE#
-- -------- ------- ------------------ --------------
          1  SYSTEM              6176761          5925484
         
2  ONLINE              6176761          5925484
         
3  ONLINE              6176761          5925484
         
4  ONLINE              6176761          5925484
         
5  ONLINE              6176761          5925484
         
6  ONLINE              6176761          5925484
         
7  ONLINE              6176761          5925484

 

 数据文件的SCN是6176761 小于系统SCN 6176897 日志组2的FIRST_CHANGE#是6176761,显然有一部脏数据未提交到数据文件.此时执行

ExpandedBlockStart.gif 代码
SQL >    ALTER   DATABASE  CLEAR LOGFILE  GROUP   2
  
2    /
ALTER   DATABASE  CLEAR LOGFILE  GROUP   2
ORA
- 01624 : 日志  2  是紧急恢复实例 log2 (线程  1 ) 所必需的
ORA
- 00312 : 联机日志  2  线程  1 ' D:\ORACLE\PRODUCT\10.2.0\ORADATA\LOG2\REDO02.LOG '

这时执行alter system CHECKPINIT. 或者等一会ALTER DATABASE CLEAR LOGFILE GROUP 2就会成功.再 看v$datafile的CHECKPOINT_CHANGE#

可能已经等于当前日志的SCN了,上一个日志对于CRASH RECORY已失去作用.

转载于:https://www.cnblogs.com/anran_guojianjun/archive/2009/12/08/1619798.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值