如果是 Oracle , 那么还有可能, 使用 Flashback Query 恢复得回来。
其他数据库, 就不大清楚了。
下面是一个 Oracle 恢复的例子:
SQL> CREATE TABLE test_fb_table (
2 ID int,
3 VAL VARCHAR2(10)
4 );
Table created
SQL> INSERT INTO test_fb_table VALUES (1, 'TEST');
1 row created
SQL> commit;
Commit complete
假如 数据被错误的删除/更新
需要检索某个时间点上,表原有的数据。
SQL> SELECT TO_CHAR(sysdate, 'yyyy-mm-dd hh24:mi:ss') FROM dual;
TO_CHAR(SYSDATE,'YYYY-MM-DDHH24:MI:SS'
--------------------------------------
2010-11-07 13:01:37
这里删除掉数据。
SQL> delete from test_fb_table;
1 row deleted
SQL> commit;
Commit complete
确认数据已经被删除。
SQL> select from test_fb_table;
no rows selected
方法一:
这里检索出,指定时间点上,指定表的数据情况。
SQL> select from test_fb_table
2 AS OF TIMESTAMP TO_TIMESTAMP('2010-11-07 13:01:37',
3 'yyyy-mm-dd hh24:mi:ss');
ID VAL
---------- --------------------
1 TEST
方法二:
使用 dbms_flashback下面的方法来切换。
SQL> conn system
Enter password:
Connected
SQL> select from hrtest_fb_table;
no rows selected
SQL> execute dbms_flashbackenable_at_time(-
> TO_TIMESTAMP('2010-11-07 13:01:37','yyyy-mm-dd hh24:mi:ss'));
PL/SQL procedure successfully completed
SQL> select from hrtest_fb_table;
ID VAL
---------- --------------------
1 TEST
SQL> execute dbms_flashbackdisable;
PL/SQL procedure successfully completed
SQL> select from hrtest_fb_table;
no rows selected
先看看你的更新是怎麼更新的,是不是可以再直接update 回去。
如果不能直接update 恢复,就要看有没有备份资料,如有备份是不是可以恢复到测试数据库再将资料导回正式数据库
如果此表的数据有经常变化的,测试资料的数据也不全,就要看你的数据库有没有选中truncate log on checkpoint 选项,如果没有勾选,则可以将日志备份下来,在测试库进行恢复,先恢复前一个完整备份,再恢复日志备份,恢复日志备份时指定恢复的时间点。
ORACLE
有备份的话 可以恢复
如果只是删除 了表里的数据的话
select from syssmon_scn_time;
--scn 与时间的对应关系
每隔5分钟,系统产生一次系统时间标记与scn的匹配并存入syssmon_scn_time表。
select from student as of scn 592258
就可以看到在这个检查点的表的历史情况。
然后我们恢复到这个检查点
insert into student select from student as of scn 592258 where id not in (select id from student)
select from v$transaction ---没有提交的事务。
select from flashback_transaction_query; ---回滚事务。 他有一列是 undo_sql 得到他就可以回滚刚才提交的事务。
select from FLASHBACK_TRANSACTION_QUERY a
where astart_timestamp between to_date('2008-12-7 14:40:56','yyyy-MM-dd HH24:mi:ss') and
to_date('2008-12-7 14:59:56','yyyy-MM-dd HH24:mi:ss');
不论是insert delete update 都可以把committ 了的事务给回滚了
以上就是关于sql没有备份文件 如何回滚数据库前天在数据库执行了删除 *** 作后,如何回滚数据,没有备份文件的全部的内容,包括:sql没有备份文件 如何回滚数据库前天在数据库执行了删除 *** 作后,如何回滚数据,没有备份文件的、sybase数据库如何回滚到某一时间,在线跪求!!!!、如果数据库的数据被你不小心删了 怎样恢复啊等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)