Oracle表数据误删恢复
来源:互联网 发布:vba 网页数据抓取 编辑:程序博客网 时间:2024/06/07 16:20
问题描述
Oracle 11g数据库,在一次更新过程中,对某张表数据进行了错误的dml删除、update操作,现希望回退回更新之前的记录。
解决过程
1、查看SCN
使用管理员账户(system, sys)登陆数据库,然后执行如下SQL,获取系统变更序号。
select * from flashback_transaction_query where table_name='THE_TABLE_NAME';
查询结果如下:
其中,根据上图中的Start_Timestamp,可定位到本次dml更改之前的最近一次的scn。当事务提交后,数据库会自动创建scn,即Commit_SCN及时间戳字段。
如果之前是执行的DML语句,undo_sql为自动生成回滚SQL;本例中因为是手动update一条记录,系统未给出回滚SQL。
2、根据SCN号还原表中原来的记录
select * from "THE_TABLE_NAME" as of scn 6033676601003where ...
该表在scn时的记录可通过如上语句查询到。
然后再通过相应的 dml sql语句对当前的最新表数据进行还原即可。
延伸阅读
1、什么是SCN
SCN(System Change Number),SCN是顺序递增的一个数字,在Oracle 中用来标识数据库的每一次改动,及其先后顺序。一种常见的SCN是,当用户执行事务提交(commit)时,系统则将当前SCN赋给该事务。
2、一般用法
查看系统当前SCN:
select dbms_flashback.get_system_change_number from dual;
通过ora_rowscn,可得到table表的每一条记录对应的SCN:
select ora_rowscn, t.* from my_table t;
通过timestamp_to_scn(),将timestamp转换为scn;
通过scn_to_timestamp(),将scn转换为timestamp。
0 0
- Oracle表数据误删恢复
- oracle表数据误删恢复
- oracle恢复误删数据
- oracle恢复误删数据
- oracle 误删数据恢复
- oracle恢复误删数据
- oracle误删数据恢复
- oracle数据误删恢复
- ORACLE误删数据恢复
- oracle误删数据恢复
- oracle数据误删恢复
- Oracle误删数据恢复
- Oracle 恢复误删数据
- oracle 误删数据恢复
- ORACLE表数据恢复
- oracle表数据恢复
- oracle 表数据恢复
- oracle 恢复表数据
- cmake使用示例与整理总结
- iOS网络篇---使用NSSession 实现获取XML
- [LeetCode] Jump Game II
- A Magic Lamp(RMQ)
- 北大百炼1004 Financial Management 题解
- Oracle表数据误删恢复
- 用c实现的简单linux shell
- JS练习:Dom节点的CRUD操作
- java中的多线程
- 贝叶斯分类(java)
- 菜鸟装机问题解决
- Ubuntu下SSH设置
- JDK自带VM分析工具jps|jstat|jmap|jconsole使用
- Android-webview加载有道词典