Flashback TABLE 实验

sys用户

1、简单删除

SQL> flashbacktable scott.emp to before drop;

闪回完成。

SQL> selectindex_name from dba_indexes where table_name='TMP';

未选定行

SQL> selectindex_name from dba_indexes where table_name='EMP';

INDEX_NAME

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

BIN$cDoUigC2TnW6+9HHGhBJ8A==$0

SQL> alter index"BIN$cDoUigC2TnW6+9HHGhBJ8A==$0" rename to PK_EMP;

alter index"BIN$cDoUigC2TnW6+9HHGhBJ8A==$0" rename to PK_EMP

*

第 1 行出现错误:

ORA-01418: 指定的索引不存在

SQL> alter index"BIN$cDoUigC2TnW6+9HHGhBJ8A==$0" rename to scott.PK_EMP;

alter index"BIN$cDoUigC2TnW6+9HHGhBJ8A==$0" rename to scott.PK_EMP

                                                           *

第 1 行出现错误:

ORA-14047: ALTERTABLE|INDEX RENAME 不能与其它分区组合

SQL> alter indexscott."BIN$cDoUigC2TnW6+9HHGhBJ8A==$0" rename to PK_EMP;

索引已更改。

SQL> selectindex_name from dba_indexes where table_name='EMP';

INDEX_NAME

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

PK_EMP

SQL> selectconstraint_name from dba_constraints where table_name='EMP';

CONSTRAINT_NAME

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

BIN$vsV+9Qu+Rl2UYarsjC4irw==$1

SQL> alter tablescott.emp  rename  constraint"BIN$vsV+9Qu+Rl2UYarsjC4irw==$1" to PK_EMP;

表已更改。

SQL> selectconstraint_name from dba_constraints where table_name='EMP';

CONSTRAINT_NAME

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

PK_EMP

SQL>

2、恢复时有同名表

SQL> create tablescott.tmp as select *  fromscott.flash_tbl;

表已创建。

SQL> drop tablescott.tmp;

表已删除。

SQL> create tablescott.tmp as select *  fromscott.flash_tbl;

表已创建。

SQL> flashbacktable scott.tmp to before drop;

flashback tablescott.tmp to before drop

*

第 1 行出现错误:

ORA-38312:原始名称已被现有对象使用

SQL> flashbacktable scott.tmp to before drop rename to temp1;

闪回完成。

SQL> select *  from scott.temp1;

        ID VL

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

       201 A1

       202 B1

         7 PK_DEPT

         8 PK_DEPT

         9 PK_DEPT

        10 DEPT

        11 DEPT

        12 DEPT

        13 DEPT

        14 DEPT

        15 DEPT

        ID VL

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

       116 DEPT

       117 DEPT

       118 DEPT

       119 EMP

已选择15行。

SQL>

3、从多次删除同名表中恢复

SQL> drop tablescott.tmp;

表已删除。

SQL> create tablescott.tmp as select *  fromscott.flash_tbl;

表已创建。

SQL> drop tablescott.tmp;

表已删除。

SQL> create tablescott.tmp as select *  fromscott.flash_tbl;

表已创建。

SQL> drop tablescott.tmp;

表已删除。

SQL> selectobject_name,original_name,droptime from recyclebin;

未选定行

SQL> selectobject_name,original_name,droptime from dba.recyclebin;

selectobject_name,original_name,droptime from dba.recyclebin

                                                  *

第 1 行出现错误:

ORA-00942: 表或视图不存在

SQL> selectobject_name,original_name,droptime from dba_recyclebin;

OBJECT_NAME                    ORIGINAL_NAME                    DROPTIME

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

BIN$BoxixBy1TjW4YdBiedbp1g==$0TMP                             2011-07-29:23:50:46

BIN$AGeJA2WUQ42CTQLo5Nk7Ag==$0TMP                             2011-07-29:23:50:19

BIN$1d7kqYtrRSK8IZuFVL1c2g==$0TMP                             2011-07-29:23:50:42

BIN$/rDcN3ndTh2ngTVC+R1W/g==$0TMP                             2011-07-29:23:50:49

SQL> flashbacktable tmp to before drop;

flashback table tmpto before drop

*

第 1 行出现错误:

ORA-38305: 对象不在回收站中

SQL> flashbacktable scott.tmp to before drop;

闪回完成。

SQL> selectobject_name,original_name,droptime from dba_recyclebin;

OBJECT_NAME                    ORIGINAL_NAME                    DROPTIME

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

BIN$BoxixBy1TjW4YdBiedbp1g==$0TMP                             2011-07-29:23:50:46

BIN$AGeJA2WUQ42CTQLo5Nk7Ag==$0TMP                             2011-07-29:23:50:19

BIN$1d7kqYtrRSK8IZuFVL1c2g==$0TMP                             2011-07-29:23:50:42

SQL> flashbacktable scott.tmp to before drop;

flashback tablescott.tmp to before drop

*

第 1 行出现错误:

ORA-38312:原始名称已被现有对象使用

SQL> flashbacktable scott.tmp to before drop rename to tmp1;

闪回完成。

SQL> selectobject_name,original_name,droptime from dba_recyclebin;

OBJECT_NAME                    ORIGINAL_NAME                    DROPTIME

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

BIN$AGeJA2WUQ42CTQLo5Nk7Ag==$0TMP                             2011-07-29:23:50:19

BIN$1d7kqYtrRSK8IZuFVL1c2g==$0TMP                             2011-07-29:23:50:42

SQL> drop tablescott.tmp

  2  ;

表已删除。

SQL> selectobject_name,original_name,droptime from dba_recyclebin;

OBJECT_NAME                    ORIGINAL_NAME                    DROPTIME

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

BIN$AGeJA2WUQ42CTQLo5Nk7Ag==$0TMP                             2011-07-29:23:50:19

BIN$1d7kqYtrRSK8IZuFVL1c2g==$0TMP                             2011-07-29:23:50:42

BIN$Sz887iS9TzOJtQIDh1YiIw==$0 TMP                             2011-07-29:23:56:06

SQL> flashbacktable scott.tmp to before drop;

闪回完成。

SQL> selectobject_name,original_name,droptime from dba_recyclebin;

OBJECT_NAME                    ORIGINAL_NAME                    DROPTIME

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

BIN$AGeJA2WUQ42CTQLo5Nk7Ag==$0TMP                             2011-07-29:23:50:19

BIN$1d7kqYtrRSK8IZuFVL1c2g==$0TMP                             2011-07-29:23:50:42

SQL>

===========》刚删除的被最先恢复

可以指定恢复

SQL> flashbacktable scott."BIN$AGeJA2WUQ42CTQLo5Nk7Ag==$0" to before drop rename totmp2;

闪回完成。

SQL> selectobject_name,original_name,droptime from dba_recyclebin;

OBJECT_NAME                    ORIGINAL_NAME                    DROPTIME

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

BIN$1d7kqYtrRSK8IZuFVL1c2g==$0TMP                             2011-07-29:23:50:42

SQL>

4、从undo表空间中直接恢复误操作

SQL> selectdbms_flashback.get_system_change_number from dual;

GET_SYSTEM_CHANGE_NUMBER

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

                 1023083

SQL> updatescott.flash_tbl set id=id+10 where id>10;

已更新11行。

SQL> insert intoscott.flash_tbl values(21,'z');

已创建 1 行。

SQL> commit;

提交完成。

SQL> select * fromscott.flash_tbl;

        ID VL

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

       211 A1

       212 B1

        21 z

         7 PK_DEPT

         8 PK_DEPT

         9 PK_DEPT

        10 DEPT

        21 DEPT

        22 DEPT

        23 DEPT

        24 DEPT

        ID VL

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

        25 DEPT

       126 DEPT

       127 DEPT

       128 DEPT

       129 EMP

已选择16行。

SQL> select *  from scott.flash_tbl as of scn  1023083;

        ID VL

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

       201 A1

       202 B1

         7 PK_DEPT

         8 PK_DEPT

         9 PK_DEPT

        10 DEPT

        11 DEPT

        12 DEPT

        13 DEPT

        14 DEPT

        15 DEPT

        ID VL

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

       116 DEPT

       117 DEPT

       118 DEPT

       119 EMP

已选择15行。

SQL> flashbacktable scott.flash_tbl to scn  1023083;

flashback tablescott.flash_tbl to scn  1023083

                      *

第 1 行出现错误:

ORA-08189:因为未启用行移动功能, 不能闪回表

SQL> selectrow_movement from dba_tables where table_name='A';

ROW_MOVE

--------

DISABLED

SQL> alter table scott.flash_tbl enable row movement;===》要启动行移动的功能

表已更改。

SQL> flashbacktable scott.flash_tbl to scn  1023083;

闪回完成。

SQL> select * fromscott.flash_tbl;

        ID VL

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

       201 A1

       202 B1

         7 PK_DEPT

         8 PK_DEPT

         9 PK_DEPT

        10 DEPT

        11 DEPT

        12 DEPT

        13 DEPT

        14 DEPT

        15 DEPT

        ID VL

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

       116 DEPT

       117 DEPT

       118 DEPT

       119 EMP

已选择15行。

SQL> alter table scott.tmp disable row movement;

表已更改。

SQL>

不能对sys用户下的表使用flashback

SQL> conn sys/ymhas sysdba;

已连接。

SQL> showparameter recyclebin

NAME                                 TYPE        VALUE

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

recyclebin                           string      ON

SQL> create tabletmp(id int);

表已创建。

SQL> drop tabletmp;

表已删除。

SQL> select *  from recyclebin ;

未选定行

SQL> select *  from user_recyclebin ;

未选定行

SQL> select *  from dba_recyclebin ;

OWNER                          OBJECT_NAME                    ORIGINAL_NAME

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

SCOTT                         BIN$3lUPDEw+RA+mIB2+Ot6WsQ==$0 TMP

SCOTT                         BIN$1d7kqYtrRSK8IZuFVL1c2g==$0 TMP

SCOTT                         BIN$7i2IgZdhSG+IWz5bDB+nZA==$0 YMH

SQL> flashbacktable tmp to before drop;

flashback table tmpto before drop

*

第 1 行出现错误:

ORA-38305: 对象不在回收站中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值