ITPub博客

首页 > 数据库 > Oracle > 闪回冲突怎么办?

闪回冲突怎么办?

原创 Oracle 作者:xuexiaogang 时间:2023-09-12 21:03:59 0 删除 编辑

   从Oracle10开始就有闪回,这个功能多次起到力挽狂澜的作用。比如

有两个表,分别是sh1和sh2。

             

          SQL> create table sh1 (a int,b int);

表已创建。

          SQL> create table sh2 (a int,b int);

表已创建。


====================


         分别向两个表中写入数据:

SQL> insert into sh1 values (1,1);

已创建 1 行。

SQL> insert into sh1 values (2,2);

已创建 1 行。

SQL> insert into sh2 values (3,3);

已创建 1 行。

SQL> commit;

提交完成。


++++++++

此时 sh1中有2行数据,sh2中有1行数据。


SQL> select * from sh1;

A B
---------- ----------
1 1
2 2

SQL> select * from sh2;

A B
---------- ----------
3 3


+++++++++++++++++++++++++==

传统的误删除表后,执行闪回sh2表的数据被找回来了。

SQL> drop table sh2;

表已删除。

SQL> select * from sh2;
select * from sh2
*
第 1 行出现错误:
ORA-00942: 表或视图不存在


SQL> flashback table sh2 to before drop;

闪回完成。

SQL> select * from sh2;

A B
---------- ----------
3 3

+=============================

而如果被drop的表,重新建立了。那么在执行闪回时候就出错了。

SQL> drop table sh1;

表已删除。

SQL> create table sh1 (a int,b int);

表已创建。

SQL> insert into sh1 values (3,3);

已创建 1 行。

SQL> commit;

提交完成。

SQL> flashback table sh1 to before drop;
flashback table sh1 to before drop
*
第 1 行出现错误:
ORA-38312: 原始名称已被现有对象使用


遇到这个问题有如下解决方案。

方案1:把新建的sh1改个名字,改成sh3.再闪回sh1.



方案2:假设原始表是sh4,误删除以后。新建立了sh4,还写入了数据。那么闪回时候兼带改名字,一气呵成。

SQL> create table sh4 (a int,b int);

表已创建。

SQL> insert into sh4 values (1,1);

已创建 1 行。

SQL> commit;

提交完成。

SQL> drop table sh4;

表已删除。


SQL> create table sh4 (a int,b int);

表已创建。

SQL> insert into sh4 values (2,2);

已创建 1 行。

SQL> commit;

提交完成。

SQL> flashback table sh4 to before drop rename to sh5;

闪回完成。

SQL> select * from sh4;

A B
---------- ----------
2 2

SQL> select * from sh5;

A B
---------- ----------
1 1

方案2也是最近才在实际中用过。




来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/637517/viewspace-2982797/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
OracleACE/PostgreSQLACE/阿里云MVP/腾讯云TVP/墨天轮 MVP/TiDBMVA/数盟会华东区长老/OpenTenBase社区委和技术委委员/架构师技术同盟名人堂成员上海地区理事会成员/if社区联合发起人/《DBA实战手记》作者/公众号:四海内皆兄弟

注册时间:2013-07-01

  • 博文量
    422
  • 访问量
    953338