在日常的数据库开发过程汇总难免会出现一些误删除的动作, 对于一些误删的操作我们可以通过oracle提供的闪回机制恢复误删数据, 从而避免出现较大的生产事故. 下面是本人平时工作中积累的一些常用的操作,非常简单实用,分享给大家. 恢复dml误删的数据: select * from 误删除的表名 as of timestamp(systimestamp-interval '10' minute);--此处的10代表10分钟前表中的数据,可以根据实际情况进行查询 恢复drop掉的存储过程.函数.包等
我们有个系统使用了Oracle flashback data archive闪回数据归档特性来作为基于时间点的恢复机制,在频繁插入.更新期间发现SYS_FBA_HIST_NNNN表中的XID被两个事务重用了,导致start_scn相同,于是在执行as of scn/timestamp查询的时候,相同rowid的记录会出来两条,无论是oracle 11.2.0.4还是oracle 18c都能重现,前者几乎100%,后者概率低很多(一开始LZ本地用18c跑了连续四五次都没有出现,以为解决了,后来测试
-------------------------与其他数据库相比,Oracle的闪回让开发者多了一条选择的路. Flashback的目的 先看下Oracle官方文档中的解释: Oracle Flashback Technology is a group of Oracle Database features that that let you view past states of database objects or to return database objects to a prev
create or replace package body cuttoship_lots is procedure prod_run(p_w_day date) as begin delete cuttoship_lot; commit; prod_erp(p_w_day); prod_szbgerp(p_w_day); prod_shs(p_w_day); prod_subedit; prod_ins_rpt; prod_update_0; end; procedure prod_erp(p
oracle默认不启动闪回数据库 如果需要启动闪回数据库,数据库需要设置为归档模式,并启用恢复区. 1.查看是否启动闪回删除 SQL> show parameter recyclebin; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ recyclebin string on 启动闪回 2.测试闪回删除的表: 创建两个一样的表,然后都删除,进行恢复.
一.多表更新 比如线上有个系统由于某一个模块出现异常,导致系统整体的数据出现了错误,需要你手动改写数据库错误,Oracle update语句更新的值来自另一张表 update语法最基本的格式为 UPDATE TABLE_NAME SET COLUMN1 = VALUE1 WHERE COLUMN2 = VALUE2 下面首先来创建两张表,令表名为GF_CONS_TRAN_TEST AS A -- ---------------------------- -- Table structure f