ORACLE temp表的簡介
【前言】今天開發人員遇到一個temp表找不到資料的問題,稍微瞭解了一下,感覺還有很多知識點的,所以整理下來供大家參考;
【簡介】業務的實現過程中並不是所有的資料都是永久的存放在資料庫中的,有些業務在實現的過程中會通過一些臨時表或中間表去存放資料,當業務實現完成後臨時表或中間表的資料就可以刪除掉。基於這個業務特性,ORACLE的GLOBAL TEMPORARY TABLE就滿足了這個業務的功能;
【注】有些開發人員會建立一個實體表,就臨時存放資料,當這個業務過程完成之後再把這個實體表drop掉,實現這個temp表的功能;
【詳細介紹】
概念描述:臨時表中的資料只對當前Session有效,每個Session都有自己的臨時資料,並且不能訪問其它Session的臨時表中的資料。因此,臨時表不需要DML鎖。
當一個會話結束(使用者正常退出 使用者不正常退出ORACLE例項崩潰)或者一個事務結束的時候,Oracle對這個會話的表執行TRUNCATE 語句清空臨時表資料。
但不會清空其它會話臨時表中的資料,你可以索引臨時表和在臨時表基礎上建立檢視。同樣,建立在臨時表上的索引也是臨時的,也是隻對當前會話或者事務有效。
類別:Oracle臨時表分為會話級臨時表和事務級臨時表。
會話級臨時表:指臨時表中的資料只在會話生命週期之中存在,當使用者退出會話結束的時候,Oracle自動清除臨時表中資料。
事務級臨時表:指臨時表中的資料只在事務生命週期中存在。當一個事務結束(commit or rollback),Oracle自動清除臨時表中資料。
【建立指令碼】
ON COMMIT DELETE ROWS :建立事務級臨時表的方法
指令碼:
create global temporary table TEST1 ( id number) on commit delete rows ; |
ON COMMIT PRESERVE ROWS :建立會話級臨時表的方法
指令碼:
create global temporary table TEST3 (id number) on commit preserve rows ; |
【實驗操作】
一、建立global temporary table TEST1,插入資料1,在session1中檢視資料;
對於global temporary table ,session之間是隔離的狀態;
資料只在事務生命週期中存在。當一個事務結束(commit or rollback),Oracle自動清除臨時表中資料。
三、ON COMMIT PRESERVE ROWS 會話級臨時表的測試
進行COMMIT之後還能查詢到插入的資料,雖然事務結束了,但是會話還是繼續存在的;
退出之後重新登入,表中的資料已經被truncate,因為會話已經結束了,這是基於會話級別的臨時表;
【總結】oracle的temp表的這兩種模式已經能夠滿足實際的開發過程中的關於資料臨時存放的問題了。理解技術就是為了更好的利用技術,理解了臨時表的這兩種設定,對於實際工作的進行有很大的幫助的;
.....................................................................................................................................................................…………………………………...
本文作者:JOHN,某上市公司DBA,業餘時間專注於資料庫的技術管理,從管理的角度去運用技術。
ORACLE技術部落格:ORACLE 獵人筆記 資料庫技術群:367875324 (請備註ORACLE管理 )
......................................................................................................................................................................…………………………………..
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29819001/viewspace-1464126/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle temp 表空間Oracle
- Oracle Temp 表空間切換Oracle
- Oracle Temp 臨時表空間Oracle
- Oracle的temp表空間被佔滿Oracle
- Oracle TEMP臨時表空間概念Oracle
- Oracle Temp臨時表空間處理Oracle
- Oracle基礎 02 臨時表空間 tempOracle
- TEMP表空間不足解決 - temp group
- Oracle 12c 新特性 - 臨時表undo(TEMP UNDO)Oracle
- temp表學習筆記筆記
- Oracle Temp Table ConceptOracle
- Oracle的service功能簡介Oracle
- 聚簇表簡介
- Oracle Text簡介Oracle
- Oracle:srvctl 簡介Oracle
- Oracle:PGA 簡介Oracle
- Oracle程式簡介Oracle
- Oracle MTS簡介Oracle
- 檢視單個SQL消耗TEMP表空間以及TEMP表空間使用率SQL
- Oracle 11g中Temp臨時表空間、檔案的新特性Oracle
- Oracle RMAN備份為什麼會大量使用temp表空間?Oracle
- [Oracle Script] check temp tablespace usageOracle
- ORACLE SEQUENCE的簡單介紹Oracle
- 處理TEMP表空間滿的問題
- Foundation 價格表簡介
- 活動內碼表簡介
- 【MVIEW】Oracle通過物化檢視同步表資料及簡介ViewOracle
- 聊聊Data Guard環境下Temp表空間和Temp檔案管理
- 介紹oracle外部表Oracle
- Oracle PSU 簡介Oracle
- Oracle Data Guard簡介Oracle
- Oracle:RAC 程式簡介Oracle
- ORACLE監聽簡介Oracle
- Oracle約束簡介Oracle
- Oracle NOSQL DATABASE簡介OracleSQLDatabase
- oracle“SQL Trace”簡介OracleSQL
- 簡介oracle檢視Oracle
- 表單Form簡介——表單按鈕ORM