- 浏览: 1020450 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (529)
- 服务器 (8)
- jsp (1)
- java (6)
- AIX (1)
- solaris (3)
- linux学习 (53)
- javaScript (2)
- hibernate (1)
- 数据库 (74)
- sql语句 (8)
- oracle 学习 (75)
- oracle 案例 (42)
- oracle 管理 (42)
- Oracle RAC (27)
- oracle data guard (12)
- oracle 参数讲解 (14)
- Oracle 字符集 (8)
- oracle性能调优 (24)
- oracle备份与恢复 (12)
- oracle Tablespace (9)
- oracle性能诊断艺术 (1)
- oracle 11g学习 (5)
- oracle streams (1)
- oracle upgrade and downgrade (4)
- db2学习 (13)
- db2命令学习 (2)
- mysql (28)
- sql server (30)
- sql server 2008 (0)
- 工具 (10)
- 操作系统 (3)
- c++ (1)
- stock (1)
- 生活 (5)
- HADOOP (2)
最新评论
-
massjcy:
...
如何将ubuntu文件夹中文名改为英文 -
skypiea:
谢谢。。。
终于解决了。。。
Oracle 10.2.0.4(5)EM不能启动的解决方案(Patch 8350262) -
qwe_rt:
引用vi /etc/sysconfig/network 请问 ...
Linux操作系统下配置静态IP上网 -
liuqiang:
sudo killall -9 apache2
ps 和 kill 命令详解 -
dazuiba:
引用*绝杀 kill -9 PID 当使用此命令时,一定要通过 ...
ps 和 kill 命令详解
三、Oracle8i/9i的日志分析过程
LogMiner只要在实例起来的情况下都可以运行,LogMiner使用一个字典文件来实现Oracle内部对象名称的转换,如果没有这个字典文件,则直接显示内部对象编号,例如我们执行下面的语句:
delete from "C"."A" where "C1" = ‘gototop’ and ROWID = 'AAABg1AAFAAABQaAAH';
如果没有字典文件,LogMiner分析出来的结果将是:
delete from "UNKNOWN"."OBJ# 6197" where "COL 1" = HEXTORAW('d6a7d4ae') and ROWID
= 'AAABg1AAFAAABQaAAH';
如果想要使用字典文件,数据库至少应该出于MOUNT状态。然后执行dbms_logmnr_d.build过程将数据字典信息提取到一个外部文件中。下面是具体分析步骤:
1、确认设置了初始化参数:UTL_FILE_DIR,并确认Oracle对改目录拥有读写权限,然后启动实例。示例中UTL_FILE_DIR参数如下:
SQL> show parameter utl NAME TYPE VALUE ------------------------ ----------- ------------------------------ utl_file_dir string /data6/cyx/logmnr |
这个目录主要用于存放dbms_logmnr_d.build过程所产生的字典信息文件,如果不用这个,则可以不设,也就跳过下面一步。
2、生成字典信息文件:
exec dbms_logmnr_d.build(dictionary_filename =>' dic.ora',dictionary_location => '/data6/cyx/logmnr'); |
其中dictionary_location指的是字典信息文件的存放位置,它必须完全匹配UTL_FILE_DIR的值,例如:假设UTL_FILE_DIR=/data6/cyx/logmnr/,则上面这条语句会出错,只因为UTL_FILE_DIR后面多了一个“/”,而在很多其它地方对这一“/”是不敏感的。
dictionary_filename指的是放于字典信息文件的名字,可以任意取。当然我们也可以不明确写出这两个选项,即写成:
exec dbms_logmnr_d.build('dic.ora','/data6/cyx/logmnr');
如果你第一步的参数没有设,而直接开始这一步,Oracle会报下面的错误:
ERROR at line 1:
ORA-01308: initialization parameter utl_file_dir is not set
ORA-06512: at "SYS.DBMS_LOGMNR_D", line 923
ORA-06512: at "SYS.DBMS_LOGMNR_D", line 1938
ORA-06512: at line 1
需要注意的是,在oracle817 for Windows版中会出现以下错误:
14:26:05 SQL> execute dbms_logmnr_d.build('oradict.ora','c:\oracle\admin\ora\log');
BEGIN dbms_logmnr_d.build('oradict.ora','c:\oracle\admin\ora\log'); END;
*
ERROR at line 1:
ORA-06532: Subscript outside of limit
ORA-06512: at "SYS.DBMS_LOGMNR_D", line 793
ORA-06512: at line 1
解决办法:
编辑"$ORACLE_HOME/rdbms/admindbmslmd.sql"文件,把其中的
TYPE col_desc_array IS VARRAY(513) OF col_description;
改成:
TYPE col_desc_array IS VARRAY(700) OF col_description;
保存文件,然后执行一遍这个脚本:
15:09:06 SQL> @c:\oracle\ora81\rdbms\admin\dbmslmd.sql
Package created.
Package body created.
No errors.
Grant succeeded.
然后重新编译DBMS_LOGMNR_D包:
15:09:51 SQL> alter package DBMS_LOGMNR_D compile body;
Package body altered.
之后重新执行dbms_logmnr_d.build即可:
15:10:06 SQL> execute dbms_logmnr_d.build('oradict.ora','c:\oracle\admin\ora\log'); PL/SQL procedure successfully completed. |
3、添加需要分析的日志文件
SQL>exec dbms_logmnr.add_logfile( logfilename=>' /data6/cyx/rac1arch/arch_1_197.arc', options=>dbms_logmnr.new); PL/SQL procedure successfully completed. |
这里的options选项有三个参数可以用:
NEW - 表示创建一个新的日志文件列表
ADDFILE - 表示向这个列表中添加日志文件,如下面的例子
REMOVEFILE - 和addfile相反。
SQL> exec dbms_logmnr.add_logfile( logfilename=>' /data6/cyx/rac1arch/arch_2_86.arc', options=>dbms_logmnr.addfile); PL/SQL procedure successfully completed. |
4、当你添加了需要分析的日志文件后,我们就可以让LogMiner开始分析了:
SQL> exec dbms_logmnr.start_logmnr(dictfilename=>'/data6/cyx/logmnr/dic.ora');
PL/SQL procedure successfully completed.
如果你没有使用字典信息文件(此时我们只需要启动实例就可以了),那么就不需要跟dictfilename参数:
SQL> exec dbms_logmnr.start_logmnr(); PL/SQL procedure successfully completed. |
当然dbms_logmnr.start_logmnr()过程还有其它几个用于定义分析日志时间/SCN窗口的参数,它们分别是:
STARTSCN / ENDSCN - 定义分析的起始/结束SCN号,
STARTTIME / ENDTIME - 定义分析的起始/结束时间。
例如下面的过程将只分析从 '2003-09-21 09:39:00'到'2003-09-21 09:45:00'这段时间的日志:
SQL> exec dbms_logmnr.start_logmnr(dictfilename=>'/data6/cyx/logmnr/dic.ora' , -
starttime => '2003-09-21 09:39:00',endtime => '2003-09-21 09:45:00');
PL/SQL procedure successfully completed.
上面过程第一行结尾的“-”表示转行,如果你在同一行,则不需要。我们可以看到有效日志的时间戳:
SQL> select distinct timestamp from v$logmnr_contents; TIMESTAMP ------------------- 2003-09-21 09:40:02 2003-09-21 09:42:39 |
这里需要注意的是,因为我之前已经设置NLS_DATE_FORMAT环境变量,所以上面的日期可以直接按这个格式写就行了,如果你没有设,则需要使用to_date函数来转换一下。
SQL> !env|grep NLS NLS_LANG=american_america.zhs16cgb231280 NLS_DATE_FORMAT=YYYY-MM-DD HH24:MI:SS ORA_NLS33=/oracle/oracle9/app/oracle/product/9.2.0/ocommon/nls/admin/data |
使用to_date的格式如下:
exec dbms_logmnr.start_logmnr(dictfilename=>'/data6/cyx/logmnr/dic.ora',- starttime => to_date('2003-09-21 09:39:00','YYYY-MM-DD HH24:MI:SS'),- endtime => to_date('2003-09-21 09:45:00','YYYY-MM-DD HH24:MI:SS')); |
STARTSCN 和ENDSCN参数使用方法类似。
5、好了,在上面的过程执行结束之后,我们就可以通过访问与LogMiner相关的几个视图来提取我们需要的信息了。其中在v$logmnr_logs中可以看到我们当前分析的日志列表,如果数据库有两个实例(即OPS/RAC),在v$logmnr_logs中会有两个不同的THREAD_ID。
而真正的分析结果是放在v$logmnr_contents中,这里面有很多信息,我们可以根据需要追踪我们感兴趣的信息。后面我将单独列出来讲常见的追踪情形。
6、全部结束之后,我们可以执行dbms_logmnr.end_logmnr过程退出LogMiner分析过程,你也可以直接退出SQL*PLUS,它会自动终止。
四、如何利用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数据库的硬件平台要求一致,操作系统版本可以不一致,一个是 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
发表评论
-
Oracle enterprise linux 6.0 安装oracle 11g 所需要的包安装
2012-07-22 08:02 7690Linux 版本是Oracle enterprise ... -
Oracle10gR2 中 Oracle Wallet 的初步使用和维护
2011-06-02 01:59 19911) Wallet作用 从Oracle10gR2开始, 通过 ... -
如何手工删除oracle数据库和软件
2011-06-02 00:29 1459一、手工删库和数据库文件有时候,有可能在dbca图形界面中找不 ... -
AIX下设置Oracle10g随机启动,随机关闭的步骤
2011-06-02 00:19 1450假如ORACLE_HOME为/opt/app/oracle/p ... -
数据库突然无法登陆,只有sysdba可以
2011-05-20 18:05 1647数据库突然无法登陆,只有sysdba可以登陆。 检查aler ... -
Linux安装Oracle报Checking operating system version must be redhat-3, SuSE-9, redhat
2011-03-24 01:26 1921在Linux系统中安装oralce的过程中,如果Linux发行 ... -
How To Update NLS_SORT Parameter Value When Using 10g Thin JDBC Driver ? [ID 469
2010-12-17 10:05 2963Applies to: JDBC - Version: 1 ... -
使用SQL_TRACE进行数据库诊断(转自eygle)
2010-12-16 17:30 862SQL_TRACE是Oracle提供的用 ... -
oracle 查询时忽略大小写的方案研究
2010-12-15 02:00 2484项目已经开发完毕,由于业务变动,某些查询需要忽略大小写,研究是 ... -
Read By Other Session
2010-12-02 22:52 753Read By Other Session Definiti ... -
必须引起DBA重视的Oracle数据库碎片
2010-12-01 17:35 1011目前,Oracle已经广泛的应用于各个行业。作为一名DBA,及 ... -
Wait Event: cache buffers chains
2010-11-30 15:58 1163cache buffers chains是相对比较常见的冲突事 ... -
log file sync(日志文件同步) 与 Log file parallel write 等待事件
2010-11-28 20:47 2144log file sync(日志文件同步)等待事件具有一个参数 ... -
删除Linux非rac环境下的ASM实例
2010-04-25 01:48 2019环境说明: 操作系统:CentOS 5 x86数据库:O ... -
扩大oracle最大session数以及清除inactive会话
2010-04-12 16:00 7330从上周起,服务器Oracle数据库出现问题,用不到半天,就会报 ... -
设计数据库时需要考虑的问题
2010-03-04 17:34 1537成功的管理系统=50% 的业务+(25%的数据库+25%的程序 ... -
介绍Oracle数据库锁的种类及研究
2009-12-02 09:30 1111本文通过对Oracle数据库锁机制的研究,首先介绍了Oracl ... -
expdp中使用连接字符串和network_link的区别
2009-12-01 11:47 1572expdp属于服务端工具,而exp属于客户端工具,expdp生 ... -
ora10G 使用数据泵(EXPDP和IMPDP)时应该注意的事项
2009-12-01 11:45 1247Oracle Database 10g引入了最新的数据泵(Da ... -
使用Oracle 10g数据泵(EXPDP/IMPDP)
2009-12-01 11:22 2029一、关于数据泵的概述 在Oracle 10 ...
相关推荐
ORACLE数据库日志文件分析 ORACLE数据库日志文件分析是关系型数据库管理系统中非常重要的一部分。日志文件是ORACLE数据库的核心组件之一,用于记录数据库的所有操作,包括事务、数据修改、回滚等。日志文件分析是...
#### 二、Oracle数据库日志类型 Oracle数据库中有多种类型的日志文件,包括但不限于: 1. **后台进程日志(Background Dump Files)**:这些日志文件通常包含系统错误信息,可以帮助诊断系统级的问题。 2. **Alert...
日志文件在Oracle数据库系统中起着至关重要的作用,它们记录了数据库的所有更改,确保数据的安全性和可恢复性。本文将深入探讨Oracle数据库的日志文件,包括redo logs(重做日志)和archive logs(归档日志),以及...
### Oracle数据库日志文件分析详解 #### 一、Oracle LogMiner工具介绍 在Oracle数据库管理与维护中,LogMiner是一项重要的工具,用于解析重做日志(Redo Logs)来获取数据库变更的详细信息。它能帮助数据库管理员...
首先,Oracle数据库日志文件是数据库管理的重要组成部分,它记录了数据库中所有事务的详细信息。Oracle 8i数据库日志文件主要包含以下几个关键概念和组件: 1. 转储文件(Dump File):转储文件是Oracle在处理日志...
总的来说,Oracle数据库日志文件的分析与应用是数据库管理中的重要环节,LogMiner作为Oracle提供的工具,能够帮助管理员深入理解数据库的操作历史,有效地进行数据恢复、审计监控和程序调试。通过正确安装、设置数据...
基于LogMiner的Oracle数据库日志分析 一、概述 Oracle 数据库是世界上使用最广泛的关系数据库系统之一。Oracle 数据库除了具有强大数据组织、存储、查询及处理的基本功能外,还提供了许多与应用及管理有关的辅助...
深入分析 Oracle 日志文件 Oracle 日志文件是 Oracle 数据库管理员 (DBA) 实现...Oracle 日志文件分析是数据库恢复和追踪用户操作的重要工具,LogMiner 是一种effective且low-cost的方法来分析 Oracle 日志文件。
### Oracle数据库日志文件损坏时修复方法的实验研究 #### 引言与背景 Oracle数据库作为全球领先的企业级数据库管理系统之一,其数据安全性和可靠性至关重要。数据库日志文件,包括重做日志(Redo Log)和归档日志...
Oracle数据库重做日志文件的分析及其应用 本文将详细讨论 Oracle 数据库重做日志文件的分析及其应用,包括日志文件的概念、类型、结构、恢复机制等方面的知识点。 1. 日志文件的概念 日志文件是数据库管理系统中...
#### 二、RDA工具收集Oracle数据库日志 **1. RDA工具简介** - **定义**: RDA (Oracle Remote Diagnostic Agent) 是由Oracle官方提供的一个强大的诊断工具,主要用于收集Oracle数据库的系统配置和详细信息。 - **...
第五讲:Oracle数据库在线日志文件管理 第六讲:Oracle数据库归档日志文件管理 第七讲:Oracle数据库控制文件管理 第八讲:Oracle数据库参数文件管理 第九讲:oracle数据库启动和关闭管理 第十讲:oracle undo sapce...
本篇文章将深入探讨Oracle数据库日志文件损坏时的修复方法。 Oracle数据库的日志文件主要分为两种类型:重做日志文件(Redo Log Files)和归档日志文件(Archive Log Files)。重做日志文件记录了对数据库的所有...
Oracle 数据库联机日志文件丢失处理方法 Oracle 数据库联机日志文件是数据库运行的重要组件,负责记录数据库的事务信息,以便在出现故障时可以恢复数据库。然而,在某些情况下,联机日志文件可能会丢失,从而导致...
Oracle数据库的恢复与备份是数据库管理员的关键技能,确保在数据丢失或系统故障时能迅速恢复服务。本篇文章主要探讨了如何对Oracle数据库进行备份和恢复,以及涉及的主要工具和技术。 Oracle数据库采用多种机制来...
在Oracle数据库管理中,了解如何查看Alert日志文件的位置至关重要。Alert日志文件包含有关数据库实例运行时的重要信息,例如错误消息、警告和其他重要事件,对于诊断问题和维护数据库健康状态非常有用。本文将详细...
ORACLE数据库调整归档日志空间大小 ORACLE数据库的归档日志是一种重要的灾难恢复机制,它可以帮助数据库管理员在发生灾难时恢复数据库。然而,如果不正确地配置和维护归档日志,可能会导致数据库无法启动或连接。...
Oracle 8i 数据库日志文件的分析与恢复 Oracle 8i 数据库日志文件是数据库中最重要的组成部分之一,对数据库的可靠性和安全性起着至关重要的作用。日志文件记录了数据库中所有的事务操作,包括插入、更新、删除等...
Oracle数据库是全球最广泛使用的商业关系型数据库管理系统之一,由美国甲骨文公司(Oracle Corporation)开发和维护。Oracle数据库以其高效、稳定和强大的功能在金融、电信、医疗、政府等多个领域得到广泛应用。本篇...