OS 刪除temp表空間 而磁碟空間未釋放的解決方案
2013-04-29 17:57:47的筆記.今天發現說很亂,此文特加以整理
場景:
昨天在系統上刪除了32G的temp01.dbf檔案,結果還沒有釋放磁碟空間 df -hl看下/目錄還是使用100%
未釋放磁碟空間原因:在Linux或者Unix系統中,透過rm或者檔案管理器刪除檔案將會從檔案系統的目錄結構上解除連結(unlink).然而如果檔案是被開啟的(有一個程式正在使用),那麼程式將仍然可以讀取該檔案,磁碟空間也一直被佔用.
所有在用命令drop tablespace temp [including contents and datafiles];會停在那裡
等待事件:
SQL> SELECT SID,SEQ# EVENT,P1TEXT,P2TEXT,P3TEXT,STATE FROM v$session_wait s where s.SID=159;
SID SEQ# EVENT P1TEXT P2TEXT P3TEXT STATE
----------------------------------------------------------------------------
159 440 enq: TS - contention name|mode tablespace ID dba WAITING
SQL>
如下解決方案①②可以將OS磁碟空間釋放和temp表空間刪除:
①
可以透過在系統上執行lsof |grep ..看下已經刪除但仍被應用程式佔用的檔案列表
[root@kfdb49 dbs]# lsof |grep deleted | grep TEMP
oracle 1804 oracle 31u REG 253,0 34359730176 1376405 /oracle/app/product/10.2.0/db_1/dbs/TEMP01.DBF (deleted)
讓os自動回收磁碟空間方法:kill掉相應的程式 或者 停掉使用這個檔案的應用
1)kill -9 1804 ... 再drop tablespace temp including contents and datafiles;
2)restart oracle 對應的空間會被釋放
在重啟的時候注意要 shutdown immediate 等待事物提交完成,再重啟 要是重啟的時候指定了臨時檔案1、CREATE CONTROLFILE REUSE DATABASE "instance“.....
2、alter database backup controlfile to trace as '新位置'; 引數檔案指定好新位置,為了下次啟動使用
3、alter database open;
4、create spfile from pfile;
檢查磁碟空間:
[root@kfdb49 dbs]# df -hl
②
查詢資料庫中誰在用這個temp;
--檢視誰在用這個temp表空間/及其當時的一個結果~
SQL> select se.SADDR,
se.SID,
SE.SERIAL#,
se.USERNAME,
se.OWNERID,
se.STATUS,
se.OSUSER,
se.PROCESS,
se.MACHINE,
se.TERMINAL,
se.PROGRAM,
se.SQL_id,
su.TABLESPACE,
su.EXTENTS,
su.BLOCKS
FROM v$session se, v$sort_usage su
WHERE se.saddr = su.session_addr;
SADDR SID SERIAL# USERNAME OWNERID STATUS OSUSER PROCESS MACHINE TERMINAL PROGRAM SQL_ID TABLESPACE EXTENTS BLOCKS
----------------------------------------------------------------------------------------------------------------------------------------------------------------
2133DF5C 158 36 SYS 2147483644 INACTIVE MHQ-PC\mhq 1896:1968 WORKGROUP\MHQ-PC MHQ-PC plsqldev.exe TEMP 23 2944
SQL>
從結果中發現 STATUS ==> INACTIVE 可以直接透過如下語句kill掉程式來釋放磁碟空間..
語句:
Alter system kill session '158,36';
再drop tablespace temp including contents and datafiles;
再檢查磁碟空間:
[root@kfdb49 dbs]# df -hl
若 STATUS ==> ACTIVE透過SQL_ID找到對應的sql再和相關人員確認方案...
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8494287/viewspace-1405539/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL 5.7的表刪除資料後的磁碟空間釋放MySql
- Linux檔案刪除空間未釋放Linux
- TEMP表空間不足解決 - temp group
- 解決linux下刪除檔案或oracle表空間後空間不釋放的問題LinuxOracle
- Mysql InnoDB刪除資料後釋放磁碟空間的方法MySql
- RM刪除檔案空間釋放詳解
- 解決刪除檔案後 WSL2 磁碟空間不釋放的問題
- oracle刪除(釋放)資料檔案/表空間流程Oracle
- 刪除表空間和表空間包含的檔案
- oracle temp 表空間Oracle
- lsof |grep deleted 釋放磁碟空間delete
- MongoDB Drop集合不釋放磁碟空間的解決辦法MongoDB
- hpux刪除檔案後空間不釋放UX
- 刪除檔案後,磁碟空間沒有釋放的處理記錄
- delete不釋放表空間delete
- 處理Linux刪除檔案後空間未釋放的問題Linux
- 解決linux刪除檔案後空間沒有釋放問題Linux
- Mysql 刪除資料後為釋放物理空間MySql
- Linux 刪除檔案後空間不釋放Linux
- Oracle 刪除資料後釋放資料檔案所佔磁碟空間Oracle
- 檢視單個SQL消耗TEMP表空間以及TEMP表空間使用率SQL
- 給Oracle BIGFILE表空間增加磁碟(通用的LINUX增加磁碟空間方案)OracleLinux
- Oracle Temp 表空間切換Oracle
- Oracle Temp 臨時表空間Oracle
- Shell磁碟空間和表空間告警程式
- ORACLE表空間的建立修改刪除Oracle
- 刪除資料庫表空間資料庫
- oracle建立臨時表空間和資料表空間以及刪除Oracle
- 歸檔日誌物理刪除後閃回恢復區空間未釋放
- 刪除正在使用的檔案,空間不釋放的問題
- 【實驗】兩種方法刪除表中的列與空間儲存釋放
- 臨時表空間的建立、刪除,設定預設臨時表空間
- 如何釋放Mac空間?釋放Mac系統空間小技巧Mac
- Oracle的temp表空間被佔滿Oracle
- Oracle 整理表碎片、釋放表的空間Oracle
- Oracle TEMP臨時表空間概念Oracle
- 2 Day DBA-管理Oracle例項-修改表空間-刪除表空間Oracle
- WSL 回收未使用的磁碟空間