---
title: 使用 Logminer 拉取 Oracle 数据库的数据-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于使用 Logminer 拉取 Oracle 数据库的数据相关的常见问题和使用技巧，帮助您快速解决使用 Logminer 拉取 Oracle 数据库的数据的难题。
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

划线反馈

# 使用 Logminer 拉取 Oracle 数据库的数据

更新时间：2026-08-11 09:11

适用版本： V4.2.x、V4.1.x、V4.0.x、V3.4.x、V3.3.x 内容类型：How-to  

本文为您介绍如何使用 Logminer 拉取 Oracle 数据库的变更数据。

## 适用版本

适用于 OceanBase 迁移服务（OceanBase Migration Service，OMS）V3.3.0 及之后版本。

## 使用场景

Oralce Store 是利用 Oracle 数据库自带的 Logminer 工具进行增量采集，运行过程中由于一些未知的原因，产生数据质量问题时，需要排查是否是 Logminer 自身的问题导致。此时，需要到 Oracle Server 上手动的进行日志挖取，用于排查问题。

## 拉取指定 ROWID 的日志文件

### 查询对应的归档日志文件

1. 根据 ROWID 查询该条记录最后变更 SCN，该 SCN 不一定准，查出的是对应的 BLOCK 上的最后变更 SCN。如果能从业务数据中获得更准确的变更时间，则推荐使用业务数据的时间。

   ```sql
   alter session set nls_timestamp_format='YYYY-MM-DD HH24:MI:SS';
   select ora_rowscn from table_name where rowid= 'xxxxxxxxx';
   select scn_to_timestamp(ora_rowscn)from table_name where rowid= 'xxxxxxxxx';

   ```
 2. 查询指定时间或者 SCN 属于哪个归档。如果 Oracle 为 RAC 环境，下述 SQL 可能会查出来多条记录，则每个归档文件都需要进行分析。如果查询结果为空，说明归档日志已经被删除了，无法进行分析。

   使用时间查询，例如查询时间为 `2022-06-10 14:59:00` ：

   ```sql
   SELECT THREAD#, NAME FROM V$ARCHIVED_LOG WHERE NAME IS NOT NULL AND STATUS = 'A'
   AND DELETED = 'NO' AND ARCHIVED = 'YES' AND STANDBY_DEST = 'NO'  
   AND FIRST_TIME <= TO_TIMESTAMP('2022-06-10 14:59:00','yyyy-MM-dd hh24:mi:ss')
   AND NEXT_TIME > TO_TIMESTAMP('2022-06-10 14:59:00','yyyy-MM-dd hh24:mi:ss');

   ```

   使用 SCN 查询，例如查询 SCN 为 2106626：

   ```sql
   SELECT  THREAD#,NAME FROM V$ARCHIVED_LOG WHERE NAME IS NOT NULL AND STATUS = 'A' AND DELETED = 'NO' AND ARCHIVED = 'YES' AND STANDBY_DEST = 'NO'  
   AND FIRST_CHANGE# <= 2106626 AND NEXT_CHANGE# > 2106626;

   ```

### 使用 Logminer 分析归档日志

1. 使用 Logminer 分析归档日志，用上面步骤中查出来的 NAME 替换下面 SQL 中的 logfilename，执行 SQL 进行日志分析。

   ADG 主库和备库分别采用不同的分析 SQL，为了一次查询出更多的有效信息，您可以一次添加多组归档文件进行分析。建议一次添加 5 组日志文件进行分析。

      - ADG 主库：

       ```sql
       begin
       sys.dbms_logmnr.add_logfile(logfilename=>'/oracle/archivedlog/filename1.arc',options=>sys.dbms_logmnr.new);
       sys.dbms_logmnr.add_logfile(logfilename=>'/oracle/archivedlog/filename2.arc',options=>sys.dbms_logmnr.addfile);
       sys.dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog);
       end;
       /

       ```
      - ADG 备库：

       ```unknow
       begin
       sys.dbms_logmnr.add_logfile(logfilename=>'/oracle/archivedlog/filename1.arc',options=>sys.dbms_logmnr.NEW);
       sys.dbms_logmnr.add_logfile(logfilename=>'/oracle/archivedlog/filename2.arc',options=>sys.dbms_logmnr.addfile);
       sys.dbms_logmnr.start_logmnr();
       end;
       /

       ```
 2. 根据 ROWID 从 Logminer 返回结果中查询事务 ID。如果有多条事务 ID，则需要对每个 XID 分别按照步骤 3 的方式进行查询，找出该 ROWID 的完整变更过程。

   ```sql
   select XID from V$LOGMNR_CONTENTS where ROW_ID = 'AAASauAAEAAAAKGAAA'
   order by SCN desc;

   ```
 3. 根据步骤 2 中的 XID 查询出事务完整的操作。如果查询对应的归档日志文件步骤中查出了多条结果，则每条结果都需要使用 Logminer 分析一遍，直到获取对应 ROWID 的变更记录。

   ```sql
   select SCN, RBASQN, OPERATION, TABLE_NAME, SEG_OWNER,  ROLLBACK, SEG_NAME,
   SEG_TYPE, TIMESTAMP, XID, ROW_ID, SQL_REDO from V$LOGMNR_CONTENTS
   where XID = 'xxxxxxxxxxxx';

   ```

   如果上面的 SQL 查询出的内容过多，不方便查看，您可以只查询一些重要的信息，以便排查问题。发现需要更多的信息时，再逐步增加。示例如下：

   ```sql
   select OPERATION,TABLE_NAME, ROW_ID, ROLLBACK from V$LOGMNR_CONTENTS
   where XID = 'xxxxxxxxxxxx';

   ```

## 查询归档文件中的大事务表

1. 根据上面的步骤使用 Logminer 分析归档文件。
 2. 找到归档文件中大事务的 XID，下面 SQL 会根据事务的记录数从大到小进行排序，排在前几个的就是大事务。

   ```sql
   select XID, count(*) from V$LOGMNR_CONTENTS group by XID order by 2 desc;

   ```
 3. 根据大事务的 XID 找到记录数最多的表。

   ```sql
   select SEG_OWNER, SEG_NAME, COUNT(*) from V$LOGMNR_CONTENTS where XID='xxxx' group by SEG_OWNER, SEG_NAME order by 3 desc;

   ```

上一篇

[OceanBase Store RPC 访问 OceanBase 集群失败](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000234443)

下一篇

[从 OMS 批量加载数据时，如何配置 OBServer 的调优参数](https://www.oceanbase.com/knowledge-base/oceanbase-database-20000000034) ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
