磁盤空間不足(一)

 項目進入白熱化階段,各種問題都有可能出現,當每個人都在忙碌着做自己的事情時,突然一個分公司的支撐人員突然告訴我,當她插入數據的時候報錯:磁盤空間不足。這個時候我馬上上server上面去看,果然只剩下可憐的40M,1.5T的空間全部洗白。我馬上查看錶空間的使用情況,很悲劇的是空間不足。

  這個時候咋辦呢,我把udump下面的文件全部幹掉(這些文件一般在單個進程出問題的時候我纔會去查看)。幹掉之後剩下了2個多G的空間,這個時候查看錶空間的使用情況,發現表空間都使用正常,除了undo表空間滿了(當時的transaction很多),發現可能是臨時表空間增長迅速引起的。此外還有另外一個空間暫有20G左右,目前的辦法只有先幹掉臨時表空間(undo表空間只有6G),把臨時表空間掛到另外一個磁盤。

1. 查看所有的表空間

SQL> select * From v$tablespace;
 
       TS# NAME                           INCLUDED_IN_DATABASE_BACKUP BIGFILE FLASHBACK_ON ENCRYPT_IN_BACKUP
---------- ------------------------------ --------------------------- ------- ------------ -----------------
         0 SYSTEM                         YES                         NO      YES         
         1 UNDOTBS1                       YES                         NO      YES         
         2 SYSAUX                         YES                         NO      YES         
         4 USERS                          YES                         NO      YES         
         7 TBS_DATA                       YES                         NO      YES         
         8 TBS_INDX                       YES                         NO      YES         
         3 TEMP                           NO                          NO      YES         
7 rows selected

2. 查看當前用戶的使用表空間情況

SQL> select username,temporary_tablespace from dba_users;

USERNAME                       TEMPORARY_TABLESPACE
------------------------------ ------------------------------
MGMT_VIEW                      TEMP
SYS                            TEMP
DBSNMP                         TEMP
SYSMAN                         TEMP
YADX                           TEMP
SYSTEM                         TEMP
OUTLN                          TEMP
MDSYS                          TEMP
ORDSYS                         TEMP
CTXSYS                         TEMP
ANONYMOUS                      TEMP

USERNAME                       TEMPORARY_TABLESPACE
------------------------------ ------------------------------
EXFSYS                         TEMP
DMSYS                          TEMP
WMSYS                          TEMP
XDB                            TEMP
ORDPLUGINS                     TEMP
SI_INFORMTN_SCHEMA             TEMP
OLAPSYS                        TEMP
MDDATA                         TEMP
DIP                            TEMP
SCOTT                          TEMP
TSMSYS                         TEMP

已選擇22行。

 

3. 查看目前臨時表空間包含的數據文件:
SQL> select name from v$tempfile;
 
NAME
--------------------------------------------------------------------------------
E:\ORADATA\TEMP01.DBF
 
SQL>

4. 創建一個臨時表空間

create temporary tablespace TEMP tempfile 'E:\ORADATA\TEMP01.DBF' size 20G;

5. 將默認臨時表空間切換到新的表空間上

alter database default temporary tablespace TEMP;

6. 再次查看所有用戶的臨時表空間設置

確認沒有用戶在使用舊的表空間之後,可以刪除掉

drop tablespace TEMP;

7. 查看臨時表空間綜合信息

SQL> select file_name,tablespace_name,bytes/1024/1024 MB,autoextensible from dba
_temp_files;

FILE_NAME
--------------------------------------------------------------------------------

TABLESPACE_NAME                        MB AUT
------------------------------ ---------- ---
E:\ORADATA\TEMP01.DBF
TEMP                                20480 NO

8. 最後在host上面刪除臨時表空間數據文件

這樣,系統就釋放了臨時表空間的空間。此外更分公司商量馬上添加磁盤空間。這個問題暫時得到解決。 這次過程中有些東西沒得得到記錄,所以這裏只記錄了操作步湊。當然處理方法還有多種,各位多多研究。

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