詳解如何刪除Oracle數(shù)據(jù)庫臨時表空間
前言
因生產(chǎn)環(huán)境磁盤空間不足,影響了業(yè)務(wù),短時間內(nèi)無法擴(kuò)容磁盤,經(jīng)過排查發(fā)現(xiàn),可以釋放temp臨時表空間來臨時釋放部分空間。
本文記錄了如何釋放臨時表空間的詳細(xì)操作步驟。
1、查看舊的臨時表空間
首先查看舊的臨時表空間的空間占用情況
SQL>select tablespace_name,tablespace_size/1024/1024, allocated_space/1024/1024,free_space/1024/1024 from dba_temp_free_space; TABLESPACE_NAME TABLESPACE_SIZE/1024/1024 ALLOCATED_SPACE/1024/1024 FREE_SPACE/1024/1024 -------------------- ------------------------- ------------------------- -------------------- TEMP 23069 23069 23067
2、新建temp表空間
創(chuàng)建新的臨時表空間,用于替換舊的臨時表空間
SQL>create temporary tablespace temp1 tempfile ‘+DATA' size 100m autoextend on; Tablespace created.
3、修改默認(rèn)臨時表空間
將新的臨時表空間設(shè)置為默認(rèn)的臨時表空間
SQL>alter database default temporary tablespace temp1; Database altered.
4、查看新建的臨時表空間使用情況
新的臨時表空間被設(shè)置為默認(rèn)臨時表空間后,新的臨時數(shù)據(jù)會寫到新的臨時表空間中,下面查看新建的臨時標(biāo)快的空間占用情況
SQL>select tablespace_name,tablespace_size/1024/1024 total, allocated_space/1024/1024 allocated ,free_space/1024/1024 free from dba_temp_free_space; tablespace_name total allocated free -------------------- ------------------------- ------------------------- -------------------- TEMP 23069 23069 23067 TEMP1 100 3 99
5、查看臨時表空間使用情況
5.1、查看誰在使用臨時表空間
下面的SQL查詢哪些會話在占用舊的臨時表空間
SQL>Col PROGRAM for a20 SQL>Col MACHINE for a20 SQL>col username for a15 SQL>SELECT se.username, sid, serial#, sql_address, machine, program, tablespace, segtype, contents FROM v$session se,v$sort_usage su WHERE se.saddr=su.session_addr order by 7,1;
5.2、然后查看用戶的狀態(tài)是active還是inactive,如果是inactive,直接kill即可
如果舊的臨時表空間的會話是active,需要謹(jǐn)慎,不能直接kill,需要等待會話消失或者變成inactive狀態(tài)。如果是inactive狀態(tài),可以直接kill會話。
SQL>select * from v$session where sid=‘1042'; SQL>alter system kill session ‘1042,48682';
5.3、查看臨時表空間上正在執(zhí)行哪些SQL
上面的SQL查看哪些會話運(yùn)行在舊的臨時表空間, 下面的SQL將查詢active會話中,正在執(zhí)行的SQL語句。以此來判斷是否是關(guān)鍵的事物。
SQL>Col tablespace name for a20 SQL>SELECT se.username, se.sid, se.serial#, su.extents, su.blocks \* to\_number(rtrim(p.value)) AS Space, tablespace, segtype, sql\_text FROM v$sort\_usage su,v$parameter p ,v$session se,v$sql s WHERE p.NAME = ‘db\_block\_size' AND su.session\_addr = se.saddr AND s.hash\_value = su.sqlhash AND s.address = su.sqladdr ORDER BY se.username ,se.sid;
6、確定舊的臨時表空間沒有在被使用,直接刪除即可
通過上面的兩個SQL語句確認(rèn)舊的臨時表空間上沒有會話和事物之后,就可以刪除舊的臨時表空間了。
SQL>drop tablespace temp including contents and datafiles;
到此這篇關(guān)于詳解如何刪除Oracle數(shù)據(jù)庫臨時表空間的文章就介紹到這了,更多相關(guān)刪除Oracle臨時表空間內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
優(yōu)化Oracle停機(jī)時間及數(shù)據(jù)庫恢復(fù)
優(yōu)化Oracle停機(jī)時間及數(shù)據(jù)庫恢復(fù)...2007-03-03Oracle獲取GUID和生成批量插入語句實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于Oracle獲取GUID和生成批量插入語句實(shí)現(xiàn)的相關(guān)資料,文中通過圖文以及示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者工作具有一定的參考價值,需要的朋友可以參考下2023-08-08WIN7下ORACLE10g服務(wù)端和客戶端的安裝圖文教程
WIN7下安裝ORACLE10gd的服務(wù)端和客戶端的方法,在安裝之前需要先卸載oracle 10g,具體安裝方法和詳細(xì)說明大家可以參考下本文2017-07-07Oracle數(shù)據(jù)庫執(zhí)行腳本常用命令小結(jié)
這篇文章主要介紹了Oracle數(shù)據(jù)庫執(zhí)行腳本常用命令小結(jié)的相關(guān)資料,需要的朋友可以參考下2015-12-12