方法:1、利用「select username,temporary_tablespace from dba_users」查看使用者目前使用的臨時表空間;2、利用「select * from dba_temp_files」查看臨時表空間檔案。
本教學操作環境:Windows10系統、Oracle 11g版、Dell G3電腦。
臨時表空間用來管理資料庫排序操作以及用於存儲臨時表、中間排序結果等臨時對象,當ORACLE裡需要用到SORT的時候,並且當PGA中sort_area_size大小不夠時,將會把資料放入臨時表空間進行排序。像是資料庫中一些操作: CREATE INDEX、 ANALYZE、SELECT DISTINCT、ORDER BY、GROUP BY、 UNION ALL、 INTERSECT、MINUS、SORT-MERGE JOINS、HASH JOIN等都可能使用至臨時表空間。當操作完成後,系統會自動清理臨時表空間中的臨時對象,並自動釋放臨時段。這裡的釋放只是標記為空閒、可以重複使用,其實實質佔用的磁碟空間並沒有真正釋放。這也是臨時表空間有時會不斷增加的原因。
臨時表空間儲存大規模排序作業(小規模排序作業會直接在RAM裡完成,大規模排序才需要磁碟排序Disk Sort)和雜湊作業的中間結果.它跟永久表空間不同的地方在於它由臨時資料檔案(temporary files)組成的,而不是永久資料檔案(datafiles)。臨時表空間不會儲存永久類型的對象,所以它不會也不需要備份。另外,對臨時資料檔的操作不產生redo日誌,不過會產生undo日誌。
建立臨時表空間或臨時表空間新增臨時資料檔案時,即使臨時資料檔案很大,新增過程也相當快。這是因為ORACLE的臨時資料檔案是一類特殊的資料檔案:稀疏檔案(Sparse File),當臨時表空間檔案建立時,它只會寫入檔案頭部和最後區塊資訊(only writes to the header and last block of the file)。它的空間是延遲分配的.這就是你創建臨時表空間或給臨時表空間添加資料檔飛快的原因。
另外,臨時表空間是NOLOGGING模式以及它不保存永久類型對象,因此即使資料庫損毀,做Recovery也不需要恢復Temporary Tablespace。
--查看用户当前使用的临时表空间 select username,temporary_tablespace from dba_users; --查看数据库临时表空间文件 select * from dba_temp_files; --查看数据库临时表空间使用情况 select * from dba_temp_free_space;
推薦教學:《Oracle影片教學》
以上是oracle怎麼查詢臨時表空間的詳細內容。更多資訊請關注PHP中文網其他相關文章!