`
xpp02
  • 浏览: 1046641 次
社区版块
存档分类
最新评论

Logmnr 用法介绍及其注意事项(ORA-01306)

阅读更多

 

Logmnr 用法介绍及其注意事项

转载请注明出处:http://blog.csdn.net/xiaofan23z

Environment:linux +oracle10g two nodes rac

一、           安装LogMiner工具,以下两个脚本以SYSDBA身份运行

 

SQL> @$ORACLE_HOME/rdbms/admin/dbmslm.sql;

Package created.

Grant succeeded.

##创建DBMS_LOGMNR包,该包用来分析日志文件。

SQL> @$ORACLE_HOME/rdbms/admin/dbmslmd.sql;

Package created.

##创建DBMS_LOGMNR_D包,该包用来创建数据字典文件。

二、           使用LogMiner工具  

 下面将详细介绍如何使用LogMiner工具。 

 1、创建数据字典文件(data-dictionary)  
  1).首先在init.ora初始化参数文件中,指定数据字典文件的位置,也就是添加一个参数 UTL_FILE_DIR,该参数值为服务器中放置数据字典文件的目录。如:  UTL_FILE_DIR = ($ORACLE_HOME\logs) ,重新启动数据库,使新加的参数生效:

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shutdown.

SQL> startup mount

ORACLE instancestarted.

 

Total System GlobalArea  922746880 bytes

Fixed Size                  1222624 bytes

Variable Size             209717280 bytes

DatabaseBuffers          704643072 bytes

Redo Buffers                7163904 bytes

Database mounted.

SQL> alter system setutl_file_dir='/u01/app/oracle/product/10.2.0/db_1/log' scope=spfile;

System altered.

SQL> shutdown immediate

ORA-01109: databasenot open

Database dismounted.

ORACLE instance shutdown.

SQL>                  

SQL> startup mount

ORACLE instancestarted.

 

Total System GlobalArea  922746880 bytes

Fixed Size                  1222624 bytes

Variable Size             209717280 bytes

DatabaseBuffers          704643072 bytes

Redo Buffers                7163904 bytes

Database mounted.

SQL>

SQL> show parameter utl

 

NAME                                 TYPE        VALUE

----------------------------------------------- ------------------------------

create_stored_outlines               string

utl_file_dir                         string      /u01/app/oracle/product/10.2.0

                                                /db_1/log

SQL>

SQL> alter database open;

Database altered.

SQL>

 

        Ps: LogMiner uses a dictionary file, which is a special file that 
               indicates the database that created it as well as the time the file was 
               created. The dictionary file is not required, but is recommended. Without a 
               dictionary file, the equivalent SQL statements will use Oracle internal object 
               IDs for the object name and present column values as hex data.

也可以不使用数据字典,但是oracle推荐使用。

From :How to Setup LogMiner [ID 111886.1]

转载请注明出处:http://blog.csdn.net/xiaofan23z

 

2). 然后创建数据字典文件

SQL> execute dbms_logmnr_d.build(dictionary_filename =>'dict.ora',dictionary_location =>'/u01/app/oracle/product/10.2.0/db_1/log');

PL/SQL procedure successfully completed.

2. 创建要分析的日志文件列表  

  1).创建分析列表,即所要分析的日志

 SQL> executedbms_logmnr.add_logfile(LogFileName =>'+DATA/ldbrac/onlinelog/group_3.266.732154759',Options => dbms_logmnr.new); ##根据时间点或者在v$logv$archived_log中查询出要分析的log

 

PL/SQL procedure successfully completed.

 

###为了验证效果 删除一个表然后切换log

droptable askey_id

SQL> alter system switch logfile;

System altered.

将切换的log 加入到分析列表

SQL> execute dbms_logmnr.add_logfile(LogFileName =>'+DATA/ldbrac/onlinelog/group_2.262.732154617',Options =>dbms_logmnr.ADDFILE);

 

PL/SQL procedure successfully completed.

 

Alert log中会有如下信息显示

Sat Apr 21 11:35:192012

LOGMINER: Beginmining logfile: +DATA/ldbrac/onlinelog/group_2.262.732154617

Sat Apr 21 11:35:192012

LOGMINER: Begin mining logfile:+DATA/ldbrac/onlinelog/group_3.266.732154759

 

3、使用logMiner进行日志分析 

   1).无限制条件,即用数据字典文件对要分析的日志文件所有内容做分析 
     SQL> executedbms_logmnr.start_logmnr(DictFileName =>     '/u01/app/oracle/product/10.2.0/db_1/log/dict.ora');

PL/SQL procedure successfully completed.


      
         2).带限制条件,可以用scn号或时间做限制条件,也可组合使用 
             --分析日志列表中时间从20120420从10:00到13:00的内容 
SQL> execute dbms_logmnr.start_logmnr(startTime => to_date('20120421100000','yyyy-mm-dd hh24:mi:ss'),endTime => to_date('20120421130000','yyyy-mm-dd hh24:mi:ss'),DictFileName => '/u01/app/oracle/product/10.2.0/db_1/log/dict01.ora');


    PL/SQL procedure successfully completed 

  dbms_logmnr.start_logmnr函数的原型为: 
  PROCEDURE start_logmnr( 
     startScn           IN  NUMBER default 0 ,
     endScn IN  NUMBER default 0, 
     startTime      IN  DATE default '', 
     endTime        IN  DATE default '', 
     DictFileName    IN  VARCHAR2 default '', 
     OptionsIN  BINARY_INTEGER default 0 ); 

4.分析数据  

V$LOGMNR_LOGS 是分析日志列表视图

分析结果在GV$LOGMNR_CONTENTS 视图中

根据条件查询分析结果

SQL>  select* from V$LOGMNR_CONTENTSwhere sql_redolike'drop%';

 

      SCN       CSCN TIMESTAMPCOMMIT_TI    THREAD#     LOG_ID    XIDUSN

---------- ---------- --------- ------------------- ---------- ----------

   XIDSLT     XIDSQN    PXIDUSN   PXIDSLT    PXIDSQN     RBASQN    RBABLK

---------- ---------- ---------- -------------------- ---------- ----------

  RBABYTE     UBAFIL     UBABLK    UBAREC     UBASQN  ABS_FILE# REL_FILE#

 

 

 

注意:

使用logminer查询表v$logmnr_contents必须在同一个会话中进行,因为分析的那些
信息存储在这个session 的PGA中,在别的session里面是查不到的。

如果在别的session中视图查询这个视图得到如下错误

SQL>select * from V$LOGMNR_CONTENTS;

select* from V$LOGMNR_CONTENTS

ERRORat line 1:

ORA-01306: dbms_logmnr.start_logmnr() must be invoked before selectingfrom

v$logmnr_contents
视图v$logmnr_contents中的分析结果仅在我们运行过程'dbms_logmrn.start_logmnr'这个
会话的生命期中存在。这是因为所有的LogMiner存储都在PGA内存中,所有其他的进程是看
不到它的,同时随着进程的结束,分析结果也随之消失。 最后,使用过程DBMS_LOGMNR.END_LOGMNR
终止日志分析事务,此时PGA内存区域被清除,分析结果也随之不再存在。

 

可以创建临时表解决这个问题

SQL>create table logmnr_tab1 as select  *from V$LOGMNR_CONTENTS;

Tablecreated.

SQL>

 

然后在临时表中分析

 

 

 

selectscn,timestamp,log_id,seg_owner,seg_name,table_name,seg_type_name,operation,sql_redo 

fromsys.logmnr_tab1where sql_redolike'drop%';

根据条件查询特定的DDL/DML操作

 

 

5.分析后释放内存

 SQL> execute dbms_logmnr.end_logmnr; 

   PL/SQL procedure successfully completed 

6.其它 
   1).删除日志分析文件 

   exec dbms_logmnr.add_logfile('+DATA/ldbrac/onlinelog/group_2.262.732154617',dbms_logmnr.removefile);

注意:

 

    BEGIN

        DBMS_LOGMNR.REMOVE_LOGFILE(LOGFILENAME=> '/oracle/logs/log2.f');

    END;

    /

更多信息请查看 java进阶网 http://www.javady.com/index.php/category/thread

分享到:
评论

相关推荐

    Oracle错误信息

    本文将详细介绍一系列Oracle错误代码及其含义,帮助读者更好地理解并解决相关问题。 #### ORA-01199:非法模式 此错误表示在执行某个操作时指定了一个不被允许的模式。例如,在尝试恢复数据时使用了不支持的模式。...

    LOGMNR详解

    #### 四、使用建议与注意事项 - **工具选择**:对于大量结果集的情况,推荐使用PL/SQL Developer等工具来进行操作,这样不仅便于后期的修改,还能更好地处理格式化的输出。 - **日志文件管理**:合理管理日志文件,...

    dbms_logmnr使用

    下面是 DBMS_LOGMNR 的使用方法。 首先,需要安装 LogMiner 工具,包括两个脚本 dbmslm.sql 和 dbmslmd.sql。这两个脚本分别用于创建 DBMS_LOGMNR 包和 DBMS_LOGMNR_D 包。DBMS_LOGMNR 包用于分析日志文件,而 DBMS...

    达梦数据库驱动包dotNet,dpi,fldr,go,jdbc,logmnr,msgparse,odbc,php-pdo等

    达梦数据库20241010,x86 环境驱动包dotNet,dpi,fldr,go,jdbc,logmnr,msgparse,odbc,php_pdo,python,r2dbc

    [保留] 日志分析logmnr使用方法_分享 - ChinaUnix_net

    oracle 日志

    在oracle中Logmnr进行日志挖掘

    下面将详细探讨如何在Oracle中使用Logmnr进行日志挖掘。 ### Logmnr简介 Logmnr是Oracle数据库中的一个包,用于处理重做日志文件,以提取出对数据库所做的所有更改。这些更改可以包括插入、更新和删除操作,通过...

    logmnr来分析归档日志操作.txt

    本文将详细介绍如何使用LogMiner(LogMiner在Oracle中的简称为LOGMNR)来分析归档日志。 #### 二、LogMiner简介 LogMiner是Oracle数据库提供的一种用于分析重做日志文件和归档日志文件的工具,它可以用来追踪表和...

    Oracle数据库速查手册

    通过指定参数、添加日志文件,然后启动和结束LogMiner,可以查询`V$LOGMNR_CONTENTS`等视图来洞察数据库活动。 ### 表空间管理 表空间是Oracle数据库组织数据的主要方式,以下是一些基本操作: 1. **创建表空间**...

    logmnr日志挖掘技术

    logmnr日志挖掘,分析redo里面做了哪些操作,可以显示出语句

    oracle使用logmnr找回误删数据.rar

    在这种情况下,Oracle的Log Miner(日志分析工具,简称logmnr)提供了一种有效的方法来恢复这些丢失的数据。本文将详细介绍如何利用logmnr找回误删数据。 首先,了解logmnr的基本概念。Log Miner是Oracle数据库内置...

    logminer简单介绍

    #### 三、Logminer注意事项 1. **会话管理**: - 所有Logminer相关的操作必须在一个会话中完成。 - 每次使用Logminer前都需要重新构建字典文件,并重新添加redo日志文件。 2. **参数设置**: - 在启动Logminer...

    oracle里的常用命令

    `EXECUTE DBMS_LOGMNR.START_LOGMNR(DICTFILENAME=>'c:\oracle\oradb\log\oradb.ora');` - f. `SELECT * FROM V$LOGMNR_CONTENTS(V$LOGMNR_DICTIONARY,V$LOGMNR_PARAMETERS V$LOGMNR_LOGS);` - g. `EXECUTE DBMS_...

    分析Oracle数据库日志文件(1) .txt

    EXEC DBMS_LOGMNR_D.BUILD(dictionary_filename=>'dic.ora', dictionary_location=>'data6/cyx/logmnr'); -- 添加日志文件 EXEC DBMS_LOGMNR.ADD_LOGFILE(name=>'redo01.log', options=>DBMS_LOGMNR.ADDFILE); -- ...

    Linux_oracle命令大全

    本文档旨在提供一系列针对在 Linux 环境下管理 Oracle 数据库的常用命令及其用法详解。这些命令覆盖了从基本的登录操作到数据库服务状态的监控,以及参数调整等方面。 #### 二、登录与切换用户 ##### 1. 切换到 ...

    oracle日志分析

    - 示例代码:`EXEC DBMS_LOGMNR.DICT_CREATE( DICTIONARY_FILENAME=>'dic.ora', DICTIONARY_LOCATION=>'/data6/cyx/logmnr');` - 其中`DICTIONARY_FILENAME`参数指定了词典文件名,而`DICTIONARY_LOCATION`则指定...

    Oracle9i的init.ora参数中文说明

    请注意所有用户均可读取或写入 UTL_FILE_DIR 参数中指定的所有文件。 值范围: 任何有效的目录路径。 默认值: 无 plsql_v2_compatibility: 说明: 设置 PL/SQL 兼容级。如果设置为 FALSE, 将执行 PL/SQL V3 行为, ...

    Oracle logMiner

    5. **使用LogMiner的注意事项** - **权限要求**:通常需要DBA权限才能运行LogMiner。 - **日志切换**:在LogMiner运行期间,如果redo日志自动切换,可能会影响分析结果。 - **资源消耗**:长时间运行LogMiner可能...

    DB_monitor.rar

    EXECUTE dbms_logmnr.start_logmnr(DictFileName=>'D:\temp\orcldict.ora', StartTime=>to_date('2008-06-03 18:00:00','YYYY-MM-DD HH24:MI:SS'), EndTime=>to_date('2008-06-03 19:59:59','YYYY-MM-DD HH24:MI:SS'...

    orcal 常用命令

    EXECUTE DBMS_LOGMNR.START_LOGMNR(DICTFILENAME=>'c:\oracle\oradb\log\oradb.ora'); -- 查询变更记录 SELECT * FROM V$LOGMNR_CONTENTS(V$LOGMNR_DICTIONARY, V$LOGMNR_PARAMETERS, V$LOGMNR_LOGS); -- 结束...

    DBMS_LOGMNR中的常量选项

    DBMS_LOGMNR是Oracle数据库提供的一个包,用于分析重做日志文件(redo logs),以获取数据库的事务历史信息。这个包中的常量选项是DBMS_LOGMNR的参数,用于定制LogMiner的行为。以下是一些重要的常量选项及其详细...

Global site tag (gtag.js) - Google Analytics