显示归档日志的基本信息


转载时请务必以超链接形式标明文章 原始出处和作者信息及本版权声明
链接:http://www.dbasky.net/archives/2009/02/post-4.html
    转载AnySQL.net的一篇文章
    地址:http://www.anysql.net/tools/new_tool_lslog.html
      如何判断一个归档日志保存了从那个SCN开始到那个SCN结束的数据库修改? 或者从那个时间开始到那个时间结束的修改? 首先我们会从V$LOG_HISTORY, V$ARCHIVED_LOG等视图中去查找, 但这些视图只保存了最近一段时间内的归档日志的信息, 如果将control file record keep time参数设得小一些, 可能保存不了多条信息. 另一种方法是将归档日志文件的文件头DUMP出来, 你可以看到以下信息:
FILE HEADER:
......
Low scn: 0x031f.05c00824 08/23/2006 19:08:21
Next scn: 0x031f.05c00990 08/23/2006 19:08:58
......
    但DUMP日志文件显得比较麻烦, 根据前段时间研究LOG的成果, 写了一个小工具lslog, 可以用来查看这些信息:

$> lslog file=PROD_26375.arc
26375,3436537083312,2006-11-12 18:13:57,3436537256045,2006-11-12 21:09:24
    命令输出中用逗号分隔成5个字段, 依次是:

1, Log Sequence
2, Start SCN
3, Start Time
4, Next Log Start SCN
5, Next Log Start Time
    这个命令可以跨平台显示信息, 支持显示8i/9i/10g的日志文件. 如下所示:

SQL> SELECT FIRST_CHANGE#,FIRST_TIME,NEXT_CHANGE#
  2  FROM V$LOG_HISTORY WHERE SEQUENCE#=26375;

   FIRST_CHANGE# FIRST_TIME              NEXT_CHANGE#
---------------- ------------------- ----------------
   3436537083312 2006-11-12 18:13:57    3436537256045

00:36:55 SQL> select FIRST_TIME from  v$log_history where SEQUENCE#=26376;

FIRST_TIME
-------------------
2008-11-12 21:09:24

    总是写一些无用的工具, 需要请下载(http://ww.dbasky.net/tool/lslog.zip)

发表评论

Close