• 网络学院
  • IT资讯
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
分析Oracle数据库日志文件(2)
  站点:
  • 首 页
  • 最新软件
  • 文章教程
  • 国内软件
  • 国外软件
  • 绿色软件
  • 源码下载
  • 字体下载
分析Oracle数据库日志文件(2)
软件发布 分析Oracle数据库日志文件(2)
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件 绿软下载
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回文章教程首页 >> 文章首页 >> 认证考试 >> Oracle认证 >> Oracle指导 >> 分析Oracle数据库日志文件(2)

分析Oracle数据库日志文件(2)

添加时间: 2008-4-21 23:35:14  作者: Oracle指导  阅读次数:29   来源: http://www.d9soft.com

       

 四、如何利用LogMiner分析Oracle8的日志文件

  虽然说LogMiner是Oracle8i才推出来,但我们同样可以用它来分析Oracle8的日志文件,只不过稍微麻烦了一点,并且有一定的限制,下面是具体做法:

  我们首先复制Oracle8i的$ORACLE_HOME/rdbms/admin/dbmslmd.sql脚本到Oracle8数据库所在主机的同样目录;这个脚本用于创建dbms_logmnr_d包(注意,Oracle9i中还将创建dbms_logmnr包),如果是8.1.5脚本名字为dbmslogmnrd.sql。然后在Oracle8的数据库上运行这个脚本,之后使用dbms_logmnr_d.build过程创建字典信息文件。现在我们就可以把Oracle8的归档日志连同这个字典信息文件复制到Oracle8i数据库所在的主机上,之后在Oracle8i数据库中从上面分析过程的第三步开始分析Oracle8的日志,不过

  dbms_logmnr.start_logmnr()中使用的是Oracle8的字典信息文件。

  按照我前面所说的那样,如果不是字典文件,我们则可以直接将Oracle8的归档日志复制到Oracle8i数据库所在主机,然后对它进行分析。

  其实这里涉及到了一个跨平台使用LogMiner的问题,笔者做过试验,也可以在Oracle9i中来分析Oracle8i的日志。但这些都是有所限制的,主要表现在:

  1、LogMiner所使用的字典文件必须和所分析的日志文件是同一个数据库所产生的,并且该数据库的字符集应和执行LogMiner数据库的相同。这很好理解,如果不是同一个数据库所产生就不存在对应关系了。

  2、生成日志的数据库硬件平台和执行LogMiner数据库的硬件平台要求一致,操作系统版本可以不一致。笔者做试验时(如果读者有兴趣可以到我网站http://www.ncn.cn上下载试验全过程,因为太长就不放在这里了),所用的两个数据库操作系统都是Tru64 UNIX,但一个是 V5.1A,另一个则是V4.0F。如果操作系统不一致则会出现下面的错误:

  ORA-01284: file /data6/cyx/logmnr/arch_1_163570.arc cannot be opened
  ORA-00308: cannot open archived log '/data6/cyx/logmnr/arch_1_163570.arc'
  ORA-27048: skgfifi: file header information is invalid
  ORA-06512: at "SYS.DBMS_LOGMNR", line 63
  ORA-06512: at line 1
  

  五、分析v$logmnr_contents

  前面我们已经知道了LogMiner的分析结果是放在v$logmnr_contents中,这里面有很多信息,我们可以根据需要追踪我们感兴趣的信息。那么我们通常感兴趣的有哪些呢?

  1、追踪数据库结构变化情况,即DDL操作,如前所述,这个只有Oracle9i才支持:

  SQL> select timestamp,sql_redo from v$logmnr_contents2
  where upper(sql_redo) like '%CREATE%';
  TIMESTAMP
  -------------------
  SQL_REDO
  -------------------------
  2003-09-21 10:01:55
  create table t (c1 number);


  2、追踪用户误操作或恶意操作: 

  例如我们现实中有这样需求,有一次我们发现一位员工通过程序修改了业务数据库信息,把部分电话的收费类型改成免费了,现在就要求我们从数据库中查出到底是谁干的这件事?怎么查?LogMiner提供了我们分析日志文件的手段,其中v$logmnr_contents的SESSION_INFO列包含了下面的信息: 

  login_username=NEW_97 
  client_info= OS_username=oracle8 Machine_name=phoenix1
  OS_terminal=ttyp3 OS_process_id=8004 OS_program name=sqlplus@phoenix1
  (TNS V1-V3)
  

  虽然其中信息已经很多了,但在我们的业务数据库中,程序是通过相同的login_username登录数据库的,这样单从上面的信息是很难判断的。 

  不过我们注意到,因为公司应用服务器不是每个人都有权限在上面写程序的,一般恶意程序都是直接通过他自己的PC连到数据库的,这就需要一个准确的定位。IP追踪是我们首先想到的,并且也满足我们的实际要求,因为公司内部IP地址分配是统一 管理 的,能追踪到IP地址我们就可以准确定位了。但从面的SESSION_INFO中我们并不能直接看到IP,不过我们还是有办法的,因为这个SESSION_INFO里面的内容其实是日志从V$SESSION视图里提取的,我们可以在生产数据库中创建一个追踪客户端IP地址的触发器: 

  create or replace trigger on_logon_trigger
  after logon on database
  begin
  dbms_application_info.set_client_info(sys_context(’userenv’, ’ip_address’));
  end;
  /
  

  现在,我们就可以在V$SESSION视图的CLIENT_INFO列中看到新登录的客户端IP地址了。那么上面的提出的问题就可以迎刃而解了。假如被更新的表名为HMLX,我们就可以通过下面的SQL来找到所需信息: 

  SQL > select session_info ,sql_redo from v$logmnr_contents 
  2 where upper(operation) = ’UPDATE’ and upper(sql_redo) like ’%HMLX%’
  3 /
  SESSION_INFO
  -----------------------------------------
  SQL_REDO
  -----------------------------------------
  login_username=C client_info=10.16.98.26 OS_username=sz-xjs-chengyx Machine_name
  =GDTELSZ-XJS-CHENGYX
  update "C"."HMLX" set "NAME" = ’free’ where "NAME" = ’ncn.cn’ and ROWID = ’AAABhTAA
  FAAABRaAAE’;

 

上下文章:

 

上一篇文章: Oracle新手最常碰到的6个错误及解决方案 下一篇文章: Oracle中超级用户权限的管理

相关文章:

  • 新蠕虫伪装成文件夹图标,让你防不胜防
  • Vista找不到Config文件夹的解决办法
  • 病毒猖獗,怎么打开电脑文件会较安全?
  • 卑鄙病毒:加密你的文件勒索你的钱
  • 端午节忠告:要警惕FLASH祝福文件里的包藏祸心

相关软件:

  • 文件管理精灵 V3.21
  • 木马分析专家个人防火墙 2008 0814
  • 策略大师证券分析系统 V3.0
  • FTP远程文件同步更新程序 1.0.0.0
  • 系统文件备份工具 1.0a
  • 木马分析专家 2008 9.93 Build 0811

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

Oracle认证分类导航

  • Oracle动态
  • Oracle指导
  • Oracle题库

本类经典文章推荐

  • Oracle中关于逻辑备份与恢复
  • Oracle开发人员JAVA存储过程
  • 为数据库的表自动生成行号
  • Oracle中的OOP概念
  • 用java从oracle取数
  • 冷备份移植到另一台Solaris机器上
  • 如何将excel数据导入oracle中
  • Oracle10.2g安装记录
  • 数据库监控工具ForOraclev1.2
  • oracle双机群集系统

Oracle指导阅读排行

  • Oracle系统表查询
  • 实例:Oracle导出EXCEL文件
  • Oracle常用的OCI函数上
  • Oracle企业管理器(OEM 2.1)使用...
  • Tomcat+SQLServer连接池配置
  • 如何将excel数据导入oracle中
  • 如何取出某一用户的密码 再原样改...
  • 实例:Oracle导出EXCEL文件
  • 案例学习Oracle错误:ORA-00604
  • 案例学习Oracle错误:ORA-00060

Oracle认证阅读总排行

  • Oracle系统表查询
  • 实例:Oracle导出EXCEL文件
  • Oracle常用的OCI函数上
  • 在ORACLE的存储过程中如何做简单的...
  • Oracle企业管理器(OEM 2.1)使用...
  • Tomcat+SQLServer连接池配置
  • 如何将excel数据导入oracle中
  • AIX下自动启动Oracle数据库与监听...
  • 如何取出某一用户的密码 再原样改...
  • 实例:Oracle导出EXCEL文件

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有