sql server TRUNCATE TABLE 的数据能恢复吗

sql server TRUNCATE TABLE 的数据能恢复吗,第1张

闪回和归档日志可以恢复。

闪回和归档日志就是对数据库进行的备份处理,truncate table后只是对当前数据库的表 *** 作,而不影响闪回文件和归档日志,当然可以恢复。

不要说truncate table,数据库没了应该都可以恢复,

只要找到一个全库备份和之后的增量备份即可。

SQL>select current_scn from v$database; //查看数据scn

SQL>alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

SQL>select sysdate from dual;

SQL>select from table1 as of scn xxxx;

SQL>select from table1 as of timestamp '2009-02-08 14:12:23'

一:表的恢复

对误删的表,只要没有使用PURGE永久删除选项,那么从flash back区恢复回来希望是挺大的。一般步骤有:

1、从flash back里查询被删除的表

select from recyclebin

2执行表的恢复

flashback table tb to before drop,这里的tb代表你要恢复的表的名称。

二:表数据恢复

对误删的表记录,只要没有truncate语句,就可以根据事务的提交时间进行选择恢复,一般步骤有:

1、先从flashback_transaction_query视图里查询,视图提供了供查询用的表名称、事务提交时间、UNDO_SQL等字段。

如:select from flashback_transaction_query where

table_name='TEST';

2、执行表记录恢复

一般先根据时间进行查询,查询语句模式为select from tb as of timestamp

to_timestamp(time,'yyyy-mm-dd hh24:mi:ss'); tb指表名称,time指某个时间点

如select from scotttest as of timestamp to_timestamp('2009-12-11

20:53:57','yyyy-mm-dd hh24:mi:ss');

若有数据,恢复极为简单了,语句为flashback table tb to timestamp

to_timestamp(time,'yyyy-mm-dd hh24:mi:ss');

如flashback table scotttest to timestamp to_timestamp('2009-12-11

20:47:30','yyyy-mm-dd hh24:mi:ss');

注意:alter table testvarchar enable row movement;

这个命令的作用是,允许Oracle 修改分配给行的rowid。在Oracle

中,插入一行时就会为它分配一个rowid,而且这一行永远拥有这个rowid。闪回表处理会对EMP

完成DELETE,并且重新插入行,这样就会为这些行分配一个新的rowid。要支持闪回就必须允许Oracle 执行这个 *** 作

用百度能搜大把出来吧。。。。

使用的限制和注意事项:

1 使用闪回表语句恢复表到出现人为或应用错误事件之前的状态。

2 可以闪回到过去多长时间取决于系统中undo数据量的大小。

3 并且oracle数据库无法恢复通过DDL语句修改了结构的表。

4oracle强烈建议设置UNDO_MANAGEMENT为AUTO(自动管理回滚数据)。另外,设置UNDO_RETENTION (回滚数据的保留时间)为一个合适的时间间隔。

5你不能回滚flash back语句,然而你可以使用另外一个flash back语句并且指定一个当前时间之前的时间点。在声明一个flash back语句之前先记录下当前的SCN号。

另外如果要使用闪回表

1 我们需要有在指定表上有flashback的权限或者FLASHBACK ANYTABLE权限才能闪回一个表到之前的时间点;

2必须有对表的SELECT, INSERT, DELETE, andALTER object privileges一系列权限;

3除非是使用TO BEFORE DROP,对于分区表的闪回都应该开启Row movement (alter table test_move enable row movement;)

一般用于分区表,某一行更新时,如果更新的是分区列,并且更新后的列值不属于原来的这个分区,如果开启了这个选项,就会把这行从这个分区中delete 掉,并加到更新后所属的分区。相当于一个隐式的delete+insert,但是不会触发insert/delete触发器。如果没有开启这个选项,就会在更新时报错。

4恢复一个表到一个还原点,必须拥有SELECT ANY DICTIONARY orFLASHBACKANY TABLE system privilege or theSELECT_CATALOG_ROLE role。

以上就是关于sql server TRUNCATE TABLE 的数据能恢复吗全部的内容,包括:sql server TRUNCATE TABLE 的数据能恢复吗、oracle数据库误 *** 作把表删除了,怎样恢复、高手指点oracle闪回表有哪些限制等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10184354.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存