闪回drop恢复表后sql运行计划异常

Posted llguanli

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了闪回drop恢复表后sql运行计划异常相关的知识,希望对你有一定的参考价值。



-----正常运行计划
set autotrace traceonly
set linesize 1000

select /*+index(t idx_object_id)*/ * from t where object_id=19;
Execution Plan
----------------------------------------------------------
Plan hash value: 2041828949
---------------------------------------------------------------------------------------------
| Id  | Operation                   | Name          | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT              |                               |     1 |         207 |     2   (0)| 00:00:01 |
|   1 |  TABLE ACCESS BY INDEX ROWID| T             |     1     |   207 |           2   (0)| 00:00:01 |
|*  2 |   INDEX RANGE SCAN               | IDX_OBJECT_ID |     1 |                |     1   (0)| 00:00:01 |
---------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
   2 - access("OBJECT_ID"=19)


----在误操作drop 表t 后。马上flashback drop;
可是之前对应的索引已经被rename了。可是oracle依旧能够这个这个rename后的索引

SQL> drop table t;
SQL> flashback table t to before drop;


-----异常运行计划
SQL> select   * from t where object_id=19;
Execution Plan
----------------------------------------------------------
Plan hash value: 329240726
--------------------------------------------------------------------------------------------------------------
| Id  | Operation                                | Name                           | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT            |                              |     1 |   207 |     2   (0)| 00:00:01 |
|   1 |  TABLE ACCESS BY INDEX ROWID| T              |     1 |   207 |     2   (0)| 00:00:01 |
|*  2 |   INDEX RANGE SCAN            | BIN$GVgNy7hUF5HgUFAK8RIOcA==$0 |     1 |            |     1   (0)| 00:00:01 |------貌似性能没有大影响
--------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
   2 - access("OBJECT_ID"=19)


SQL> select index_name,status from user_indexes where table_name=‘T‘;
BIN$GVgNy7hUF5HgUFAK8RIOcA==$0         VALID  

------重命名索引

alter index "BIN$GVgNy7hUF5HgUFAK8RIOcA==$0" rename to IDX_OBJECT_ID;























































以上是关于闪回drop恢复表后sql运行计划异常的主要内容,如果未能解决你的问题,请参考以下文章

Oracle Flashback Technologies - 闪回被drop的表

多次删除新增表后怎么恢复数据 oracle

2.Oracle 闪回特性(FLASHBACK DROP & RECYCLEBIN)

oracle备份与恢复--闪回技术

Oracle闪回

ORACLE DROP TABLE和truncate table的区别,以及删除表后,相关的索引是不是也一并删除