oracle學習筆記 temp空間不足不能自動釋放的解決辦法

1、先查看錶空間

SELECT D.TABLESPACE_NAME "數據庫文件名稱",    
       SPACE || 'M' "總空間(M)",    
       BLOCKS "總BLOCKS",    
       SPACE - NVL (FREE_SPACE, 0) || 'M' "已用空間(M)",    
       ROUND ( (1 - NVL (FREE_SPACE, 0) / SPACE) * 100, 2) || '%'   "已用率(%)",    
       FREE_SPACE || 'M' "空閒空間(M)"    
  FROM (  SELECT TABLESPACE_NAME,    
                 ROUND (SUM (BYTES) / (1024 * 1024), 2) SPACE,    
                 SUM (BLOCKS) BLOCKS    
            FROM DBA_DATA_FILES    
        GROUP BY TABLESPACE_NAME) D,    
       (  SELECT TABLESPACE_NAME,    
                 ROUND (SUM (BYTES) / (1024 * 1024), 2)   
  
FREE_SPACE    
            FROM DBA_FREE_SPACE    
        GROUP BY TABLESPACE_NAME) F    
 WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+)    
UNION ALL                                                          
  
   --如果有臨時表空間    
SELECT D.TABLESPACE_NAME,    
       SPACE || 'M' "總空間(M)",    
       BLOCKS SUM_BLOCKS,    
       USED_SPACE || 'M' "已用空間(M)",    
       ROUND (NVL (USED_SPACE, 0) / SPACE * 100, 2) || '%'   
  
"已用率(%)",    
       NVL (FREE_SPACE, 0) || 'M' "空閒空間(M)"    
  FROM (  SELECT TABLESPACE_NAME,    
                 ROUND (SUM (BYTES) / (1024 * 1024), 2) SPACE,    
                 SUM (BLOCKS) BLOCKS    
            FROM DBA_TEMP_FILES    
        GROUP BY TABLESPACE_NAME) D,    
       (  SELECT TABLESPACE_NAME,    
                 ROUND (SUM (BYTES_USED) / (1024 * 1024), 2)   
  
USED_SPACE,    
                 ROUND (SUM (BYTES_FREE) / (1024 * 1024), 2)   
  
FREE_SPACE    
            FROM V$TEMP_SPACE_HEADER    
        GROUP BY TABLESPACE_NAME) F    
 WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+)    
ORDER BY 1;

2、再查看temp文件位置

SELECT B.NAME TABLESPACE_NAME, A.NAME DATAFILE_NAME, ROUND(A.BYTES / (1024 * 1024), 2) "表空間大小"

FROM V$TEMPFILE A,V$TABLESPACE B

WHERE A.TS# = B.TS#

3、創建temp2 文件

CREATE TEMPORARY TABLESPACE TEMP02

TEMPFILE 'D:/APP/ADMINISTRATOR/ORADATA/ORCL/TEMP02.DBF' 
SIZE 1024M AUTOEXTEND ON NEXT 30720M MAXSIZE UNLIMITED;
-- size 是固定大小 autoextend on next 爲最大擴展大小

4、指定TEMP文件默許文件

ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP02;

5、查看是否有會話鏈接

SELECT A.USERNAME,A.SID,A.SERIAL#,A.SQL_ADDRESS,A.MACHINE,

A.PROGRAM,B.TABLESPACE,B.SEGTYPE,B.CONTENTS

FROM V$SESSION A,V$SORT_USAGE B

WHERE A.SADDR = B.SESSION_ADDR

6、刪除原來的TEMP文件

DROP TABLESPACE TEMP   including contents and datafiles cascade constraint

參考

http://blog.csdn.net/lmalds/article/details/33725657

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章