Home Database Mysql Tutorial oracle 日志挖掘

oracle 日志挖掘

Jun 07, 2016 pm 03:36 PM
oracle dig log

1、$ORACLE_HOME/rdbms/admin/dbmslm.sql 2、$ORACLE_HOME/rdbms/admin/dbmslmd.sql 这两个脚本必须均以DBA用户身份运行。其中第一个脚本用来创建DBMS_LOGMNR包,该包用来分析日志文件。第二个脚本用来创建DBMS_LOGMNR_D包,该包用来创建数据字典文件。 2.创

1、$ORACLE_HOME/rdbms/admin/dbmslm.sql

2、$ORACLE_HOME/rdbms/admin/dbmslmd.sql

这两个脚本必须均以DBA用户身份运行。其中第一个脚本用来创建DBMS_LOGMNR包,该包用来分析日志文件。第二个脚本用来创建DBMS_LOGMNR_D包,该包用来创建数据字典文件。

2.创建字典文件

<span><span></span><span>CREATE</span><span> DIRECTORY utlfile </span><span>AS</span><span><span>'<span><span>D:\app\zhoukai\oradata\LOGMNR</span></span><span>'</span></span><span>;</span></span><span>alter</span><span> system </span><span>set</span><span> utl_file_dir</span><span>=</span><span><span>'</span><span>D:\app\zhoukai\oradata\LOGMNR</span><span>'</span></span><span> scope</span><span>=</span><span>spfile;</span></span>
Copy after login
<span></span><pre class="brush:php;toolbar:false"><span> 执行以上语句后,重启数据库,查看是否设置成功</span>
Copy after login
<span></span>
Copy after login
Copy after login
Copy after login
Copy after login
<span><span><span>SQL> show parameter utl

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
create_stored_outlines               string
</span><span>utl_file_dir                         string      D:\app\zhoukai\oradata\LOGMNR</span></span></span>
Copy after login
<pre class="brush:php;toolbar:false"><span><span>EXECUTE</span><span> dbms_logmnr_d.build(dictionary_filename </span><span>=></span><span>'</span><span>dictionary.ora</span><span>'</span><span>, dictionary_location</span><span>=></span><span>'</span><span><span><span>D:\app\zhoukai\oradata\LOGMNR</span></span></span><span>'</span><span>);</span></span>
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
<span>3.添加分析文件</span>
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
<span> 方法如下:</span>
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
<pre class="brush:php;toolbar:false"><span><span><span>exec dbms_logmnr.add_logfile(logfilename</span></span><span>=></span><span><span>'D:\APP\ZHOUKAI\ORADATA\ORCL\REDO01.LOG</span><span>'</span></span><span><span>,options</span></span><span>=></span><span>dbms_logmnr.NEW);</span></span>
Copy after login
<span></span>
Copy after login
Copy after login
Copy after login
Copy after login
<span><span>也可以添加多个文件,我们新增一个文件,方法如下:看出不同了吗,看看最后红色部分</span></span>
Copy after login
<pre class="brush:php;toolbar:false"><span><span>dbms_logmnr.add_logfile(logfilename</span><span>=></span><span>'</span><span>D:\oracle\oradata\practice\ARCHIVE\ARC00002_0817639922.001</span><span>'</span><span>,options</span><span>=></span><span><span>dbms_logmnr.ADDFILE</span></span><span>)</span></span>
Copy after login
<span></span>
Copy after login
Copy after login
Copy after login
Copy after login
<span><span>4.启动日志分析</span></span>
Copy after login
<span></span>
Copy after login
Copy after login
Copy after login
Copy after login
<span>  在分析日志之前我们要重建数据字典,因为我们刚才对表做了改动,所以在启动之前我们先要更新数据字典。</span>
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
<span>  启动日志可以制定一个范围,也可以不指定分析整个文件,具体的一些参数请查看oracle官方文档,在这边我们使用scn的范围限制。方法如下:</span>
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
<span><span><span>EXECUTE dbms_logmnr.start_logmnr( DictFileName =>'D:\app\zhoukai\oradata\LOGMNR\dictionary.ora',StartScn =>7240047,EndScn =>7240098); </span></span></span>
Copy after login
<span><span> 如果你不想创建字典可以使用以下方法</span></span>
Copy after login
<span><span> EXECUTE dbms_logmnr.start_logmnr( options =>dbms_logmnr.DICT_FROM_ONLINE_CATALOG,StartScn =>7240047,EndScn =>7240098);  </span></span>
Copy after login
<span><span> 具体options有很多参数,可以参照oracle官方文档。</span></span>
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
<span>5.查看分析结果</span>
Copy after login
<span><span> <span>到现在为止,我们已经分析得到了重作日志文件中的内容。动态性能视图v$logmnr_contents包含LogMiner分析得到的所有的信息。</span></span></span>
Copy after login

SELECT sql_redo FROM v$logmnr_contents; 

如果我们仅仅想知道某个用户对于某张表的操作,可以通过下面的SQL查询得到,该查询可以得到用户LOGMINER对表EMP所作的一切工作。

SELECT sql_redo FROM v$logmnr_contents WHERE username='LOGMINER' AND tablename='EMP'; 

序号

名称

含义

1

SCN

特定数据变化的系统更改号

2

TIMESTAM

数据改变发生的时间

3

COMMIT_TIMESTAMP

数据改变提交的时间

4

SEG_OWNER

数据发生改变的段名称

5

SEG_NAME

段的所有者名称

6

SEG_TYPE

数据发生改变的段类型

7

SEG_TYPE_NAME

数据发生改变的段类型名称

8

TABLE_SPACE

变化段的表空间

9

ROW_ID

特定数据变化行的ID

10

SESSION_INFO

数据发生变化时用户进程信息

11

OPERATION

重做记录中记录的操作(如INSERT)

12

SQL_REDO

可以为重做记录重做指定行变化的SQL语句(正向操作)

13

SQL_UNDO

可以为重做记录回退或恢复指定行变化的SQL语句(反向操作)

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

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

那么我们来产看我们挖掘的数据。


SQL> SELECT operation,sql_redo,sql_undo FROM v$logmnr_contents WHERE  table_name

='T';


OPERATION       SQL_REDO                       SQL_UNDO

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

DELETE          delete from "SCOTT"."T" where  insert into "SCOTT"."T"("OWNER

                "OWNER" = 'SYS' and "OBJECT_NA ","OBJECT_NAME","SUBOBJECT_NAM

                ME" = 'ICOL$' and "SUBOBJECT_N E","OBJECT_ID","DATA_OBJECT_ID

                AME" IS NULL and "OBJECT_ID" = ","OBJECT_TYPE","CREATED","LAS

                 '20' and "DATA_OBJECT_ID" = ' T_DDL_TIME","TIMESTAMP","STATU

                2' and "OBJECT_TYPE" = 'TABLE' S","TEMPORARY","GENERATED","SE

                 and "CREATED" = TO_DATE('30-3 CONDARY","NAMESPACE","EDITION_

                月 -10', 'DD-MON-RR') and "LAS NAME") values ('SYS','ICOL$',N

                T_DDL_TIME" = TO_DATE('30-3月  ULL,'20','2','TABLE',TO_DATE('

                -10', 'DD-MON-RR') and "TIMEST 30-3月 -10', 'DD-MON-RR'),TO_D

                AMP" = '2010-03-30:10:07:48' a ATE('30-3月 -10', 'DD-MON-RR')


OPERATION       SQL_REDO                       SQL_UNDO

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

                nd "STATUS" = 'VALID' and "TEM ,'2010-03-30:10:07:48','VALID'

                PORARY" = 'N' and "GENERATED"  ,'N','N','N','1',NULL);

                = 'N' and "SECONDARY" = 'N' an

                d "NAMESPACE" = '1' and "EDITI

                ON_NAME" IS NULL and ROWID = '

                AAAUswAAEAABbujAAA';

我们可以使用undo恢复误删除的数据,其它作用前面已经描述了。


6.结束LogMiner

SQL> EXEC DBMS_LOGMNR.END_LOGMNR;


PL/SQL 过程已成功完成。


关于LogMiner学习如上


参照文档:oracle官方文档

http://www.cnblogs.com/shishanyuan/p/3140440.html

Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

What to do if the oracle can't be opened What to do if the oracle can't be opened Apr 11, 2025 pm 10:06 PM

Solutions to Oracle cannot be opened include: 1. Start the database service; 2. Start the listener; 3. Check port conflicts; 4. Set environment variables correctly; 5. Make sure the firewall or antivirus software does not block the connection; 6. Check whether the server is closed; 7. Use RMAN to recover corrupt files; 8. Check whether the TNS service name is correct; 9. Check network connection; 10. Reinstall Oracle software.

How to solve the problem of closing oracle cursor How to solve the problem of closing oracle cursor Apr 11, 2025 pm 10:18 PM

The method to solve the Oracle cursor closure problem includes: explicitly closing the cursor using the CLOSE statement. Declare the cursor in the FOR UPDATE clause so that it automatically closes after the scope is ended. Declare the cursor in the USING clause so that it automatically closes when the associated PL/SQL variable is closed. Use exception handling to ensure that the cursor is closed in any exception situation. Use the connection pool to automatically close the cursor. Disable automatic submission and delay cursor closing.

How to delete all data from oracle How to delete all data from oracle Apr 11, 2025 pm 08:36 PM

Deleting all data in Oracle requires the following steps: 1. Establish a connection; 2. Disable foreign key constraints; 3. Delete table data; 4. Submit transactions; 5. Enable foreign key constraints (optional). Be sure to back up the database before execution to prevent data loss.

How to paginate oracle database How to paginate oracle database Apr 11, 2025 pm 08:42 PM

Oracle database paging uses ROWNUM pseudo-columns or FETCH statements to implement: ROWNUM pseudo-columns are used to filter results by row numbers and are suitable for complex queries. The FETCH statement is used to get the specified number of first rows and is suitable for simple queries.

How to create cursors in oracle loop How to create cursors in oracle loop Apr 12, 2025 am 06:18 AM

In Oracle, the FOR LOOP loop can create cursors dynamically. The steps are: 1. Define the cursor type; 2. Create the loop; 3. Create the cursor dynamically; 4. Execute the cursor; 5. Close the cursor. Example: A cursor can be created cycle-by-circuit to display the names and salaries of the top 10 employees.

How to stop oracle database How to stop oracle database Apr 12, 2025 am 06:12 AM

To stop an Oracle database, perform the following steps: 1. Connect to the database; 2. Shutdown immediately; 3. Shutdown abort completely.

How to create oracle dynamic sql How to create oracle dynamic sql Apr 12, 2025 am 06:06 AM

SQL statements can be created and executed based on runtime input by using Oracle's dynamic SQL. The steps include: preparing an empty string variable to store dynamically generated SQL statements. Use the EXECUTE IMMEDIATE or PREPARE statement to compile and execute dynamic SQL statements. Use bind variable to pass user input or other dynamic values ​​to dynamic SQL. Use EXECUTE IMMEDIATE or EXECUTE to execute dynamic SQL statements.

What steps are required to configure CentOS in HDFS What steps are required to configure CentOS in HDFS Apr 14, 2025 pm 06:42 PM

Building a Hadoop Distributed File System (HDFS) on a CentOS system requires multiple steps. This article provides a brief configuration guide. 1. Prepare to install JDK in the early stage: Install JavaDevelopmentKit (JDK) on all nodes, and the version must be compatible with Hadoop. The installation package can be downloaded from the Oracle official website. Environment variable configuration: Edit /etc/profile file, set Java and Hadoop environment variables, so that the system can find the installation path of JDK and Hadoop. 2. Security configuration: SSH password-free login to generate SSH key: Use the ssh-keygen command on each node

See all articles