转载时请务必以超链接形式标明文章 原始出处和作者信息及本版权声明。
链接: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)
发表评论