Oracle 表空間超標如何處理

2021-08-10 14:22:08 字數 1569 閱讀 8924

首先要查詢表空間,可以乙個個查,也可以一起查詢,找到自己的表空間資料資訊;尤其要找到【表空間具體名稱】查詢語句如下:

select upper(f.tablespace_name) "表空間名",

d.tot_grootte_mb "表空間大小(m)",

d.tot_grootte_mb - f.total_bytes "已使用空間(m)",

to_char(round((d.tot_grootte_mb - f.total_bytes) / d.tot_grootte_mb * 100,2),'990.99') "使用比",

f.total_bytes "空閒空間(m)",

f.max_bytes "最大塊(m)"

from (select tablespace_name,

round(sum(bytes) / (1024 * 1024), 2) total_bytes,

round(max(bytes) / (1024 * 1024), 2) max_bytes

from sys.dba_free_space

group

by tablespace_name) f,

(select dd.tablespace_name,

round(sum(dd.bytes) / (1024 * 1024), 2) tot_grootte_mb

from sys.dba_data_files dd

group

by dd.tablespace_name) d

where d.tablespace_name = f.tablespace_name

orderby4

desc

;

select * from dba_data_files where tablespace_name like

'users%';

如果確切知道要查詢的表空間名,可以直接等號操作:

select * from dba_data_files where tablespace_name ='你的表空間名稱';
重新規定表空間大小(resize)和擴充套件最大資料塊大小(maxsize);這裡datafile後面是表空間檔案的目錄,要帶檔案型別的;我這裡是dbf,你自己的要根據自己檔名替換;

--增加當前資料檔案的大小41054

alter

database

datafile '表空間目錄\表空間名稱.dbf'

resize 30000m;

--在使用過程中,如果想改變某個資料塊的最大大小,可以

alter

database

datafile '表空間目錄\表空間名稱.dbf'

autoextend on

maxsize 30000m;

resize和maxsize會收到兩個限制:

1.是硬碟的物理記憶體大小,這個大家都知道;

2.是資料塊的大小和資料檔案大小是有關聯的;如果資料塊大小是8k,能建立的最大資料大小是2^22*8k=32g;

如何處理Oracle中TEMP表空間滿的問題

正常來說,在完成select語句 create index等一些使用temp表空間的排序操作後,oracle是會自動釋放掉臨時段a的。但有些有侯我們則會遇到臨時段沒有被釋放,temp表空間幾乎 滿的狀況,甚至是我們重啟了資料庫仍沒有解決問題。這個問題在論壇中也常被問到,下面我總結一下,給出幾種處理方...

如何處理Oracle中TEMP表空間滿的問題?

正常來說,在完成select語句 create index等一些使用temp 表空間的排序操作後,oracle 是會自動釋放掉臨時段a的。但有些有侯我們則會遇到臨時段沒有被釋放,temp 表空間幾乎滿的狀況,甚至是我們重啟了資料庫仍沒有解決問題。這個問題在論壇中也常被問到,下面我總結一下,給出幾種處...

如何處理Oracle中TEMP表空間滿的問題?

正常來說,在完成select語句 create index等一些使用temp表空間的排序操作後,oracle是會自動釋放掉臨時段a的。但有些有侯我們則會遇到臨時段沒有被釋放,temp表空間幾乎滿的狀況,甚至是我們重啟了資料庫仍沒有解決問題。方法一 重啟庫 庫重啟時,smon程序會完成臨時段釋放,te...