mik*_*iki 7 sql oracle space tablespace
我需要知道Oracle中真正的表空间大小.我有一些表空间,我需要知道它现在使用了多少空间以及有多少空闲空间(可能是可用空间的百分比).我在网上找到了一些sqls,但是所有这些都显示了基于水印的大小...这不是现在分配的真实空间,但据我所知达到的最高值...所以我真正的需要是知道如果我有足够的空间存放我经常写的数据,我必须知道在删除其中一些数据之前我可以存储多少空间.
谢谢
Bob*_*ica 20
试试这个:
-- Available space, by tablespace
SELECT * FROM
(SELECT tablespace_name FROM dba_tablespaces)
LEFT OUTER JOIN
(SELECT tablespace_name, SUM(bytes) AS total_bytes
FROM dba_data_files
GROUP BY tablespace_name)
USING (tablespace_name)
LEFT OUTER JOIN
(SELECT tablespace_name, sum(bytes) AS used_bytes
from dba_segments
GROUP BY tablespace_name)
USING (tablespace_name)
LEFT OUTER JOIN
(SELECT tablespace_name, SUM(bytes) AS free_bytes
FROM dba_free_space
GROUP BY tablespace_name)
USING (tablespace_name);
Run Code Online (Sandbox Code Playgroud)
小智 5
如果您想了解数据文件大小,包括那些可以自动扩展的文件,请尝试:
SELECT DISTINCT a.tablespace_name,
sum(a.bytes)/1024/1024 CurMb,
sum(decode(b.maxextend, null, a.bytes/1024/1024, b.maxextend*(SELECT value FROM v$parameter WHERE name='db_block_size')/1024/1024)) MaxMb,
round(100*(sum(a.bytes)/1024/1024 - round(c.free/1024/1024))/(sum(decode(b.maxextend, null, a.bytes/1024/1024, b.maxextend*(SELECT value FROM v$parameter WHERE name='db_block_size')/1024/1024)))) UPercent,
(sum(a.bytes)/1024/1024 - round(c.free/1024/1024)) TotalUsed,
(sum(decode(b.maxextend, null, a.bytes/1024/1024, b.maxextend*(SELECT value FROM v$parameter WHERE name='db_block_size')/1024/1024)) - (sum(a.bytes)/1024/1024 - round(c.Free/1024/1024))) TotalFree
FROM dba_data_files a,
sys.filext$ b,
(SELECT d.tablespace_name , sum(nvl(c.bytes,0)) free
FROM dba_tablespaces d,dba_free_space c
WHERE d.tablespace_name = c.tablespace_name(+)
GROUP BY d.tablespace_name) c
WHERE a.file_id = b.file#(+)
AND a.tablespace_name = c.tablespace_name
GROUP BY a.tablespace_name,
c.free/1024
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24820 次 |
| 最近记录: |