Oracle中臨時表的深入研究

2022-05-13 04:37:45 字數 1115 閱讀 9771

最近考慮到我們的資料庫端寫儲存過程關於臨時表使用的情況,由於我們現在還不清楚資料庫端到底是怎麼處理的,是否和sql server的處理方式相同,是否會存在隱患等等一些問題,為了避免將來不必要的麻煩我做了深入的研究和檢視了一些權威的資料,現在和大家共享,希望大家在處理oracle臨時表是注意一下:

首先是建立臨時表的語法:

create global temporary table table

"(" column datatype [default expr]

[, column datatype [default expr] [ ]... ")"

on commit rows ;

oracle中的臨時表有兩種一種是事務級別的臨時表它在事務結束的時候自動清空記錄,另一種是會話級的它在我們訪問資料庫是的乙個會話結束後自動的清空。關於臨時表多使用者並行不是問題,乙個會話從來不會阻止另乙個會話使用臨時表。即使「鎖定」臨時表,乙個會話也不會阻止其他會話使用它們的臨時表。

如果有在sql server 和\或sybase中使用臨時表的經驗,需要主要考慮的不是執行select x,y ,z into #temp from some_table 來建立和裝載臨時表,而是:

1.對於每乙個資料庫,建立所有的temp表作為全域性臨時表。這將作為應用程式安裝的一部分完成,就像建立永久表一樣。

2.只要在過程中簡單的insert into temp(x,y,z) selelct x,y,z from some_table。只是理解這點,這裡的目的不是執行儲存過程建立表。在oracle中這樣做不是正確的方法。ddl是一種消耗資源非常大的操作,在執行時盡量不要使用,應用程式需要的臨時表應在應用程式安裝時建立,而不是在執行時建立。oracle中的臨時表和其他資料庫的臨時表是相似的,在每個資料庫中建立臨時表一次,不必在資料庫中的每個儲存過程中建立一次。臨時表總是存在的,他們作為物件存在於資料字典中,並且總是保持為空,直到有會話在其中放入資料。所有我在這裡說明如果我們在儲存過程中建臨時表,每次都建立乙個那麼我的系統隨著使用者的操作呼叫此儲存過程,每次多乙個這樣的表,我們在不知不覺中資料庫中的表的數量會越來越多,而我們還不知道會存在很大的隱患的所有說這點不可小視,為了我們的系統能在客戶那裡平穩、安全的執行我們一定要注意這樣的問題。如果不手動drop 表,臨時表還是在資料字典中存在的。

Oracle中臨時表的深入研究

最近考慮到我們的資料庫端寫儲存過程關於臨時表使用的情況,由於我們 現在還不清楚資料庫端到底是怎麼處理的,是否和sql server的處理方式相 同,是否會存在隱患等等一些問題,為了避免將來不必要的麻煩我做了深 入的研究和檢視了一些權威的資料,現在和大家共享,希望大家在處理 oracle臨時表是注意一...

Oracle中臨時表的深入研究

最近考慮到我們的資料庫端寫儲存過程關於臨時表使用的情況,由於我們現在還不清楚資料庫端到底是怎麼處理的,是否和sql server的處理方式相同,是否會存在隱患等等一些問題,為了避免將來不必要的麻煩我做了深入的研究和檢視了一些權威的資料,現在和大家共享,希望大家在處理oracle臨時表是注意一下 首先...

實驗 深入研究oracle使用者管理

今天上午開啟了本地兩台虛擬機器的oracle,提示正常啟動,但是其中一台虛擬機器上的oracle 用sys使用者連線的時候提示賬號密碼不對,於是在sqlplus中重置了sys使用者的密碼,再次登入還是提示使用者名稱密碼不對,但是確實是更新過來了sys使用者的密碼,這就勾起了的興趣,打算深入的透徹的學...