数据库回滚
时间:2011-12-14
来源:互联网
在做开发时,同事不知道执行了什么脚本,改了开发库中的表结构及数据,不确定到底变了哪些表。现在想恢复到昨天晚上的数据库,但是又没有备份,有没有办法解决,数据库是oracle11g 谢谢。
作者: OhMyGod0512 发布时间: 2011-12-14
友情帮顶,表示关注。
作者: tianshizanghua 发布时间: 2011-12-14
我以前用过的一个方法 你是中午发的贴 。昨天删的 不知道还来得及不 。数据库的开归档才可以。
具体的示例如下:
--利用ORACLE数据库的SCN进行恢复,ORACLE数据库每隔5分钟,系统会产生一个系统时间标记与scn的匹配并存入sys.smon_scn_time表中。
--我们对这个备份机制做如下测试
--查询出来数据
select t.*, t.rowid from account t where id >10000 order by t.id asc;
--删掉数据
delete from account c where c.id >10000;
--查询出ORACLE数据库中的scn与时间的对应关系
select * from sys.smon_scn_time order by time_dp desc;
--根据数据取得删除时间段对应的SCN号,这里是1693760, 查看这个检查点的account表的历史情况
select * from account as of scn 1693760;
-- 将account表复制一个,(这里表的关联关系需要另外处理),命名为account_new 。
create table account_new as select * from account where 1<>1
--将删掉的数据库从这个检查点恢复到新表account_new中。
insert into account_new (select * from account as of scn 1693760);
--查询恢复后的结果。
select * from account_new;
--- 此方法的最佳恢复时间越短越好,如果超过了24个小时,恢复的可能性就很小了。
具体的示例如下:
--利用ORACLE数据库的SCN进行恢复,ORACLE数据库每隔5分钟,系统会产生一个系统时间标记与scn的匹配并存入sys.smon_scn_time表中。
--我们对这个备份机制做如下测试
--查询出来数据
select t.*, t.rowid from account t where id >10000 order by t.id asc;
--删掉数据
delete from account c where c.id >10000;
--查询出ORACLE数据库中的scn与时间的对应关系
select * from sys.smon_scn_time order by time_dp desc;
--根据数据取得删除时间段对应的SCN号,这里是1693760, 查看这个检查点的account表的历史情况
select * from account as of scn 1693760;
-- 将account表复制一个,(这里表的关联关系需要另外处理),命名为account_new 。
create table account_new as select * from account where 1<>1
--将删掉的数据库从这个检查点恢复到新表account_new中。
insert into account_new (select * from account as of scn 1693760);
--查询恢复后的结果。
select * from account_new;
--- 此方法的最佳恢复时间越短越好,如果超过了24个小时,恢复的可能性就很小了。
作者: no9988 发布时间: 2011-12-14
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28