怎么利用oracle的日志挖掘实现回滚
发表于:2024-11-21 作者:千家信息网编辑
千家信息网最后更新 2024年11月21日,这篇文章主要讲解了"怎么利用oracle的日志挖掘实现回滚",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么利用oracle的日志挖掘实现回滚"吧!a
千家信息网最后更新 2024年11月21日怎么利用oracle的日志挖掘实现回滚
这篇文章主要讲解了"怎么利用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>begindbms_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, xidFROM 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.js和django,就可以把上面这个功能做成web界面形式的。
10、记得最后用完了关闭日志挖掘功能
SQL>begindbms_logmnr.end_logmnr;end;/PL/SQL procedure successfully completed.
感谢各位的阅读,以上就是"怎么利用oracle的日志挖掘实现回滚"的内容了,经过本文的学习后,相信大家对怎么利用oracle的日志挖掘实现回滚这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
日志
功能
数据
时间
语句
支持
内容
备份
数据库
学习
就是
视图
测试
原始
很大
最小
遗憾
两个
字典
完了
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
长沙美泉软件开发有限公司
奥的斯扶梯如何用服务器查看故障
滨州市歪范网络技术有限公司
服务器开发端口
数据库简述角色及其分类
ibm服务器安装教程
网络安全公益广告征集活动
皇蓝网络技术有限公司
shell使用数据库
下面什么是流行数据库技术
数据库运维审计方案
广州推广机器人rpa软件开发
不会数据库好丢脸
开化天气预报软件开发
软件开发相关的小论文
创意视频关于网络安全
深信服数据库审计用的哪家的产品
南充网络技术质量
怎样查找服务器的型号
游侠服务器在哪里
长沙美泉软件开发有限公司
ZMUD下载软件开发
服务器主板常见问题
绿色软件开发流程
网络安全技术实训平台
国内网络安全保卫发
股票配资 软件开发
软件开发风险减缓措施
北京猴岛软件开发
九龙坡区技术软件开发服务标志