Oracle表大小和表空間使用情況查詢

2021-10-02 21:57:13 字數 4103 閱讀 8097

1. 表空間查詢:

select a.tablespace_name "表空間名"

,total /

(1024

*1024

)"表空間大小(m)"

,free /

(1024

*1024

)"表空間剩餘大小(m)"

,(total - free)/(

1024

*1024

)"表空間使用大小(m)"

,round

((total - free)

/ total,4)

*100

"使用率 %"

from

(select tablespace_name,

sum(bytes) free

from dba_free_space

group

by tablespace_name) a,

(select tablespace_name,

sum(bytes) total

from dba_data_files

group

by tablespace_name) b

where a.tablespace_name = b.tablespace_name

2. 臨時表temp查詢

select temp_used.tablespace_name,

total - used as

"free"

, total as

"total"

,round

(nvl(total - used,0)

*100

/ total,3)

"free percent"

from

(select tablespace_name,

sum(bytes_used)

/1024

/1024 used

from **_$temp_space_header

group

by tablespace_name) temp_used,

(select tablespace_name,

sum(bytes)

/1024

/1024 total

from dba_temp_files

group

by tablespace_name) temp_total

where temp_used.tablespace_name = temp_total.tablespace_name;

select tablespace_name,

round

(tablespace_size /

1024

/1024

/1024,2

)as total,

round

(free_space /

1024

/1024

/1024,2

)as free,

round

((tablespace_size - free_space)

/1024

/1024

/1024,2

) used_size,

round

(nvl(free_space,0)

*100

/ tablespace_size,3)

||'%' pct_free

from dba_temp_free_space;

每張表都是作為「段」來儲存的,可以通過user_segments檢視檢視其相應資訊。

段(segments)的定義:如果建立乙個堆組織表,則該錶就是乙個段。

user_segments 包含的關鍵字段及含義:

segment_name 段名,列出所有表名,索引名等

segment_type 段型別,如table, index等

table_sapce 表空間名字

bytes 位元組,分配給段的物理空間大小

例:查詢某使用者的資料使用情況

--在該使用者下執行以下sql語句

select b.segment_name "段名"

, b.segment_type "段型別"

, b.bytes "段大小g"

,tablespace_name "所屬表空間"

from (select segment_name,

segment_type,tablespace_name,

round

(sum

(bytes)

/1024

/1024

/1024,2

) bytes

from user_segments a

group

by a.segment_name, segment_type,tablespace_name)b

where b.bytes >=

0.5order

by bytes desc

擴充套件:若物件是索引,列出索引所屬的表

with b as

(select segment_name,

segment_type,

tablespace_name,

round

(sum

(bytes)

/1024

/1024

/1024,2

) bytes

from user_segments a

group

by a.segment_name,

segment_type,

tablespace_name),

c as

(select

distinct index_name, table_name from user_ind_columns)

select b.segment_name "段名"

, b.segment_type "段型別"

, c.table_name "表名"

, b.bytes "段大小g"

, tablespace_name "所屬表空間"

from b

left

join c

on b.segment_name = c.index_name

where b.bytes >=

0.5order

by b.bytes desc

dba_segments 包含的關鍵字段及含義:

segment_name 段名,列出所有表名,索引名等

segment_type 段型別,如table, index等

table_sapce 表空間名字

bytes 位元組,分配給段的物理空間大小

--需要dba許可權

select b.segment_name "段名"

, b.segment_type "段型別"

, b.bytes "段大小g"

,tablespace_name "所屬表空間"

from (select segment_name,

segment_type,tablespace_name,

round

(sum

(bytes)

/1024

/1024

/1024,2

) bytes

from dba_segments a

where tablespace_name=

'ipnet'

group

by a.segment_name, segment_type,tablespace_name)b

where b.bytes >=

0.5order

by bytes desc

oracle檢視表空間使用大小和擴充套件表空間

1.檢視所有表空間大小 select tablespace name,sum bytes 1024 1024 from dba data files group by tablespace name 2.已經使用的表空間大小 select tablespace name,sum bytes 1024...

檢視 Oracle 表空間使用率

1 用到了 sys.dba free space sys.dba data files 兩個檢視,需要被賦予在這兩個檢視物件上的查詢許可權。connect as sysdba grant select on sys.dba free space to forrest grant select on ...

表空間使用率

檢視表空間名稱 大小 使用大小 剩餘大小和使用率 select a.tablespace name 表空間名稱 total 1024 1024 表空間大小 m free 1024 1024 表空間剩餘大小 m total free 1024 1024 表空間使用大小 m total 1024 102...