oracle 日志挖掘
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>
<span></span><pre class="brush:php;toolbar:false"><span> 执行以上语句后,重启数据库,查看是否设置成功</span>
<span></span>
<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>
<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>
<span>3.添加分析文件</span>
<span> 方法如下:</span>
<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>
<span></span>
<span><span>也可以添加多个文件,我们新增一个文件,方法如下:看出不同了吗,看看最后红色部分</span></span>
<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>
<span></span>
<span><span>4.启动日志分析</span></span>
<span></span>
<span> 在分析日志之前我们要重建数据字典,因为我们刚才对表做了改动,所以在启动之前我们先要更新数据字典。</span>
<span> 启动日志可以制定一个范围,也可以不指定分析整个文件,具体的一些参数请查看oracle官方文档,在这边我们使用scn的范围限制。方法如下:</span>
<span><span><span>EXECUTE dbms_logmnr.start_logmnr( DictFileName =>'D:\app\zhoukai\oradata\LOGMNR\dictionary.ora',StartScn =>7240047,EndScn =>7240098); </span></span></span>
<span><span> 如果你不想创建字典可以使用以下方法</span></span>
<span><span> EXECUTE dbms_logmnr.start_logmnr( options =>dbms_logmnr.DICT_FROM_ONLINE_CATALOG,StartScn =>7240047,EndScn =>7240098); </span></span>
<span><span> 具体options有很多参数,可以参照oracle官方文档。</span></span>
<span>5.查看分析结果</span>
<span><span> <span>到现在为止,我们已经分析得到了重作日志文件中的内容。动态性能视图v$logmnr_contents包含LogMiner分析得到的所有的信息。</span></span></span>
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

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

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.

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 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.

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.

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.

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: 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.

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.
