百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

使用 Oracle LogMiner 分析重做日志

sinye56 2024-10-04 11:15 4 浏览 0 评论

概述

我们知道oracle的redo和归档日志,记录了数据库的事务的相关信息。在日常的数据库管理过程中,我们有时需要,查看特定时刻特定用户在数据库上执行的操作。这时我们可以通过用logminer分析日志文件获取相关信息。 logminer分析归档日志文件所获得的信息并不是原始的操作信息,而是等价的原子操作信息,譬如用一条delete语句删除两百万条信息,原始操作只需一条命令,但是分析归档文件会获得两百万条delete命令信息。Oracle LogMiner用于读取重做/归档日志文件的内容。您可以运行 LogMiner 来读取同一数据库或完全独立的数据库上的重做/归档日志文件的内容!在本文中,我们将了解 Oracle LogMiner 配置和查询重做/存档日志文件的内容。

解决方案

步骤一:启用补充日志记录

补充日志将有关每个事务的附加信息记录到重做日志文件中。在生成将由 Oracle LogMiner 分析的重做日志文件之前,您必须启用补充日志记录。

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
SELECT SUPPLEMENTAL_LOG_DATA_MIN FROM V$DATABASE;

步骤二:添加日志文件

Oracle LogMiner 可以挖掘重做/存档日志文件。让我们假设我们想分析数据库中的所有重做日志。

请注意 : DBMS_LOGMNR.NEW 参数指定要分析的第一个日志文件。后续日志文件使用 DBMS_LOGMNR.ADDFILE 选项定义。

情景1:REDO LOG

EXECUTE DBMS_LOGMNR.ADD_LOGFILE( -
   LOGFILENAME => '/u01/db_files/testdb/redo01.log', -
   OPTIONS => DBMS_LOGMNR.NEW);
EXECUTE DBMS_LOGMNR.ADD_LOGFILE( -
   LOGFILENAME => '/u01/db_files/testdb/redo01.log', -
   OPTIONS => DBMS_LOGMNR.ADDFILE);
EXECUTE DBMS_LOGMNR.ADD_LOGFILE( -
   LOGFILENAME => '/u01/db_files/testdb/redo01.log', -
   OPTIONS => DBMS_LOGMNR.ADDFILE);

情景2: ARCHIVE LOG

获取所要分析时间段归档日志文件信息

SELECT 'dbms_logmnr.add_logfile(LogFileName=>'''
       || name
       || ''', Options=>dbms_logmnr.addfile);'
FROM   v$archived_log
WHERE  first_time > To_date('2023-03-30 13:30', 'yyyy-mm-dd hh24:mi')
       AND first_time < To_date('2023-03-30 13:50', 'yyyy-mm-dd hh24:mi')
       AND dest_id = 1
ORDER  BY first_time;

保存好输出信息,并将输出信息第一条中的dbms_logmnr.addfile改成dbms_logmnr.new,即:

EXECUTE DBMS_LOGMNR.ADD_LOGFILE( -
   LOGFILENAME => '/u01/FRA/TESTDB/archivelog/o1_mf_1_3027_k6dcc33y_.arc', -
   OPTIONS => DBMS_LOGMNR.NEW);
EXECUTE DBMS_LOGMNR.ADD_LOGFILE( -
   LOGFILENAME => '/u01/FRA/TESTDB/archivelog/o1_mf_1_3028_k6dcc33y_.arc', -
   OPTIONS => DBMS_LOGMNR.ADDFILE);
EXECUTE DBMS_LOGMNR.ADD_LOGFILE( -
   LOGFILENAME => '/u01/FRA/TESTDB/archivelog/o1_mf_1_3029_k6dcc33y_.arc', -
   OPTIONS => DBMS_LOGMNR.ADDFILE);

步骤三:启动 LogMiner

如果您在同一个源数据库上启动 LogMiner,那么只需发出

EXECUTE DBMS_LOGMNR.START_LOGMNR( -
   OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG);

现在您已准备好查询V$LOGMNR_CONTENTS视图,该视图允许您查看重做/存档日志文件的内容。

步骤四:查询 V$LOGMNR_CONTENTS

让我们检查重做日志文件以查找针对 EMPLOYEES 表运行的任何查询

SELECT username ,  SQL_REDO ,  SQL_UNDO  FROM  V $ LOGMNR_CONTENTS 
WHERE seg_owner =  'HR' and seg_name like 'EMPLOYEES' ;

每次查询 V$LOGMNR_CONTENTS 视图时,Oracle LogMiner 都必须运行以呈现数据。当您查询 V$LOGMNR_CONTENTS 时,数据不会存储在数据库中的任何位置。

步骤五:结束 LogMiner

Oracle LogMiner 占用系统资源并且在您停止它之前不会释放这些资源。

EXECUTE DBMS_LOGMNR.END_LOGMNR

步骤六:过滤 LogMiner 内容

当您添加日志文件并启动LogMiner时,您可以查看日志文件的所有内容。如果日志文件很大,那么最好使用一些过滤器来找出特定的事务。

情景1:使用 SCN 号码过滤

您可以过滤特定 SCN 编号之间的日志文件内容(如果您知道)

EXECUTE DBMS_LOGMNR.START_LOGMNR( -
    STARTSCN => 280389, -
    ENDSCN   => 351390, -
    OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG);

情景2:按日期和时间过滤

您可以过滤特定日期和时间之间的日志文件内容

ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YYYY HH24:MI:SS';
EXECUTE DBMS_LOGMNR.START_LOGMNR( -
    STARTTIME => '23-Nov-2022 11:23:00', -
    ENDTIME => '23-Nov-2022 11:43:00'-
    OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG);

情景3:仅显示已提交的事务

默认情况下,LogMiner 将显示日志文件中已提交和未提交的事务。以防万一您想过滤并仅查看已提交的事务

EXECUTE DBMS_LOGMNR.START_LOGMNR(OPTIONS => -
   DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG + -
   DBMS_LOGMNR.COMMITTED_DATA_ONLY);

相关推荐

linux安装FTP

1、在nkftp目录下安装ftp,进入到nkftp里面[root@localhostbin]#cd/data/nkftp执行安装命令:[root@localhostnkftp]#rpm-i...

LINUX下搭建FTP服务器

FTP服务器介绍FTP是FileTransferProtocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(App...

Linux下如何进行FTP设置

目录:一、Redhat/CentOS安装vsftp软件二、Ubuntu/Debian安装vsftp软件一、Redhat/CentOS安装vsftp软件1.更新yum源yumupdate-y2.安...

推荐使用集串口 SSH远程登录和FTP传输三合一工具MobaXterm

来源:百问网作者:韦东山本文字数:1216,阅读时长:4分钟在以前的资料里,串口和SSH远程登使用SecureCRT,window与ubuntu数据传输使用filezilla,窗口切换来切换去,麻烦也...

如何搭建FTP服务器(Linux系统)

上次说了Windows操作系统下搭建的FTP服务器,那有朋友问我,说买的XX轻量应用服务器都是属于Linux的操作系统,我该如何为搭建FTP服务器呢?...

Linux 命令 ncftp(文件传输)——想玩转linux就请一直看下去

我是IT悟道,点击右上方“关注”,每天分享IT、科技、数码方面的干货。Linuxncftp命令...

如何用 ftp 实现一键上传

简介ftp是Internet标准文件传输协议的用户界面,它允许用户与远程网络站点之间传输文件...

Linux安装ftp

1安装vsftpd组件安装完后,有/etc/vsftpd/vsftpd.conf文件,是vsftp的配置文件。[root@bogon~]#yum-yinstallvsftpd2添加一个...

一天一点点:linux - ftp命令

linuxftp命令设置文件系统相关功能。FTP是ARPANet的标准文件传输协议,该网络就是现今Internet的前身。语法ftp[-dignv][主机名称或IP地址]参数:-d详细显示指令执...

Centos 7 搭建FTP

目录安装软件以及启动服务添加防火墙规则关闭selinuxftp配置常用常用参数详解特殊参数配置文件没有的参数也可以添加到配置中1.安装软件以及启动服务yuminstall-yvsftpdsys...

【Linux】Linux中ftp命令,没有你想的那么简单

本文介绍了Linux中FTP命令的基本用法,包括连接与登录远程服务器,以及解析了FTP协议中五个最常用的操作命令的使用和解析过程。同时,提供了一个包含常用FTP操作命令的表格,供读者参考。通过熟练掌握...

linux 命令行操作ftp

以下是linuxftp命令参数的详解。FTP>!从ftp子系统退出到外壳?FTP>?显示ftp命令说明??和help相同?格式:?[command]说明:[com...

多学习才能多赚钱之:linux如何使用ftp

linux如何使用ftp步骤1:建立FTP连接想要连接FTP服务器,在命令上中先输入ftp然后空格跟上FTP服务器的域名'domain.com'或者IP地址例如:ftpdom...

linux常用网络操作方法:ftp命令使用方法

常用网络操作方法Linux提供了一组强有力的网络命令来为用户服务,这些工具能够帮助用户登录到远程计算机上、传输文件和执行远程命令等。本节介绍下列几个常用的有关网络操作的命令:ftp传输文件tel...

Linux 5.15有望合并Memory Folios方案 内核构建速度可提升7%

甲骨文公司的长期内核开发人员MatthewWilcox已经研究了“内存对开区”概念相当长的一段时间,这可以改善Linux的内存管理,使其具有更大的效率。例如,使用内存对开的基准测试表明,内核的构建速...

取消回复欢迎 发表评论: