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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於 mysql 中的 rand () 查詢問題MySql
- [20211220]關於標量子查詢問題.txt
- Java中關於二分查詢的問題Java
- leetcode題解(查詢表問題)LeetCode
- 【redis】關於查詢和分析redis中的bigkeys問題Redis
- 關於並查集問題並查集
- 關於mysql查詢字符集不匹配問題的解決方法MySql
- MySQL鎖表相關問題查詢思路MySql
- mysql 5.7.11查詢分割槽表的一個問題MySql
- 關於查詢列表準確定位元素的問題,通常如何解決
- 關於Room資料庫,拼寫模糊查詢語句遇到的問題OOM資料庫
- 關於 mysql 中的 select * from table_a,table_b 的問題MySql
- INSERT...SELECT語句對查詢的表加鎖嗎
- create table 使用select查詢語句建立表的方法分享
- 查詢皮膚中如何實現兩個 select 下拉框的關聯查詢?
- Mongodb 關聯表查詢MongoDB
- [BUG反饋]form表達提交查詢問題ORM
- 5-順序表查詢及插入問題
- 關於聯合索引,範圍查詢,時間列索引的幾個問題索引
- MySQL 優化五(關聯查詢子查詢以及 in 的效率問題)(高階篇)MySql優化
- Oracle:優化方法總結(關於連表查詢)Oracle優化
- sql查詢更新update selectSQL
- 關於oracle的空間查詢Oracle
- 關於jquery控制select下拉框自動展開問題jQuery
- 一條select的查詢的過程
- mysql 三表關聯查詢MySql
- mysql三表關聯查詢MySql
- 關於nginx-1.10.2的問題(為啥配置重置沒有效果)Nginx
- 關於dataguard出現問題的檢查步驟
- sql 模糊查詢問題SQL
- 分庫分表後的分頁查詢
- SQLServer DML操作阻塞SELECT查詢SQLServer
- 關於瀏覽器快取問題(圖片更換後,頁面仍優先讀取快取)瀏覽器快取
- 兩表關聯查詢:sql、mybatisSQLMyBatis
- mysql三張表關聯查詢MySql
- 一個MySQL多表查詢的問題MySql
- 關於onethink移植後登陸不了後臺問題的解決
- sphinx查詢過濾問題
- Laravel5.7 查詢問題Laravel