0504關於drop表後select查詢仍有效的問題
[20150504]關於drop表後select查詢仍有效的問題.txt
--這個是別人問的問題,我自己也做一個測試:
1.建立測試環境:
SCOTT@test> @ver1
PORT_STRING VERSION BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx 11.2.0.3.0 Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
SCOTT@test> create table t as select rownum id , 'test' name,lpad('a',100,'a') pad from dual connect by level <=1e3;
Table created.
CREATE OR REPLACE FUNCTION SCOTT.sleep (seconds IN NUMBER)
RETURN NUMBER AS
BEGIN
sys.dbms_lock.sleep(seconds);
RETURN seconds;
END;
/
exec sys.dbms_stats.gather_table_stats ( OwnName => user,TabName => 't',Estimate_Percent => NULL,Method_Opt => 'FOR ALL COLUMNS SIZE 1 ',Cascade => True ,No_Invalidate => false)
PL/SQL procedure successfully completed.
2.這樣如果執行如下:
--session 1:
SCOTT@test> set array 100
SCOTT@test> select t.id ,sleep(0.02) from t;
--基本需要20秒多,總共1000條記錄.
--在另外的會話做drop操作.
--session 2:
SCOTT@test> drop table t purge ;
Table dropped.
--如果看session 1,可以發現一直在輸出,直到結束.你可以認為表雖然刪除了(注意我加了purge引數),但是段頭資訊還在,透過段頭依舊可以定位資料塊.
2.再重複測試:
create table t as select rownum id , 'test' name,lpad('a',100,'a') pad from dual connect by level <=1e3;
exec sys.dbms_stats.gather_table_stats ( OwnName => user,TabName => 't',Estimate_Percent => NULL,Method_Opt => 'FOR ALL COLUMNS SIZE 1 ',Cascade => True ,No_Invalidate => false)
--session 1:
SCOTT@test> set array 100
SCOTT@test> select t.id ,sleep(0.03) from t;
--session 2:
SCOTT@test> drop table t purge ;
Table dropped.
SCOTT@test> create table tx as select rownum id , 'test' name,lpad('b',100,'b') pad from dual connect by level <=1e3;
Table created.
--session 1:
799 .03
800 .03
ERROR:
ORA-08103: object no longer exists
800 rows selected.
--可以如果段頭資訊被覆蓋,已經不是原來的物件了,就報錯ORA-08103: object no longer exists.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-1621492/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於Hibernate的查詢問題
- 關於delete,drop,truncate的問題delete
- 關於 mysql 中的 rand () 查詢問題MySql
- 關於rebuild index online 及drop index後重建問題RebuildIndex
- 關於restful 查詢API設計問題RESTAPI
- Java中關於二分查詢的問題Java
- BIEB:關於CRM系統查詢效能問題
- 【RECYCLEBIN】誤drop 表後長時間執行的select查詢仍可完成資料檢索現象的探祕
- 關於分頁查詢結果的快取問題快取
- 關於下拉選單查詢資料庫的問題資料庫
- 關於快取與資料查詢次數的問題快取
- leetcode題解(查詢表問題)LeetCode
- 求助:DetachedCriteria關聯查詢問題~~
- 關於並查集問題並查集
- 關於MySQL 查詢表資料大小的總結MySql
- 關於mysql查詢字符集不匹配問題的解決方法MySql
- 致板橋:關於"查詢資料庫後是返回ResultSet還是返回Collection?"的幾點問題資料庫
- MySQL鎖表相關問題查詢思路MySql
- oracle 雜湊查詢與巢狀查詢跟表的先後關係測試Oracle巢狀
- 關於事件輪詢(event loop)的問題事件OOP
- 【問題】 table 和column 查詢表定義
- select查詢之三:子查詢
- select查詢之一:普通查詢
- 關於Room資料庫,拼寫模糊查詢語句遇到的問題OOM資料庫
- 關於查詢列表準確定位元素的問題,通常如何解決
- 關於二分查詢及其上下界問題的一些思考
- select子查詢
- Mongodb 關聯表查詢MongoDB
- 鎖表的相關資訊查詢
- select 表的時候如果別的會話TRUNCATE DROP PURGE表後會是什麼結果會話
- [BUG反饋]form表達提交查詢問題ORM
- 5-順序表查詢及插入問題
- mysql 5.7.11查詢分割槽表的一個問題MySql
- select查詢之四:連線查詢
- 關於聯合索引,範圍查詢,時間列索引的幾個問題索引
- 關於一個使用者SQL慢查詢問題的分析及優化SQL優化
- Oracle:優化方法總結(關於連表查詢)Oracle優化
- 關於 mysql 中的 select * from table_a,table_b 的問題MySql