模拟一下这个过程
sec@ora10g> create table t as select * from all_objects;
Table created.
sec@ora10g> insert into t select * from t;
24560 rows created.
sec@ora10g> /
49120 rows created.
sec@ora10g> /
98240 rows created.
sec@ora10g> /
196480 rows created.
sec@ora10g> /
392960 rows created.
sec@ora10g> /
785920 rows created.
sec@ora10g> commit;
Commit complete.
sec@ora10g> select count(*) from t;
COUNT(*)
----------
1571840
开启第二个session
drop表T
sec@ora10g> drop table t;
Table dropped.
使用v$session_longops查看当前执行的message。
sec@ora10g> select sid,serial#,message,time_remaining
2from v$session_longops
3 where time_remaining > 0
4/
Time
SID SERIAL# MESSAGE
Remaining
------- ------- -------------------------------------------------------------------------------------- ---------
1848 15232 Table Scan:SEC.BIN$hFitti/9oEbgQAB/AQAgDw==$0: 6268 out of 22351 Blocks done
151
读取的就是回收站中的数据。
sec@ora10g> select * from tab;
TNAME
TABTYPECLUSTERID
------------------------------ ------- ----------
BIN$hFitti/9oEbgQAB/AQAgDw==$0 TABLE
sec@ora10g> select OBJECT_NAME,ORIGINAL_NAME,TYPE,OPERATION,DROPTIME from USER_RECYCLEBIN order by DROPTIME,ORIGINAL_NAME;
OBJECT_NAME
ORIGINAL_NAME
TYPE
OPERATION DROPTIME
------------------------------ -------------------------------- -------------------- --------- -------------------
BIN$hFitti/9oEbgQAB/AQAgDw==$0 T
TABLE
DROP2010-04-16:10:00:18
当第一个session执行完之后再重复执行select语句将会报错。
sec@ora10g> select * from t;
select * from t
*
ERROR at line 1:
ORA-00942: table or view does not exist
secooler |