oracle 11g logminer 进行日志挖掘
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,Oracle LogMiner 是Oracle公司从产品8i以后提供的一个实际非常有用的分析工具,使用该工具可以轻松获得Oracle 在线/归档日志文件中的具体内容,特别是该工具可以分析出所有对于数据
千家信息网最后更新 2025年01月19日oracle 11g logminer 进行日志挖掘Oracle LogMiner 是Oracle公司从产品8i以后提供的一个实际非常有用的分析工具,使用该工具可以轻松获得Oracle 在线/归档日志文件中的具体内容,特别是该工具可以分析出所有对于数据库操作的DML和DDL语句。该工具特别适用于调试、审计或者回退某个特定的事务。
LogMiner可以用于日志的分析,跟踪数据库变化,回退数据库变化,对部分误操作数据进行恢复,误操作人员账号定位查看,结合工具完成基于日志事物级别增量数据传输。
1、LogMiner的安装;
首先确认一下咱们数据库上是否有LogMiner安装包,使用DBA用户登录数据库查看是否有dbms_logmnr、dbms_logmnr_d包,如果没有就需要咱们执行下面的脚本安装(必须以DBA用户执行安装)。
1、SQL>@$ORACLE_HOME/rdbms/admin/dbmslm.sql
2、SQL>@$ORACLE_HOME/rdbms/admin/dbmslmd.sql
执行完毕就完成了logminer的安装,第一个脚本用来创建DBMS_LOGMNR包,该包用来分析日志文件。第二个脚本用来创建DBMS_LOGMNR_D包,该包用来创建数据字典文件。
2、数据库的配置;
查看一下数据库是否在归档模式:
SQL> archive log list;
如果数据库处于非归档模式(No Archive Mode)。
将数据库切换到归档模式:
1、关闭数据库
SQL> shutdown immediate
SQL> startup mount;
SQL> alter database archivelog;
切换成功后打开数据库
SQL>alter database open;
接下来,打开数据库的扩充日志:supplemental logging(扩充日志)在通常情况下,redo log 只记录的进行恢复所必需的信息,但是这些信息对于我们使用redo log进行一些其他应用时是不够的,例如在 redo log中使用rowid唯一标识一行而不是通过Primary key,如果我们在另外的数据库分析这些日志并想重新执行某些dml时就可能会有问题,因为不同的数据库其rowid代表的内容是不同的。在这时候就需要一些额外的信息(columns)加入redo log,这就是supplemental logging。
查看是否开启扩充日志:
SQL> select SUPPLEMENTAL_LOG_DATA_MIN from v$database;
如果没有没有开启扩充日志。
SQL> alter database add supplemental log data;
创建日志分析用的用户并授权:
CREATE USER logminer IDENTIFIED BY logminer ;
SQL> GRANT CONNECT, RESOURCE,DBA TO logminer;
3、LogMiner的配置;
使用oracle用户建立一个logminer使用的目录
cd /u01/oracle/oradata
mkdir logminer
创建logminer字典文件路径:
CREATE DIRECTORY utlfile AS '/u01/oracle/oradata/logminer';
alter system set utl_file_dir='/u01/oracle/oradata/logminer' scope=spfile;
重启数据库生效
shutdown immediate;
startup
show parameter utl_file_dir
4、开始分析日志文件
一、分析在线日志文件
准备测试数据
SQL> conn logminer/logminer
SQL> CREATE TABLE test(id varchar2(100));
INSERT INTO test (id) values ('000001');
INSERT INTO test (id) values ('000011');
commit;
创建数据字典文件
EXECUTE dbms_logmnr_d.build(dictionary_filename => 'dictionary.ora', dictionary_location =>'/u01/oracle/oradata/logminer');
查看数据库当前联机日志文件
SELECT group#, sequence#, status, first_change#, first_time FROM V$log ORDER BY first_change#;
发现只有redo001是当前状态。
select * from v$logfile;
将需要解析的在线日志文件加入
exec dbms_logmnr.add_logfile('/u01/oracle/oradata/prod/redo01a.log', dbms_logmnr.new);
启动logminer进行日志分析
exec dbms_logmnr.start_logmnr( dictfilename=>'/u01/oracle/oradata/logminer/dictionary.ora');
查看日志分析结果
SELECT sql_redo, sql_undo, seg_owner FROMv$logmnr_contents
WHERE seg_name='TEST' ANDseg_owner='LOGMINER';
二、分析归档日志
测试数据准备
CREATE TABLE test2
(id NUMBER(4) CONSTRAINT PK_test PRIMARY KEY,
NAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(2));
INSERT INTO test2 VALUES(7369,'SMITH','CLERK',7902,to_date('17-12-1980','dd-mm-yyyy'),800,NULL,20);
INSERT INTO test2 VALUES(7499,'ALLEN','SALESMAN',7698,to_date('20-2-1981','dd-mm-yyyy'),1600,300,30);
INSERT INTO test2 VALUES(7521,'WARD','SALESMAN',7698,to_date('22-2-1981','dd-mm-yyyy'),1250,500,30);
INSERT INTO test2 VALUES(7566,'JONES','MANAGER',7839,to_date('2-4-1981','dd-mm-yyyy'),2975,NULL,20);
COMMIT;
切换日志,将当前日志归档后进行分析
ALTER SYSTEM SWITCH LOGFILE;
查看归档日志文件
select sequence#, FIRST_CHANGE#, NEXT_CHANGE#,name fromv$archived_log order by sequence# desc;
创建数据字典文件
EXECUTE dbms_logmnr_d.build(dictionary_filename => 'dictionary.ora', dictionary_location =>'/u01/oracle/oradata/logminer');
exec dbms_logmnr.add_logfile('/u01/oracle/product/11.2.0/dbhome_1/dbs/arch2_13_908343318.dbf', dbms_logmnr.new);
exec dbms_logmnr.start_logmnr(dictfilename=>'/u01/oracle/oradata/logminer/dictionary.ora');
查看分析结果
SELECT sql_redo, sql_undo, seg_owner FROM v$logmnr_contents
WHERE seg_name='TEST2' AND seg_owner='LOGMINER';
如果需要分析大量的归档日志,则如下:
BEGIN
dbms_logmnr.add_logfile(
'/u01/oracle/product/11.2.0/dbhome_1/dbs/arch2_13_908343318.dbf',
DBMS_LOGMNR.new );
dbms_logmnr.add_logfile(
'/u01/oracle/product/11.2.0/dbhome_1/dbs/arch2_13_908343318.dbf',
DBMS_LOGMNR.addfile );
dbms_logmnr.add_logfile(
'/u01/oracle/product/11.2.0/dbhome_1/dbs/arch2_13_908343318.dbf',
DBMS_LOGMNR.addfile );
END;
/
LogMiner可以用于日志的分析,跟踪数据库变化,回退数据库变化,对部分误操作数据进行恢复,误操作人员账号定位查看,结合工具完成基于日志事物级别增量数据传输。
1、LogMiner的安装;
首先确认一下咱们数据库上是否有LogMiner安装包,使用DBA用户登录数据库查看是否有dbms_logmnr、dbms_logmnr_d包,如果没有就需要咱们执行下面的脚本安装(必须以DBA用户执行安装)。
1、SQL>@$ORACLE_HOME/rdbms/admin/dbmslm.sql
2、SQL>@$ORACLE_HOME/rdbms/admin/dbmslmd.sql
执行完毕就完成了logminer的安装,第一个脚本用来创建DBMS_LOGMNR包,该包用来分析日志文件。第二个脚本用来创建DBMS_LOGMNR_D包,该包用来创建数据字典文件。
2、数据库的配置;
查看一下数据库是否在归档模式:
SQL> archive log list;
如果数据库处于非归档模式(No Archive Mode)。
将数据库切换到归档模式:
1、关闭数据库
SQL> shutdown immediate
SQL> startup mount;
SQL> alter database archivelog;
切换成功后打开数据库
SQL>alter database open;
接下来,打开数据库的扩充日志:supplemental logging(扩充日志)在通常情况下,redo log 只记录的进行恢复所必需的信息,但是这些信息对于我们使用redo log进行一些其他应用时是不够的,例如在 redo log中使用rowid唯一标识一行而不是通过Primary key,如果我们在另外的数据库分析这些日志并想重新执行某些dml时就可能会有问题,因为不同的数据库其rowid代表的内容是不同的。在这时候就需要一些额外的信息(columns)加入redo log,这就是supplemental logging。
查看是否开启扩充日志:
SQL> select SUPPLEMENTAL_LOG_DATA_MIN from v$database;
如果没有没有开启扩充日志。
SQL> alter database add supplemental log data;
创建日志分析用的用户并授权:
CREATE USER logminer IDENTIFIED BY logminer ;
SQL> GRANT CONNECT, RESOURCE,DBA TO logminer;
3、LogMiner的配置;
使用oracle用户建立一个logminer使用的目录
cd /u01/oracle/oradata
mkdir logminer
创建logminer字典文件路径:
CREATE DIRECTORY utlfile AS '/u01/oracle/oradata/logminer';
alter system set utl_file_dir='/u01/oracle/oradata/logminer' scope=spfile;
重启数据库生效
shutdown immediate;
startup
show parameter utl_file_dir
4、开始分析日志文件
一、分析在线日志文件
准备测试数据
SQL> conn logminer/logminer
SQL> CREATE TABLE test(id varchar2(100));
INSERT INTO test (id) values ('000001');
INSERT INTO test (id) values ('000011');
commit;
创建数据字典文件
EXECUTE dbms_logmnr_d.build(dictionary_filename => 'dictionary.ora', dictionary_location =>'/u01/oracle/oradata/logminer');
查看数据库当前联机日志文件
SELECT group#, sequence#, status, first_change#, first_time FROM V$log ORDER BY first_change#;
发现只有redo001是当前状态。
select * from v$logfile;
将需要解析的在线日志文件加入
exec dbms_logmnr.add_logfile('/u01/oracle/oradata/prod/redo01a.log', dbms_logmnr.new);
启动logminer进行日志分析
exec dbms_logmnr.start_logmnr( dictfilename=>'/u01/oracle/oradata/logminer/dictionary.ora');
查看日志分析结果
SELECT sql_redo, sql_undo, seg_owner FROMv$logmnr_contents
WHERE seg_name='TEST' ANDseg_owner='LOGMINER';
二、分析归档日志
测试数据准备
CREATE TABLE test2
(id NUMBER(4) CONSTRAINT PK_test PRIMARY KEY,
NAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(2));
INSERT INTO test2 VALUES(7369,'SMITH','CLERK',7902,to_date('17-12-1980','dd-mm-yyyy'),800,NULL,20);
INSERT INTO test2 VALUES(7499,'ALLEN','SALESMAN',7698,to_date('20-2-1981','dd-mm-yyyy'),1600,300,30);
INSERT INTO test2 VALUES(7521,'WARD','SALESMAN',7698,to_date('22-2-1981','dd-mm-yyyy'),1250,500,30);
INSERT INTO test2 VALUES(7566,'JONES','MANAGER',7839,to_date('2-4-1981','dd-mm-yyyy'),2975,NULL,20);
COMMIT;
切换日志,将当前日志归档后进行分析
ALTER SYSTEM SWITCH LOGFILE;
查看归档日志文件
select sequence#, FIRST_CHANGE#, NEXT_CHANGE#,name fromv$archived_log order by sequence# desc;
创建数据字典文件
EXECUTE dbms_logmnr_d.build(dictionary_filename => 'dictionary.ora', dictionary_location =>'/u01/oracle/oradata/logminer');
exec dbms_logmnr.add_logfile('/u01/oracle/product/11.2.0/dbhome_1/dbs/arch2_13_908343318.dbf', dbms_logmnr.new);
exec dbms_logmnr.start_logmnr(dictfilename=>'/u01/oracle/oradata/logminer/dictionary.ora');
查看分析结果
SELECT sql_redo, sql_undo, seg_owner FROM v$logmnr_contents
WHERE seg_name='TEST2' AND seg_owner='LOGMINER';
如果需要分析大量的归档日志,则如下:
BEGIN
dbms_logmnr.add_logfile(
'/u01/oracle/product/11.2.0/dbhome_1/dbs/arch2_13_908343318.dbf',
DBMS_LOGMNR.new );
dbms_logmnr.add_logfile(
'/u01/oracle/product/11.2.0/dbhome_1/dbs/arch2_13_908343318.dbf',
DBMS_LOGMNR.addfile );
dbms_logmnr.add_logfile(
'/u01/oracle/product/11.2.0/dbhome_1/dbs/arch2_13_908343318.dbf',
DBMS_LOGMNR.addfile );
END;
/
数据
日志
数据库
分析
文件
工具
字典
用户
信息
模式
脚本
切换
在线
不同
内容
结果
准备
变化
测试
配置
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
mango数据库
江苏创珂网络技术有限公司
湖南微型软件开发哪里好
c t f网络安全技术
软件开发人员如何提高
长春软件开发工资无经验
软件开发是不是属于理工类
数据库适配工作怎么样
网络安全管理员初级
网络安全技术服务服务管理
软件开发加工缺陷是什么
在数据库中什么时候用go
成都嘉核触曲软件开发有限公司
jsp 购物车 数据库
软件开发 常用开源软件
数据库增删改语句
流量日志服务器
广东支付宝网络技术有限公司
金税盘安全服务器地址福建省
广州浩瀚网络技术有限公司
geo数据库平台不同
参加线上软件开发项目
辽宁企业软件开发服务优化
三级网络技术 指令
连云区网络安全
云数据库搭建热血传奇
云主机软件开发注意事项
班牌软件开发公司
数据分析 与 数据库
亿泰兴服务器电源启动一下就停