首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>linux数据库>oracle>正文

Oracle9i LogMiner日志分析工具入门

http://www.oklinux.cn  2007-04-09  来源: dragonchen.cublog.cn dragonchen.cublog.cn  会员收藏  游客收藏  【 】 

 1.  安装LogMiner
    LogMiner工具实际上是由两个PL/SQL内建包((DBMS_LOGMNR 和 DBMS_ LOGMNR_D)和四个V$动态性能视图(视图是在利用过程DBMS_LOGMNR.START_LOGMNR启动LogMiner时创建)组成。
    LOGMINER安装包包括3个文件:DBMSLM.SQL,DBMSLMD.SQL,PRVTLM.PLB,prvtlmd.plb
    如果LOGMINER有问题,把这4个文件都运行一遍,PLB文件的运行方式同SQL文件。
    安装LogMiner工具,要运行两个脚本,这两个脚本必须均以SYS管理员身份运行。
$ORACLE_HOME/rdbms/admin/dbmslm.sql   #用来创建DBMS_LOGMNR包,该包用来分析日志文件。
$ORACLE_HOME/rdbms/admin/dbmslmd.sql  #用来创建DBMS_LOGMNR_D包,该包用来创建数据字典文件。 
2.  创建LogMiner所需的数据字典文件
    LogMiner分析日志文件时,需要参考数据库的数据字典。如果没有它,LogMiner解释出来的语句中关于数据字典中的部分(如表名、列名等)和数值都将是16进制的形式,我们是无法直接理解的。例如,下面的sql语句: 
  INSERT INTO dm_dj_swry (rydm, rymc) valueS (00005, '张三'); 
LogMiner解释出来的结果将是下面这个样子, 
  insert into Object#308(col#1, col#2) 
  values (hextoraw('c30rte567e436'),hextoraw('4a6f686e20446f65')); 
    所以,创建数据字典的目的就是让LogMiner引用涉及到内部数据字典中的部分时为他们实际的名字,而不是系统内部的16进制。
    有3种可选的方式,供LogMiner访问数据字典。
1)直接访问数据库中在线的数据字典。
    这种方式简单,方便,但是由于数据字典是当前最新的,可能不匹配过去的log中的信息。
在启动logMiner进行分析的时候,使用DICT_FROM_ONLINE_CATALOG选项。
EXECUTE dbms_logmnr.start_logmnr(options =>dbms_logmnr.DICT_FROM_ONLINE_CATALOG);

2)将数据字典导出为一个文本文件。
    数据字典文件是一个文本文件,使用包DBMS_LOGMNR_D来创建。如果我们要分析的数据库中的表有变化,影响到库的数据字典也发生变化,这时就需要重新创建该字典文件。另外一种情况是在分析另外一个数据库文件的重作日志时,也必须要重新生成一遍被分析数据库的数据字典文件。
    首先在初始化参数文件(pfile或者spfile)中,添加参数UTL_FILE_DIR,对于LogMiner来说,该参数值为服务器中放置数据字典文件的目录。如:UTL_FILE_DIR = (D:Oraclelogs)
重新启动数据库,使新加的参数生效,然后创建数据字典文件:
SQL> EXECUTE dbms_logmnr_d.build(
dictionary_filename => ' logmn_ora817.dat'
dictionary_location => ' D:Oraclelogs ');  # 注意,一定要指定这个参数,而且必须和UTL_FILE_DIR参数所指的目录相同。
    创建数据字典是让LogMiner引用涉及到内部数据字典中的部分时使用对象的名称,而不是系统内部的16进制的ID。如果我们要分析的数据库中的表有变化,影响到库的数据字典也发生变化,就需要重新创建该字典。

3)将数据字典导出到log文件中。
    要将数据库字典信息提取到重做日志文件,数据库必须处于ARCHIVELOG 模式。
导出时,使用STORE_IN_REDO_LOGS 选项。例如:
SQLPLUS>EXECUTE DBMS_LOGMNR_D.BUILD (
SQLPLUS>options => DBMS_LOGMNR_D.STORE_IN_REDO_LOGS);


2005年4月13日,看到这里。/oracle/oracle9i/oradata/Test01/logMiner_ora920.dat离线数据字典文件已经导出。

3.  添加要分析的日志文件
Logminer可以用来分析在线的重做日志文件和归档日志文件,但是我们一般建议使用归档的日志文件。
a.添加新的日志文件:
SQL> EXECUTE dbms_logmnr.add_logfile(
LogFileName=>' D:databaseoracleoradataora817archiveARC01491.001 ', Options=>dbms_logmnr.new); 

b.添加另外的日志文件到列表
SQL> EXECUTE dbms_logmnr.add_logfile(
LogFileName=>' D:databaseoracleoradataora817archiveARC01491.002', Options=>dbms_logmnr.addfile);
关于这个日志文件列表中需要分析日志文件的个数完全由你自己决定,但这里建议最好是每次只添加一个需要分析的日志文件,在对该文件分析完毕后,再添加另外的文件。

c. 移去一个日志文件
SQL> EXECUTE dbms_logmnr.add_logfile(
LogFileName=>' D:databaseoracleoradataora817archiveARC01491.002', Options=>dbms_logmnr. REMOVEFILE);

创建了要分析的日志文件,就可以对其进行分析。

4.  开始日志分析
无限制条件:
a)使用导出的文本文件数据字典。
SQL> EXECUTE dbms_logmnr.start_logmnr(
DictFileName=>' D:Oraclelogslogmn_ora817.dat '); #有时会出现日期错误。
b)直接使用在线的数据字典。
EXECUTE dbms_logmnr.start_logmnr(options =>dbms_logmnr.DICT_FROM_ONLINE_CATALOG);
c)使用导出到log文件中的数据字典。
EXECUTE dbms_logmnr.start_logmnr(options =>dbms_logmnr.DICT_FROM_REDO_LOGS);

可以使用相应的限制条件:
时间范围:对dbms_logmnr.start_logmnr使用StartTime和EndTime参数
SCN范围:对dbms_logmnr.start_logmnr使用StartScn和EndScn参数
    通过对过程DBMS_ LOGMNR.START_LOGMNR中几个不同参数的设置,可以缩小要分析日志文件的范围。通过设置起始时间和终止时间参数我们可以限制只分析某一时间范围的日志。如下面的例子,我们仅仅分析2001年9月18日的日志,: 
SQL> EXECUTE dbms_logmnr.start_logmnr( DictFileName => ' e:oraclelogsv816dict.ora ', StartTime => to_date('2001-9-18 00:00:00','YYYY-MM-DD HH24:MI:SS') ,EndTime => to_date(''2001-9-18 23:59:59','YYYY-MM-DD HH24:MI:SS ')); 

也可以通过设置起始SCN和截至SCN来限制要分析日志的范围: 
SQL> EXECUTE dbms_logmnr.start_logmnr( DictFileName => ' e:oraclelogsv816dict.ora ', StartScn => 20, EndScn => 50); 

5. 查看分析结果
v$logmnr_logs视图??用来做什么?
在v$logmner_contents视图中查看分析结果。
SQL_REDO VARCHAR2(4000)
SQL_UNDO VARCHAR2(4000)
这两个字段很关键,你如果想重做就执行sql_redo的SQL,
如果想undo可以执行sql_undo的SQL。

例如:
select operation,sql_redo,sql_undo from v$logmnr_contents
WHERE username='DB_ZGXT' AND tablename='SB_DJJL';

OPERATION  SQL_REDO                                                                         SQL_UNDO
---------- -------------------------------------------------------------------------------- --------------------------------------------------------------------------------
INSERT     insert into "QUEST"."QUEST_IX_BKG_EVENT_SNAP"("INSTANCE_ID","SNAPSHOT_TIME","TOT delete from "QUEST"."QUEST_IX_BKG_EVENT_SNAP" where "INSTANCE_ID" = '121' and "S
INSERT     insert into "QUEST"."QUEST_IX_BKG_EVENT_SNAP"("INSTANCE_ID","SNAPSHOT_TIME","TOT delete from "QUEST"."QUEST_IX_BKG_EVENT_SNAP" where "INSTANCE_ID" = '121' and "S

通过手工执行SQL_UNDO,恢复所作的操作

需要强调一点的是,视图v$logmnr_contents中的分析结果仅在我们运行过程'dbms_logmrn.start_logmnr'这个会话的生命期中存在。这是因为所有的LogMiner存储都在PGA内存中,所有其他的进程(会话)是看不到它的,同时随着进程的结束,分析结果也随之消失。 

最后,使用过程DBMS_LOGMNR.END_LOGMNR终止日志分析事务,此时PGA内存区域被清除,分析结果也随之不再存在。 

6.  其它注意事项  

我们可以利用LogMiner日志分析工具来分析其他数据库实例产生的重作日志文件,而不仅仅用来分析本身安装LogMiner的数据库实例的redo logs文件。使用LogMiner分析其他数据库实例时,有几点需要注意: 

1). LogMiner必须使用被分析数据库实例产生的字典文件,而不是安装LogMiner的数据库产生的字典文件,另外必须保证安装LogMiner数据库的字符集和被分析数据库的字符集相同。 

2). 被分析数据库平台必须和当前LogMiner所在数据库平台一样,也就是说如果我们要分析的文件是由运行在UNIX平台上的Oracle 8i产生的,那么也必须在一个运行在UNIX平台上的Oracle实例上运行LogMiner,而不能在其他如Microsoft NT上运行LogMiner。当然两者的硬件条件不一定要求完全一样。 

3). LogMiner日志分析工具仅能够分析Oracle 8以后的产品,对于8以前的产品,该工具也无能为力。 


7.  所有相关数据字典视图
V$LOGMNR_CALLBACK              Synonym for V_$LOGMNR_CALLBACK
V$LOGMNR_CONTENTS              Synonym for V_$LOGMNR_CONTENTS
V$LOGMNR_DICTIONARY            Synonym for V_$LOGMNR_DICTIONARY
V$LOGMNR_LOGFILE               Synonym for V_$LOGMNR_LOGFILE
V$LOGMNR_LOGS                  Synonym for V_$LOGMNR_LOGS
V$LOGMNR_PARAMETERS            Synonym for V_$LOGMNR_PARAMETERS
V$LOGMNR_PROCESS               Synonym for V_$LOGMNR_PROCESS
V$LOGMNR_REGION                Synonym for V_$LOGMNR_REGION
V$LOGMNR_SESSION               Synonym for V_$LOGMNR_SESSION
V$LOGMNR_STATS                 Synonym for V_$LOGMNR_STATS
V$LOGMNR_TRANSACTION           Synonym for V_$LOGMNR_TRANSACTION
 
 
 
 

上一篇:使用oradim恢复windows上的数据库   下一篇:探索 Python 类型的层次结构(1)


收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·使用oradim恢复windows上的数据库
·32bit Oracle扩展SGA原理
·Oracle的快照复制
·PHP连接Oracle
·Oracle的SQL*PLUS命令
·Solaris10上安装Oracle10g
·Oracle高级复制(同步复制)配置步骤详细说明
·oracle中exp/imp命令详解
·查找Oracle版本信息的简便方法
·Oracle数据库物理文件空间设置方法
·利用Oracle管理服务器将数据导入导出
·Oracle DBA应该遵从的调优法则
·Oracle 9i 数据库移动过程
·如何快速转移Oracle中海量数据
·用智能优化器提高Oracle的性能
·使用Oracle中的时间间隔型数据
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·实例讲解如何查找某个对象的定义情况
·讲解Oracle中JOB与存储过程的接合用法
·深入讲解"database link"的设置和使用
·讲解Oracle移动数据文件到新分区的过程
·如何使用Ruby脚本调用Oracle存储过程
·哪些因素可以影响Oracle数据库的性能
·带你深入了解Oracle数据库的进制转换
·讲解V$Datafile_Header相关字段的使用
·探讨基于不绑定变量与绑定变量的柱状图
·pl/sql developer中TIMESTAMP的显示格
·教你快速掌握如何使用"Opatch"打补丁
·如何调整"Oracle"数据库服务器的性能
  阅读排行
·如何修改遗失的MySQL的ROOT用户密码
·详解远程SHELL下安装配置RedHat ES 5的
·教你如何将MySQL数据库的密码恢复
·教你在MySQL从口令恢复设置的密码
·在 Oracle Enterprise Linux 上升级到
·oracle9i installation on fedora core
·Oracle Instant client介绍
·Oracle高级复制(同步复制)配置步骤详细
·用Oracle归档日志进行恢复的方法
·Linux下的Oracle数据库编程详解
·Linux下Oracle9i RMAN备份及恢复步骤介
·带你轻松接触一些比较常用的sql*plus命
·Oracle的快照复制
·Oracle 数据库存储结构简介
·Oracle HA 在Unix上双机环境的安装指南
网摘收藏: