Flashback Table的一个案例

 

SQL> conn sys/sysadmin@keymen as sysdba;
已连接。
SQL> create table mytest as select * from hr.departments;

表已创建。

SQL> select count(*) from mytest;

  COUNT(*)
----------
        27

SQL> select current_scn from v$database;

CURRENT_SCN
-----------
     825726

SQL>

SQL> insert into mytest
  2  select * from hr.departments;

已创建27行。

SQL> select count(*) from mytest;

  COUNT(*)
----------
        54

SQL> commit;

提交完成。

SQL> select count(*) from mytest;

  COUNT(*)
----------
        54

SQL> select current_scn from v$database;

CURRENT_SCN
-----------
     825777

SQL>

SQL> flashback table mytest to scn 825726;
flashback table mytest to scn 825726
                *
第 1 行出现错误:
ORA-08185: 用户 SYS 不支持闪回


SQL>

*************************************************************************************************************************

 当某一个用户执行FLASHBACK TABLE时,给予SCN号进行闪回操作时,出项“ORA-08189: 因为未启用行移动功能, 不能闪回表”错误的解决
方法:


SQL> flashback table mytest to scn 825855;
flashback table mytest to scn 825855
                *
第 1 行出现错误:
ORA-08189: 因为未启用行移动功能, 不能闪回表


SQL>
*************************************************************************************************************************
SQL> conn hr/hr@keymen;
已连接。
SQL> create table mytest as select * from hr.departments;

表已创建。

SQL> select count(*) from mytest;

  COUNT(*)
----------
        27

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


SQL> insert into mytest
  2  select * from hr.departments;

已创建27行。

SQL> select count(*) from mytest;

  COUNT(*)
----------
        54

SQL> commit;

提交完成。

SQL> select count(*) from mytest;

  COUNT(*)
----------
        54

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


SQL> flashback table mytest to scn 825855;
flashback table mytest to scn 825855
                *
第 1 行出现错误:
ORA-08189: 因为未启用行移动功能, 不能闪回表


SQL>


************************************************************************************************************************
问题解决如下:

alter table mytest enable row movement;

************************************************************************************************************************
SQL> create table mytest as select * from hr.departments;

表已创建。

SQL> alter table mytest enable row movement;

表已更改。

SQL> select count(*) from mytest;

  COUNT(*)
----------
        27

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


SQL> insert into mytest
  2  select * from hr.departments;

已创建27行。

SQL> select count(*) from mytest;

  COUNT(*)
----------
        54

SQL> commit;

提交完成。

SQL> select count(*) from mytest;

  COUNT(*)
----------
        54

SQL> flashback table mytest to scn 826108;

闪回完成。

SQL> select count(*) from mytest;

  COUNT(*)
----------
        27

SQL>

发现已经将后来插入的数据去掉了,数据表中又仅仅有27行数据,OK!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值