ORACLE 臨時表空間TEMP 滿了怎么辦?
2024-08-29 13:31:30
供稿:網友
國內最大的酷站演示中心!
最近遇到這樣一個問題:前一段時間網頁查詢oracle表正常,可最近一直頁面無法顯示。打印出sql放到pl/sql devoloper 執行,報“無法通過8(在表空間xxx中)擴展 temp 段”,還有一個頁面,可以查詢出記錄,但無法統計數據!
經過分析產生原因可能是:oracle臨時段表空間不足,因為oracle總是盡量分配連續空間,一但沒有足夠的可分配空間或者分配不連續就會出現上述的現象。
解決方法:知道由于oracle將表空間作為邏輯結構-單元,而表空間的物理結構是數據文件,數據文件在磁盤上物理地創建,表空間的所有對象也存在于磁盤上,為了給表空間增加空間,就必須增加數據文件。先查看一下指定表空間的可用空間,使用視圖sys.dba_free_space,視圖中每條記錄代表可用空間的碎片大小:
sql>select file_id,block_id,blocks,bytes from sys.dba_free_space where tablespace_name=‘xxx’;
返回的信息可初步確定可用空間的最大塊,看一下它是否小于錯誤信息中提到的尺寸,再查看一下缺省的表空間參數:
sql>select initial_extent,next_extent,min_extents,pct_increase from sys.dba_tablespaces where tablespace_name='xxx';
通過下面的sql命令修改臨時段表空間的缺省存儲值:
sql>alter tablespace name default storage (initial 64k next 64k);
適當增大缺省值的大小有可能解決出現的錯誤問題,也可以通過修改用戶的臨時表空間大小來解決這個問題:
sql>alter user username temporary tablespace new_tablespace_name;
使用alter tablespace命令,一但完成,所增加的空間就可使用,無需退出數據庫或使表空間脫機,但要注意,一旦添加了數據文件,就不能再刪除它,若要刪除,就要刪除表空間。
不喜歡用命令的朋友,也可以通過oracle工具 dba studio 找到出問題庫的表空間,具體位置在“存儲”->“表空間”->”xxx”,右攔“一般信息”,可以看到,數據文件使用情況,選擇存儲,可適當修改,“初使大小”,和“下一個大小”,問題可能會解決,然后選種“xxx”點鼠標右鍵,選擇“添加數據文件”,適當修改“一般信息”的“文件大小”和“存儲”的“數據文件已滿后自動擴展”的“增量”大小,問題也可以解決!