oralce表数据删除的恢复操作

通常我们操作数据库时可能会对数据库进行了一些错误的操作,做常见的是不小心将表中的数据给删除了或是直接将表给drop了。其实,这些操作后,我们都是可以进行数据恢复的,这里是我进行了一些实验,简单的恢复操作。
1、如果我们将表给删了怎么办?
在这里我们做一个实验
新建一张表t_user
create table t_user(
username varchar2(20) primary key,
age varchar2(10)
)
插入两条数据:
insert into t_user values('zzzz','1');
insert into t_user values('xxxx','2');
查看一下:
select * from t_user;
结果是:
zzzz 1 XX U
xxxx 2 XX U
我们继续操作
drop table t_user;
这事再去查询数据库时,没有了t_user这张表了。
但是我们想恢复这张表怎么办呢?
我们可以利用闪回,命令是这样的
flashback table t_user to before drop;
ok,再去查询一下t_user表,这个表以及表中的数据又存在了。
2、我们最常见的是删除了表中的数据,也就是truncate或是delete操作。
这是我们需要将闪回到删除之前的数据库看看
命令是:
(1)select * from t_user as of timestamp sysdate - 5/1440;
(2)select * from t_user as of timestamp(systimestamp-interval '1' minute);
这里的时间参数我们是可以设置的
在这里我们就可以看到我们删除数据之前的表的数据,接下来的操作就很简单了,我们就在上述命令前直接加上:insert into t_user就Ok了。

这些都是闪回能给我们带来的帮助,但是
注意:如果需要闪回一个表,需要以下条件:
·需要有flashback any table的系统权限或者是该表的flashback对象权限;
·需要有该表的select,insert,delete,alter权限;
·必须保证该表row movement。

[color=red]如果希望能闪回数据库,需要设置如下参数:[/color]DB_RECOVER_FILE_DEST --日志的存放位置,
DB_RECOVER_FILE_DEST_SIZ --E恢复区的大小
[color=red]在创建数据库的时候,Oracle将自动创建恢复区,但默认是关闭的,需要执行alter database flashback on命令。[/color]

执行Flashback Database命令格式:
SQL>flashback database to time to_timestamp(xxx);

SQL>flashback database to scn xxx



数据库的闪回状态可以从V$database视图中查询得到:

SQL> select dbid,name,flashback_on,current_scn from v$database;

DBID NAME FLASHBACK_ON CURRENT_SCN

---------- --------- ------------------ -----------

1692001961 ACF NO 8175168
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值