返回顶部
首页 > 资讯 > 数据库 >怎么利用oracle的日志挖掘实现回滚
  • 227
分享到

怎么利用oracle的日志挖掘实现回滚

2024-04-02 19:04:59 227人浏览 薄情痞子
摘要

这篇文章主要讲解了“怎么利用oracle的日志挖掘实现回滚”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么利用oracle的日志挖掘实现回滚”吧!&nbs

这篇文章主要讲解了“怎么利用oracle日志挖掘实现回滚”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么利用oracle的日志挖掘实现回滚”吧!

    archery对Mysql的支持非常完美,虽然也支持oracle,但是对oracle只支持查询和执行,不支持备份和审核,还是有很大的遗憾。

    现在,我们急需要一个oracle的备份功能,于是我想到了oracle自带的功能——日志挖掘,它可以实现sql语句的备份功能。

    下面是我对日志挖掘的演示。

0、启动最小日志,这一步是为了日志更加详细,完整(必须)

alter database add supplemental log data;

1、登录用户

SQL> conn czx/xxx;
Connected.

2、创建一张测试

SQL> create table t (id number, name varchar2(10));
Table created.

3、插入一些测试数据

SQL> insert into t values (1,'a');
1 row created.
SQL> insert into t values (2,'b');
1 row created.
SQL> insert into t values (3,'c');
1 row created.
SQL> insert into t values (4,'d');
1 row created.
SQL> insert into t values (5,'e');
1 row created.
SQL> commit;
Commit complete.
SQL> select * from t;
	ID NAME
---------- ----------
	 1 a
	 2 b
	 3 c
	 4 d
	 5 e

4、 查看当前会话的sid和serial#

SQL> select s.sid,s.serial# from v$session s where s.sid = (select sid from v$mystat where rownum = 1 );
 SID    SERIAL#
 ---------- ----------
  36         3755

5、查看当前数据库时间,供后面的starttime用

SQL> alter session set nls_date_fORMat='yyyy-mm-dd hh34:mi:ss';
Session altered.
SQL> select sysdate from dual;
SYSDATE
-------------------
2020-03-15 19:02:53

6、执行一些sql语句,模拟上线sql

SQL> delete from t where id < 3;
2 rows deleted.
SQL> update t set name = 'DDDd' where id=4;
1 row updated.
SQL> insert into t values (6, 'f');
1 row created.
SQL> insert into t values (7, 'g');
1 row created.
SQL> commit;
Commit complete.
SQL> select * from t;
ID NAME
---------- ----------
 3 c
 4 dddd
 5 e
 6 f
 7 g

7、再查看一下现在数据库时间,供后面的endtime用

SQL> select sysdate from dual;
SYSDATE
-------------------
2020-03-15 19:08:16

8、通过时间范围,用在线字典方式将redo日志自动加载到v$logmnr_contents这个视图中

注意:starttime和endtime就是上面获得的两个当前数据库时间。

SQL>
begin
dbms_logmnr.start_logmnr(
starttime=>to_date('2020-03-15 19:02:53','yyyy-mm-dd hh34:mi:ss'),
endtime=>to_date('2020-03-15 19:08:16','yyyy/mm/dd hh34:mi:ss'),
options=>dbms_logmnr.dict_from_online_catalog + dbms_logmnr.continuous_mine);
end;
/
PL/SQL procedure successfully completed.

9、 查看v$logmnr_contents视图的sql_redo和sql_undo内容,就会得到上述执行sql的原始语句和对应的回滚语句

sql> 
SELECT 
	sql_redo,
	sql_undo,
    SESSION#,
	serial#,
	username,
	OS_USERNAME,
	MacHINE_NAME,
	SESSION_INFO,
	operation,
	xid
FROM
	v$logmnr_contents 
WHERE
	SESSION# = ( SELECT s.sid FROM v$session s WHERE s.sid = ( SELECT sid FROM v$mystat WHERE ROWNUM = 1 ) ) 
	AND serial# = ( SELECT serial# FROM v$session s WHERE s.sid = ( SELECT sid FROM v$mystat WHERE ROWNUM = 1 ) );
	
	
	
SESSION#    SERIAL# USERNAME                       OPERATION                        XID              SQL_REDO                                                                         SQL_UNDO
---------- ---------- ------------------------------ -------------------------------- ---------------- -------------------------------------------------------------------------------- --------------------------------------------------------------------------------
        36       3755 CZX                            START                            0A000900C8060000 set transaction read write;                                                      
        36       3755 CZX                            DELETE                           0A000900C8060000 delete from "CZX"."T" where "ID" = '1' and "NAME" = 'a' and ROWID = 'AAAVSdAAEAA insert into "CZX"."T"("ID","NAME") values ('1','a');
        36       3755 CZX                            DELETE                           0A000900C8060000 delete from "CZX"."T" where "ID" = '2' and "NAME" = 'b' and ROWID = 'AAAVSdAAEAA insert into "CZX"."T"("ID","NAME") values ('2','b');
        36       3755 CZX                            UPDATE                           0A000900C8060000 update "CZX"."T" set "NAME" = 'dddd' where "ID" = '4' and "NAME" = 'd' and ROWID update "CZX"."T" set "NAME" = 'd' where "ID" = '4' and "NAME" = 'dddd' and ROWID
        36       3755 CZX                            INSERT                           0A000900C8060000 insert into "CZX"."T"("ID","NAME") values ('6','f');                             delete from "CZX"."T" where "ID" = '6' and "NAME" = 'f' and ROWID = 'AAAVSdAAEAA
        36       3755 CZX                            INSERT                           0A000900C8060000 insert into "CZX"."T"("ID","NAME") values ('7','g');                             delete from "CZX"."T" where "ID" = '7' and "NAME" = 'g' and ROWID = 'AAAVSdAAEAA
        36       3755 CZX                            COMMIT                           0A000900C8060000 commit;                                                                          
7 rows selected

    如果会vue.jsDjango,就可以把上面这个功能做成WEB界面形式的。

10、记得最后用完了关闭日志挖掘功能

SQL>
begin
dbms_logmnr.end_logmnr;
end;
/
PL/SQL procedure successfully completed.

感谢各位的阅读,以上就是“怎么利用oracle的日志挖掘实现回滚”的内容了,经过本文的学习后,相信大家对怎么利用oracle的日志挖掘实现回滚这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

您可能感兴趣的文档:

--结束END--

本文标题: 怎么利用oracle的日志挖掘实现回滚

本文链接: https://lsjlt.com/news/63016.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么利用oracle的日志挖掘实现回滚
    这篇文章主要讲解了“怎么利用oracle的日志挖掘实现回滚”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么利用oracle的日志挖掘实现回滚”吧!&nbs...
    99+
    2024-04-02
  • python-logging)日志怎么实现按日期、大小回滚
    这篇文章主要讲解了“python-logging)日志怎么实现按日期、大小回滚”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python-logging)日志怎么实现按日期、大小回滚”吧!描...
    99+
    2023-06-14
  • 怎么在Spring中利用@Transactional实现事务回滚
    今天就跟大家聊聊有关怎么在Spring中利用@Transactional实现事务回滚,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、使用场景举例在了解@Transactional怎...
    99+
    2023-05-30
    spring transactional
  • springboot怎么利用@Aspect实现日志工具类
    这篇文章主要介绍了springboot怎么利用@Aspect实现日志工具类的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇springboot怎么利用@Aspect实现日志工具类文章都会有所收获,下面我们一起来看...
    99+
    2023-06-29
  • ORACLE PL/SQL 利用自治事务实现日志记录
    程序中通常都要实现日志记录功能,尤其是事务发生报错时的错误日志。如果把日志记录在数据库中,可以方便后续的查询和分析。但是如果直接把记录日志的共能写在事务中,如果事务发生ROLLBACK,记录的日志也会发生R...
    99+
    2024-04-02
  • oracle中怎么实现日志恢复功能
    今天就跟大家聊聊有关oracle中怎么实现日志恢复功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。   1.创建用户 SQL>...
    99+
    2024-04-02
  • linux中怎么利用find命令实现日志定期迁移
    linux中怎么利用find命令实现日志定期迁移,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一,find命令格式find  pathname&nbs...
    99+
    2023-06-13
  • [生产库实战] 如何合理的使用logmnr进行日志挖掘,并对生产库影响最小化
    Oracle Logmnr这个工具怎么用这里就不详细说,可以查看官方文档,网上的文档也一大堆,自己找吧。我这里就直接上干货了。--创建Oracle目录select * from dba_direc...
    99+
    2024-04-02
  • Nginx利用Logrotate实现日志分割的详细过程
    目录前言Logrotate用法1.安装2.基本用法详解2.1 入门2.2 分割文件压缩2.3 按照时间分割2.4 按照文件大小分割2.5 自定义每小时分割2.6 自定义分割执行时间n...
    99+
    2024-04-02
  • 怎么使用C++ cmake实现日志类
    本文小编为大家详细介绍“怎么使用C++ cmake实现日志类”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用C++ cmake实现日志类”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。L...
    99+
    2023-07-05
  • 怎么利用html5和css3实现的3D滚动特效
    本篇内容介绍了“怎么利用html5和css3实现的3D滚动特效”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成...
    99+
    2024-04-02
  • springboot利用@Aspect实现日志工具类的详细代码
    目录一、导包二、在启动类上进行注解自动扫描三、工具类四、结果一、导包 <dependency> <groupId>org.aspectj</g...
    99+
    2024-04-02
  • 如何利用Java技术实现高效的日志记录?
    在现代软件开发中,日志记录是必不可少的一部分。它可以帮助开发人员快速定位错误,并且为系统的运行情况提供有价值的信息。在Java技术中,有很多方式可以实现日志记录。本篇文章将介绍如何利用Java技术实现高效的日志记录。 一、使用Java自带的...
    99+
    2023-09-05
    日志 开发技术 分布式
  • 如何利用 PHP 和 JavaScript 实现高效的日志分析?
    日志分析是一项非常重要的任务,特别是在大型网站中,日志文件往往会非常大。为了快速分析这些日志文件,我们可以利用 PHP 和 JavaScript 来实现高效的日志分析。 在本文中,我们将介绍一些常用的技术和工具,帮助您利用 PHP 和 Ja...
    99+
    2023-07-28
    日志 大数据 javascript
  • vue3怎么利用store实现记录滚动位置
    小编给大家分享一下vue3怎么利用store实现记录滚动位置,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!整体效果在首页列表进行滚动浏览时进入详情页后,切换回首页...
    99+
    2023-06-14
  • Jspxcms中日志组件是怎么实现的
    这篇文章主要为大家展示了Jspxcms中日志组件是怎么实现的,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“Jspxcms中日志组件是怎么实现的”这篇文章吧。日志组件使用的是SLF4J和Logbac...
    99+
    2023-06-26
  • 使用LogAnalyzer怎么实现一个日志系统
    使用LogAnalyzer怎么实现一个日志系统,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、部署LAMP环境1、安装CentOS操作系统,...
    99+
    2024-04-02
  • python怎么实现记录用户登录日志
    本篇内容主要讲解“python怎么实现记录用户登录日志”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python怎么实现记录用户登录日志”吧!任务1、记录用户登录日志import ti...
    99+
    2023-06-29
  • 怎么用Shell+Linux命令实现日志分析
    本篇内容主要讲解“怎么用Shell+Linux命令实现日志分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Shell+Linux命令实现日志分析”吧!一、列出当天访问次数最多的IP命令:...
    99+
    2023-06-09
  • 利用java如何实现获取redis数据库的日志信息
    这篇文章给大家介绍利用java如何实现获取redis数据库的日志信息,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。效果展示如下所示:实时监控redis环境信息和日志列表Redis配置在windows下安装的redis,...
    99+
    2023-05-31
    java redis 日志
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作