Oracle 删除表数据 找回方法
2017-09-27 23:40
281 查看
Oracle 有个东西要SCN 叫做 system change number 大概就是你对数据库做的任何改变都会 被Oracle 记录下来
很多概念的东西可以去看看 Oracle concept 和官方文档 比如索引 锁 数据块 区 表空间,表连接, 以及 Oracle各个后台进程工作原理 等等(这里推荐看收获不止Oracle 和 Oracle concept )
了解了原理 你才能知道 你编写的一条SQL 前前后后是如何工作的,对系统做出哪些影响,你才能优化SQL
select * from sys.smon_scn_time t order by t.scn # 查询 SCN timestamp
另外 在短时间内对表做出DELETE UPDATE INSERT 操作
Oracle 都是能查找到的 如下 查询最近20分钟 内 对test1 的delete insert update 操作
其中 id name 是属于 test1 表的字段
select * from flashback_transaction_query
查询五分钟前test1 的数据
查询系统scn
select * from sys.smon_scn_time t order by t.scn
select dbms_flashback.get_system_change_number from dual;
scn 与 timestamp 对应转换
select to_char(scn_to_timestamp(20680565),'yyyy-MM-dd hh:mi:ss') from dual
select timestamp_to_scn(sysdate) from dual;
很多概念的东西可以去看看 Oracle concept 和官方文档 比如索引 锁 数据块 区 表空间,表连接, 以及 Oracle各个后台进程工作原理 等等(这里推荐看收获不止Oracle 和 Oracle concept )
了解了原理 你才能知道 你编写的一条SQL 前前后后是如何工作的,对系统做出哪些影响,你才能优化SQL
select * from recyclebin t where t.original_name='TEST1'删除的表因为表名不存在了 所以要去回收站找
flashback table XXX to before drop; #闪回刚删除的表如果drop table test1 其实 Oracle 只是把表放入回收站 能够找回的,但是限于时间 与 undo 表空间大小
flashback table XXX to scn/timestamp [enable trigger]scn 表示 system change number, timestamp 表示时间戳
select * from sys.smon_scn_time t order by t.scn # 查询 SCN timestamp
flashback table XXX to before drop rename to XXXX
另外 在短时间内对表做出DELETE UPDATE INSERT 操作
Oracle 都是能查找到的 如下 查询最近20分钟 内 对test1 的delete insert update 操作
select id,name,VERSIONS_STARTSCN,VERSIONS_ENDSCN,VERSIONS_OPERATION FROM test1 versions between scn timestamp_to_scn(sysdate-20/1440) and scn timestamp_to_scn(sysdate)
其中 id name 是属于 test1 表的字段
select * from flashback_transaction_query
查询五分钟前test1 的数据
select * from test1 as of timestamp sysdate - 5/1400;查询scn 编号 时刻 test1 的数据
select * from test1 as of scn 20682041
查询系统scn
select * from sys.smon_scn_time t order by t.scn
select dbms_flashback.get_system_change_number from dual;
scn 与 timestamp 对应转换
select to_char(scn_to_timestamp(20680565),'yyyy-MM-dd hh:mi:ss') from dual
select timestamp_to_scn(sysdate) from dual;
相关文章推荐
- Oracle找回误删除数据有两种方法
- 使用logmnr方法找回被误删除Oracle的数据的脚本
- 使用logmnr方法找回被误删除Oracle的数据的脚本
- oracle删除表中数据的两种方法
- 高效删除Oracle中重复数据的方法
- oracle删除大表的数据的方法
- 如何找回Oracle中误删除的数据
- oracle中判断某列是否为数字,删除重复数据的方法
- oracle查询重复数据与删除重复记录方法
- 删除重复数据只保存一条--ms sql及oracle实现方法
- oracle 快速删除大批量数据方法(全部删除,条件删除,删除大量重复记录)
- oracle DBF数据文件不小心删除 oracle登录不了解决方法
- oracle数据文件被误操作删除了恢复方法
- 高效删除Oracle中重复数据的方法
- Oracle:高效删除Oracle中重复数据的方法
- ORACLE误删除数据的恢复方法
- Oracle里用delete或者drop命令删除的数据或者表可以通过闪回功能找回数据
- oracle误用操作系统命令删除数据文件的恢复方法
- oracle用sql语句误删除数据后恢复方法
- Oracle 删除了一个表的数据如何重新找回