1. 授予行迁移权限 alter table table_name enable row movement; 2. 到15分钟前: flashback table order   to timestamp systimestamp - interval '15' minute; 到某个时间点: FLASHBACK TABLE order TO TIMESTAMP    TO_TIMESTAMP('2017-06-12 01:15:25 PM','YYYY-MM-DD HH:MI:SS AM')…
我们有个系统使用了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 Technologies - 估算不同时间段闪回日志的产生量 v$flashback_database_stat监控闪回数据的i/o开销的统计信息,根据之前的系统负载估算闪回空间需求.时间间隔是一小时. SQL> select * from v$flashback_database_stat order by begin_time; BEGIN_TIM END_TIME FLASHBACK_DATA DB_DATA REDO_DATA ESTIMATED_FLA…
oracle的闪回很早就出来了,准确的说一直以来应该都较少被真正用户广为使用,除了dba和极少部分开发人员偶尔用于逻辑出错.误删恢复之外,较少被用于产生更有价值的用途. 各种闪回表flashback table.flashback query.flashback transaction都有一定的适用场景,但是他们称不上和其他特性比如分区.并行那么自然和普遍适用性,同时数据存储在撤销表空间,而撤销表空间的性能对系统影响极大,大量的undo保留着会使得更多的顺序读变成随机读.直到oracle 11g…
误删除了部分重要数据,已提交,需要恢复.首先尝试flashback query闪回数据. 数据库运行在归档模式,首先确认数据库的SCN的变化: SQL> col fscn for 999999999999999999999SQL> col nscn for 999999999999999999999SQL> select name,first_change# fscn,next_change# nscn, first_time from v$archived_log; NAME     …
MySQL误操作删除后,怎么恢复数据?登陆查数据库mysql> select * from abc.stad;+----+-----------+| id | name |+----+-----------+| 1 | abc1 || 2 | abc2 |+----+-----------+ 0点全量备份[root@M ~]# mkdir /opt/backup[root@M ~]# mysqldump -uroot -p123456 -F -B --master-data=2 abc|gzip…
今天操作Oracle数据库时,做一个Update数据时,不小心少写了个where,看这粗心大意的. 于是乎,把所有的员工工号都给更新成一个同一个工号了.这是一个悲催的故事. 因为工号是Check了好多次才存入数据库,工号是唯一性的啊~~ 不过,好在更新过后意识到这一点了.于是乎,先停止操作数据库.想想数据库Commit过后的数据可以回退不!在网上搜索了一下.发现Oracle有“闪回”的功能.具体“闪回”的概念,可以参见百度百科. 如果多次commit数据后,那可不可以闪回呢?貌似不可以.闪回只能…
由于一时的粗心,在做update操作时,忘记了加where条件,导致全表数据被修改.此类错误实属不该!!特此记录一下!! 网上搜索Oracle数据回退操作,介绍如下: 闪回级别 闪回场景 闪回技术 对象依赖 影响数据 数据库 表截断.逻辑错误.其他多表意外事件 闪回DATABASE 闪回日志.undo 是 DROP 删除表 闪回DROP 回收站(recyclebin) 是 表 更新.删除.插入记录 闪回TABLE 还原数据,undo 是 查询 当前数据和历史数据对比 闪回QUERY 还原数据,u…
利用binlog日志恢复数据库误操作数据 在人工手动进行一些数据库写操作的时候(比方说数据修改),尤其是一些不可控的批量更新或删除,通常都建议备份后操作.不过不怕万一,就怕一万,有备无患总是好的.在线上或者测试环境误操作导致数据被删除或者更新后,想要恢复,一般有两种方法. 方法一.利用最近的全量备份+增量binlog备份,恢复到误操作之前的状态,但是随着数据量的增大,binlog的增多,恢复起来很费时.方法二.如果binlog的格式为row,那么就可以将binlog解析出来生成反向的原始SQL…
1.问:用JDBC访问ORACLE数据库,做DELETE操作,能用JAVA多线程实现吗? ORACLE服务器要怎么配?(以下答案来自网络,仅供参考) 答: Oracle有自己的锁机制.就算你开100条线,它还是一条一条删除.不能同时删除多项的.     对于大量数据更新,Oracle有建议一些优化措施.     (1) 首先是把auto-commit给关闭.因为你每删一条数据,oracle就要自动执行一次commit.commit是需要资源的.所以如果你手动设置为每删数据1000条,执行一次co…