当前位置: 首页 > article >正文

Oracle logminer详解

Oracle LogMiner 是 Oracle 数据库提供的一个内置工具,用于分析和挖掘数据库的在线重做日志文件(Online Redo Log Files)​归档日志文件(Archive Log Files)​。通过 LogMiner,用户可以查看数据库的历史操作(如 DML 和 DDL 语句),帮助进行数据审计、故障恢复、性能分析等任务。

一、​LogMiner 的核心功能

  1. 历史操作追踪

    • 解析重做日志中的 SQL 操作,包括 INSERTUPDATEDELETE 等 DML 语句,以及 CREATEALTER 等 DDL 语句。
    • 提供操作的详细信息,例如操作时间、用户、SCN(System Change Number)、事务 ID 等。
  2. 数据恢复支持

    • 当发生误操作(如误删数据)时,可通过 LogMiner 定位到具体的 SQL 语句和时间点,辅助恢复数据。
  3. 审计与合规性

    • 追踪数据库变更,满足合规性要求(例如跟踪谁在何时修改了关键数据)。
  4. 性能与事务分析

    • 分析长时间运行的事务或高负载操作,优化数据库性能。

二、​主要使用场景

  • 数据恢复:找回被误删除或误修改的数据。
  • 审计:监控数据库的变更操作(如合规审计、安全审计)。
  • 调试:分析特定时间点的数据库操作,排查问题。
  • 同步与复制:为数据同步工具(如 GoldenGate)提供底层日志解析支持。

三、​LogMiner 的使用步骤

  1. 启用补充日志(Supplemental Logging)​
    LogMiner 需要补充日志来记录额外的信息(如主键、唯一键),以便解析完整的 SQL 语句。

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
  2. 创建数据字典
    LogMiner 需要数据字典(表结构信息)来正确解析日志中的对象名称。可选择:

    • 在线数据字典:实时解析当前数据库对象(适用于分析最近的日志)。
    • 离线数据字典:将数据字典导出到文件(适用于分析历史日志或不同数据库的日志)。
    -- 导出数据字典到字典文件
    EXEC DBMS_LOGMNR_D.BUILD(OPTIONS => DBMS_LOGMNR_D.STORE_IN_REDO_LOGS);
  3. 添加日志文件
    指定要分析的日志文件(在线或归档日志)。

    BEGINDBMS_LOGMNR.ADD_LOGFILE(LOGFILENAME => '/path/to/logfile.log', OPTIONS => DBMS_LOGMNR.NEW);
    END;
  4. 启动 LogMiner
    使用 DBMS_LOGMNR.START_LOGMNR 开始分析。

    BEGINDBMS_LOGMNR.START_LOGMNR(OPTIONS => DBMS_LOGMNR.DICT_FROM_REDO_LOGS +  -- 使用在线数据字典DBMS_LOGMNR.COMMITTED_DATA_ONLY    -- 仅分析已提交事务);
    END;
  5. 查询分析结果
    通过 V$LOGMNR_CONTENTS 视图获取解析后的日志内容。

    SELECT scn, sql_redo, sql_undo, username, timestamp
    FROM V$LOGMNR_CONTENTS
    WHERE table_name = 'EMPLOYEES';
  6. 结束分析
    释放资源。

    EXEC DBMS_LOGMNR.END_LOGMNR;

四、​LogMiner 示例

1.手动切换当前redo日志

alter system archive log current;

2.和客户确定需要进行日志挖掘的大体时间点,并查询在那时间段内产生的归档日志有哪些

alter session set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS';
select thread#,name,completion_time  from v$archived_log where completion_time >TO_DATE('2025-03-15 10:00:00','YYYY-MM-DD HH24:MI:SS') order by completion_time;


3.添加archive redo log:
将下面logfilename后面的文件替换为具体的归档日志文件,挖多少加多少。

begin
sys.dbms_logmnr.add_logfile(logfilename=>'+DG_FRA/aaa/archivelog/2025-03-15/thread_1_seq_2856', options=>sys.dbms_logmnr.addfile);
sys.dbms_logmnr.add_logfile(logfilename=>'+DG_FRA/aaa/archivelog/2025-03-15/thread_1_seq_2857', options=>sys.dbms_logmnr.addfile);
sys.dbms_logmnr.add_logfile(logfilename=>'+DG_FRA/aaa/archivelog/2025-03-15/thread_1_seq_2858', options=>sys.dbms_logmnr.addfile);
end;

说明:
+DG_FRA/aaa/archivelog/2025-03-15/thread_1_seq_2856 这个来源于v$archived_log视图,该视图还有一列是completion_time,该列的意思是该sequence号对应的redolog 归档完成的时间。

4.开始分析:

begin
sys.dbms_logmnr.start_logmnr(options=>sys.dbms_logmnr.dict_from_online_catalog);
end;

5.检查分析结果:

select * from  v$logmnr_contents  where sql_redo like '%table_name%'

---这个where条件,就是你自己要填写查找的内容。
也可以写当时的sql语句如delte from xxx 等关键字,注意日志挖掘挖出来的并不是和执行的sql语句一模一样。

另外,v$logmnr_contents有一列scn是表示发起命令时的scn号,可方便用于误删除数据的恢复操作。
6.结束分析

begin
sys.dbms_logmnr.end_logmnr;
end;

或者直接退出会话。
7.关于补充日志
另外,只有在已经打开supplemental log 的情况下,会记录执行sql的OS_USERNAME,USERNAME,MACHINE_NAME,数据库默认不打开,所以这三列信息不进行记录。
知识点:打开补充日志命令

alter database add SUPPLEMENTAL log data;

相关文章:

Oracle logminer详解

Oracle LogMiner 是 Oracle 数据库提供的一个内置工具,用于分析和挖掘数据库的在线重做日志文件(Online Redo Log Files)​和归档日志文件(Archive Log Files)​。通过 LogMiner,用户可以查看数据库的历史操…...

SharpBrowser:用C#打造超快的个性化开源浏览器!

推荐一个基于.Net 8 和 CefSharp开发的开源浏览器。 01 项目简介 SharpBrowser 是一个用 C# 和 CefSharp 开发的全功能网页浏览器。它声称是最快的开源 C# 网页浏览器,渲染网页的速度比谷歌浏览器还快,因为其使用轻量级的 CEF 渲染器。 经过比较所有可…...

【企业级Web应用中的文件下载处理:从S3预签名URL到压缩状态管理】

企业级Web应用中的文件下载处理:从S3预签名URL到压缩状态管理 1. 引言:一个看似简单的下载功能背后 在开发企业级Web应用时,文件下载功能看似简单,却常常隐藏着诸多技术挑战。近期,我们在一个xx申报系统项目中&#…...

【新模型速递】PAI一键云上零门槛部署DeepSeek-V3-0324、Qwen2.5-VL-32B

DeepSeek近期推出了“DeepSeek-V3-0324”版本,据测试在数学推理和前端开发方面的表现已优于 Claude 3.5 和 Claude 3.7 Sonnet。 阿里也推出了多模态大模型Qwen2.5-VL的新版本--“Qwen2.5-VL-32B-Instruct”,32B参数量实现72B级性能,通杀图文…...

[原创](Modern C++)现代C++的关键性概念: 如何利用多维数组的指针安全地遍历所有元素

[作者] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 开发工具: Visual Studio、Delphi、XCode、C …...

flask开发中设置Flask SQLAlchemy 的 db.Column 只存储非负整数(即 0 或正整数)

如果你想控制一个 Flask SQLAlchemy 的 db.Column 只存储非负整数(即 0 或正整数),你可以在模型中使用验证来确保这一点。一种常见的方法是使用模型的 validate 方法或者在执行插入或更新操作时进行检查。 以下是实现这一目标的几种方法&…...

【Elasticsearch基础】基本核心概念介绍

Elasticsearch作为当前最流行的分布式搜索和分析引擎,其强大的功能背后是一套精心设计的核心概念体系。本文将深入解析Elasticsearch的五大核心概念,帮助开发者构建坚实的技术基础,并为高效使用ES提供理论支撑。 1 索引(Index&…...

Github 热点项目 awesome-mcp-servers MCP 服务器合集,3分钟实现AI模型自由操控万物!

【今日推荐】超强AI工具库"awesome-mcp-servers"星数破万! ① 百宝箱式服务模块:AI能直接操作浏览器、读文件、连数据库,比如让AI助手自动整理Excel表格,三分钟搞定全天报表; ② 跨领域实战利器:…...

SpringMVC 拦截器(Interceptor)

一.拦截器 假设有这么一个场景,一个系统需要用户登录才能进入,在检验完用户的信息后对页面进行了跳转。但是如果我们直接输入跳转的url,可以绕过用户信息校验(用户登录),直接进入系统。 因此我们引入了使…...

【NLP】16. NLP推理方法重点回顾 -- 52道多选题

Which of the following problems are commonly solved using sequence tagging? A) Named Entity Recognition (NER) B) Part-of-Speech (POS) Tagging C) Word Embedding Training D) Syntactic Dependency Parsing 序列标注是一种 NLP 任务,常用于 命名实体…...

Redisson分布式锁深度解析:原理与实现机制

Redisson作为Redis Java客户端中的分布式解决方案佼佼者,其分布式锁实现被广泛应用于生产环境。以下从底层设计到源码实现进行全面剖析。 一、核心架构设计 1. 整体架构图 graph LRA[客户端] --> B[RLock接口]B --> C[RedissonLock]C --> D[Redis命令执…...

Linux 系统调用实现机制详解

Linux 系统调用实现机制详解 —— fork()、execve()、waitpid() 内核层面的秘密 在 Linux 内核中,fork()、execve() 和 waitpid() 是构建多任务操作系统的三大基石,它们涉及进程控制、内存管理、文件系统等多个子系统。本文将带你一探它们在 内核层面的…...

责任链模式_行为型_GOF23

责任链模式 责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,核心思想是将多个处理请求的对象连成一条链,请求沿链传递直到被处理。它像现实中的“多级审批流程”——请假或报销时,申请会逐级提交给…...

03-SpringBoot3入门-配置文件(自定义配置及读取)

1、自定义配置 # 自定义配置 zbj:user:username: rootpassword: 123456# 自定义集合gfs:- a- b- c2、读取 1)User类 package com.sgu.pojo;import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.spring…...

学习记录-软件测试基础

一、软件测试分类 1.按阶段:单元测试(一般开发自测)、集成测试、系统测试、验收测试 2.按代码可见度测试:黑盒测试、灰盒测试、白盒测试 3.其他:冒烟测试(冒烟测试主要是在开发提测后进行,主要是测试主流…...

【蓝桥杯每日一题】3.28

🏝️专栏: 【蓝桥杯备篇】 🌅主页: f狐o狸x "今天熬的夜,会变成明天奖状的闪光点!" 目录 一、唯一的雪花 题目链接 题目描述 解题思路 解题代码 二、逛画展 题目链接 题目描述 解题思路 解题代…...

优秀的 React 入门开源项目推荐

以下是一些优秀的 React 入门开源项目推荐,涵盖不同应用场景和功能模块,适合学习和实践: 1. Jira Clone 仓库地址:GitHub - oldboyxx/jira_clone 亮点: 基于 React Hooks 实现,模仿 Jira 的任务管理功能。…...

万字长文详解Text-to-SQL

什么是Text-to-SQL 在各个企业数据量暴涨的现在,Text-to-SQL越来越重要了,所以今天就来聊聊Text-to-SQL。 Text-to-SQL是一种将自然语言查询转换为数据库查询的技术。它可以让用户通过自然语言来查询数据库,而不需要编写复杂的SQL语句。 T…...

【Linux】动静态库的制作与使用

一.对软硬链接的补充 1、无法对目录进行硬链接 为什么呢? 首先,我们在访问文件时,每一个文件都会有自己的dentry结构,这些结构会在内存中维护一棵路径树,来快速进行路径查找。但是如果某个节点直接使用硬链接到了根节…...

ubuntu22.04 如何安装 ch341 驱动

前言 本篇是介绍ubuntu22.04如何安装 ch341 驱动,并对其中遇到的问题进行整理。 一、流程 1.1 查看CH340驱动 首先是查看ubuntu22.04系统自带的驱动,用以下命令即可 ls /lib/modules/$(uname -r)/kernel/drivers/usb/serial 然后会跳出以下界面&…...

个人博客网站从搭建到上线教程

步骤1:设计个人网站 设计个人博客网站的风格样式,可以在各个模板网站上多浏览浏览,以便有更多设计网站风格样式的经验。 设计个人博客网站的内容,你希望你的网站包含哪些内容如你的个人基本信息介绍、你想分享的项目、你想分享的技术文档等等。 步骤2:选择开发技术栈 因…...

android 一步完成 aab 安装到手机

家人们谁懂!在 Android 系统安装 aab 应用超麻烦。满心期待快速体验,却发现 aab 无法直装,得先转为 apks 格式,这过程复杂易错。好不容易转好,还得安装 apks,一番折腾,时间与耐心全耗尽。别愁&a…...

c#使用forms实现屏幕截图

说明: c#使用forms实现屏幕截图 step1: 点击按钮,拖拽,截图,保存本地 C:\Users\wangrusheng\RiderProjects\WinFormsApp1\WinFormsApp1\Form1.cs using System; using System.Drawing; using System.Drawing.Imaging; using Syst…...

mac m4 Homebrew安装MySQL 8.0

1.使用Homebrew安装MySQL8 在终端中输入以下命令来安装MySQL8: brew install mysql8.0 安装完成后,您可以通过以下命令来验证MySQL是否已成功安装: 2.配置mysql环境变量 find / -name mysql 2>/dev/null #找到mysql的安装位置 cd /op…...

UE5学习笔记 FPS游戏制作26 UE中的UI

文章目录 几个概念创建一个UI蓝图添加UI获取UI的引用 切换设计器和UI蓝图将UI添加到游戏场景锚点轴点slotSizeToContent三种UI数据更新方式(Text、Image)函数绑定属性绑定事件绑定 九宫格分割图片按钮设置图片绑定按下事件 下拉框创建添加数据修改样式常用函数 滚动框创建添加数…...

Navicat导出mysql数据库表结构说明到excel、word,单表导出方式记录

目前只找到一张一张表导出的方式 使用information_schema传入表名查询 字段名根据需要自行删减,一般保留序号、字段名、类型、说明就行 SELECT COLUMNS.ORDINAL_POSITION AS 序号, COLUMNS.COLUMN_NAME AS 字段名, COLUMNS.COLUMN_TYPE AS 类型(长度), COLUMNS.N…...

目标检测 AP 计算 实例 python

以下是使用 Python 实现目标检测中 ‌Average Precision (AP)‌ 计算的完整实例,包含代码和注释。这里以 ‌Pascal VOC 标准‌ 为例(IoU阈值0.5)。 步骤1:准备数据 假设: gt_boxes: 真实标注框列表,格式为 …...

HarmonyOS NEXT图形渲染体系:重新定义移动端视觉体验

一、革命性架构设计 1.1 多线程并行渲染引擎 HarmonyOS NEXT通过四级流水线并行架构实现渲染效率质的飞跃,其核心包含: 优先级任务调度器:动态分配紧急渲染任务(如手势反馈)与常规任务智能线程池管理:根…...

使用 Docker 18 安装 Eureka:解决新版本 Docker 不支持的问题

使用 Docker 18 安装 Eureka:解决新版本 Docker 不支持的问题 在微服务架构中,Eureka 是一个常用的注册中心,用于服务发现和管理。然而,随着 Docker 版本的更新,一些新版本的 Docker 对 Eureka 的支持并不友好。如果你…...

Linux驱动开发 中断处理

目录 序言 1.中断的概念 2.如何使用中断 中断处理流程 中断上下文限制 屏蔽中断/使能 关键区别与选择 上半部中断 下半部中断 软中断(SoftIRQ) 小任务(Tasklet) 工作队列(Workqueue) 线程 IRQ(Threaded IRQ…...