用闪回和归档日志可以恢复。
闪回和归档日志就是对数据库进行的备份处理,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闪回表有哪些限制等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)