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

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

Repo: How To Revive Teammates
1 months ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
1 months ago By 尊渡假赌尊渡假赌尊渡假赌

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)

How long will Oracle database logs be kept? How long will Oracle database logs be kept? May 10, 2024 am 03:27 AM

The retention period of Oracle database logs depends on the log type and configuration, including: Redo logs: determined by the maximum size configured with the "LOG_ARCHIVE_DEST" parameter. Archived redo logs: Determined by the maximum size configured by the "DB_RECOVERY_FILE_DEST_SIZE" parameter. Online redo logs: not archived, lost when the database is restarted, and the retention period is consistent with the instance running time. Audit log: Configured by the "AUDIT_TRAIL" parameter, retained for 30 days by default.

Function to calculate the number of days between two dates in oracle Function to calculate the number of days between two dates in oracle May 08, 2024 pm 07:45 PM

The function in Oracle to calculate the number of days between two dates is DATEDIFF(). The specific usage is as follows: Specify the time interval unit: interval (such as day, month, year) Specify two date values: date1 and date2DATEDIFF(interval, date1, date2) Return the difference in days

The order of the oracle database startup steps is The order of the oracle database startup steps is May 10, 2024 am 01:48 AM

The Oracle database startup sequence is: 1. Check the preconditions; 2. Start the listener; 3. Start the database instance; 4. Wait for the database to open; 5. Connect to the database; 6. Verify the database status; 7. Enable the service (if necessary ); 8. Test the connection.

How to use interval in oracle How to use interval in oracle May 08, 2024 pm 07:54 PM

The INTERVAL data type in Oracle is used to represent time intervals. The syntax is INTERVAL <precision> <unit>. You can use addition, subtraction, multiplication and division operations to operate INTERVAL, which is suitable for scenarios such as storing time data and calculating date differences.

How to see the number of occurrences of a certain character in Oracle How to see the number of occurrences of a certain character in Oracle May 09, 2024 pm 09:33 PM

To find the number of occurrences of a character in Oracle, perform the following steps: Get the total length of a string; Get the length of the substring in which a character occurs; Count the number of occurrences of a character by subtracting the substring length from the total length.

How much memory does oracle require? How much memory does oracle require? May 10, 2024 am 04:12 AM

The amount of memory required by Oracle depends on database size, activity level, and required performance level: for storing data buffers, index buffers, executing SQL statements, and managing the data dictionary cache. The exact amount is affected by database size, activity level, and required performance level. Best practices include setting the appropriate SGA size, sizing SGA components, using AMM, and monitoring memory usage.

Oracle database server hardware configuration requirements Oracle database server hardware configuration requirements May 10, 2024 am 04:00 AM

Oracle database server hardware configuration requirements: Processor: multi-core, with a main frequency of at least 2.5 GHz. For large databases, 32 cores or more are recommended. Memory: At least 8GB for small databases, 16-64GB for medium sizes, up to 512GB or more for large databases or heavy workloads. Storage: SSD or NVMe disks, RAID arrays for redundancy and performance. Network: High-speed network (10GbE or higher), dedicated network card, low-latency network. Others: Stable power supply, redundant components, compatible operating system and software, heat dissipation and cooling system.

What symbols are used to connect strings to the database in Oracle? What symbols are used to connect strings to the database in Oracle? May 08, 2024 pm 07:36 PM

Oracle uses the "||" symbol to concatenate strings. The usage method is as follows: connect the strings to be connected with the "||" symbol; the priority of string connection is low, and parentheses need to be used to ensure the priority; an empty string will still be an empty string after connection; NULL value connection is still NULL.

See all articles