知识大全 深入分析Oracle数据库日志文件(2)
Posted 数据库
篇首语:勤奋是你生命的密码,能译出你一部壮丽的史诗。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 深入分析Oracle数据库日志文件(2)相关的知识,希望对你有一定的参考价值。
深入分析Oracle数据库日志文件(2) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
四 如何利用LogMiner分析Oracle 的日志文件 虽然说LogMiner是Oracle i才推出来 但我们同样可以用它来分析Oracle 的日志文件 只不过稍微麻烦了一点 并且有一定的限制 下面是具体做法 我们首先复制Oracle i的$ORACLE_HOME/rdbms/admin/dbmslmd sql脚本到Oracle 数据库所在主机的同样目录 这个脚本用于创建dbms_logmnr_d包(注意 Oracle i中还将创建dbms_logmnr包) 如果是 脚本名字为dbmslogmnrd sql 然后在Oracle 的数据库上运行这个脚本 之后使用dbms_logmnr_d build过程创建字典信息文件 现在我们就可以把Oracle 的归档日志连同这个字典信息文件复制到Oracle i数据库所在的主机上 之后在Oracle i数据库中从上面分析过程的第三步开始分析Oracle 的日志 不过 dbms_logmnr start_logmnr()中使用的是Oracle 的字典信息文件 按照我前面所说的那样 如果不是字典文件 我们则可以直接将Oracle 的归档日志复制到Oracle i数据库所在主机 然后对它进行分析 其实这里涉及到了一个跨平台使用LogMiner的问题 笔者做过试验 也可以在Oracle i中来分析Oracle i的日志 但这些都是有所限制的 主要表现在 LogMiner所使用的字典文件必须和所分析的日志文件是同一个数据库所产生的 并且该数据库的字符集应和执行LogMiner数据库的相同 这很好理解 如果不是同一个数据库所产生就不存在对应关系了 生成日志的数据库硬件平台和执行LogMiner数据库的硬件平台要求一致 操作系统版本可以不一致 笔者做试验时(如果读者有兴趣可以到我网站上下载试验全过程 因为太长就不放在这里了) 所用的两个数据库操作系统都是Tru UNIX 但一个是 V A 另一个则是V F 如果操作系统不一致则会出现下面的错误 ORA : file /data /cyx/logmnr/arch_ _ arc cannot be opened ORA : cannot open archived log /data /cyx/logmnr/arch_ _ arc ORA : skgfifi: file header information is invalid ORA : at SYS DBMS_LOGMNR line ORA : at line 五 分析v$logmnr_contents 前面我们已经知道了LogMiner的分析结果是放在v$logmnr_contents中 这里面有很多信息 我们可以根据需要追踪我们感兴趣的信息 那么我们通常感兴趣的有哪些呢? 追踪数据库结构变化情况 即DDL操作 如前所述 这个只有Oracle i才支持 SQL> select timestamp sql_redo from v$logmnr_contents where upper(sql_redo) like %CREATE% ; TIMESTAMP SQL_REDO : : create table t (c number); 追踪用户误操作或恶意操作 例如我们现实中有这样需求 有一次我们发现一位员工通过程序修改了业务数据库信息 把部分电话的收费类型改成免费了 现在就要求我们从数据库中查出到底是谁干的这件事?怎么查?LogMiner提供了我们分析日志文件的手段 其中v$logmnr_contents的SESSION_INFO列包含了下面的信息 login_username=NEW_ client_info= OS_username=oracle Machine_name=phoenix OS_terminal=ttyp OS_process_id= OS_program name=sqlplus@phoenix (TNS V V ) 虽然其中信息已经很多了 但在我们的业务数据库中 程序是通过相同的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 where upper(operation) = UPDATE and upper(sql_redo) like %HMLX% / SESSION_INFO SQL_REDO login_username=C client_info= OS_username=sz xjs chengyx Machine_name =GDTEL\\SZ XJS CHENGYX update C HMLX set NAME = free where NAME = and ROWID = AAABhTAA FAAABRaAAE ; cha138/Article/program/Oracle/201311/17810相关参考
这里是Oracle使用其硬线路的位置由于转储的数据文件不能恢复到与其他文件一致的位置所以可能存在中断的数据并且Oracle不允许正常打开数据库 第步设置未文档化的实例参数并打开数据库 在初始化
SQL>shutdownimmediate ORA:数据库未打开 已经卸载数据库 ORACLE例程已经关闭 SQL>startup ORACLE例程已经启动 TotalSy
系统环境 操作系统WindowsServer机器内存M 数据库 OracleiR()forNT企业版 安装路径C:\\ORACLE 模拟现象 可通过重建数据文件来恢复前提是归档日
深入分析Oracle数据库的安全策略 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Oracle
研究了好几天终于有了一个比较完整查看oracle的数据日志方法oracle没有想sqlserver那样有sqlE工具来辅助查询只能利用oracle自己的工具 一如何分析即LogMiner解释
体系结构 ORACLE的文件体系结构为 数据文件DBF(真实数据) 日志文件RDO 控制文件CTL 参数文件ORA SQLSERVER的文件体系结构为 MDF(数据字典) NDF(
知识大全 oracle数据库备份与恢复apieceofcake(4)
oracle数据库日志备份(windows平台) 本片是接上次的数据库在线备份进行数据库全备份后需要备份归档的日志文件 建立数据库备份的脚本 在上面建立的目录下建立如下的两个脚本 建立执行
使用Oracle的外部表查询警告日志文件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 从Ora
众所周知Oracle的数据是储存在数据文件中的那么Oracle是以什么格式来储存数据的呢?相信大家都对其内部结构很感兴趣这篇文章就帮大家来了解Oracle数据文件的内部结构我们知道数据库储存的最小
Oracle重做日志文件损坏或丢失后的恢复 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 很多网