如何查看oracle中某个用户占用表空间大小情况

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何查看oracle中某个用户占用表空间大小情况相关的知识,希望对你有一定的参考价值。

其实我就是想知道这个用户每个月数据增加量是多少,但是目前有多个用户,直接查看表空间大小,显示的是所有用户使用的容量,如果我想知道某一个用户使用了多大的表空间容量,需要怎么操作?我导出这个用户的所有表后DMP文件大小是179M,这个大小可以做参考么?
用select bytes/1024/1024 from user_extents;好像不行,出来490行结果,每行不是0.0625就是1

可以通过以下语句查看所有的表空间大小:
sql:SELECT C.TABLESPACE_NAME,A.BYTES/1048576 MEGS_TOTAL,(A.BYTES-B.BYTES)/1048576 MEGS_USED,
B.BYTES/1048576 MEGS_FREE,(A.BYTES-B.BYTES)/A.BYTES * 100 PCT_USED, B.BYTES/A.BYTES * 100 PCT_FREE
FROM (SELECT TABLESPACE_NAME,SUM(A.BYTES) BYTES,MIN(A.BYTES) MINBYTES,MAX(A.BYTES) MAXBYTES FROM SYS.DBA_DATA_FILES A
GROUP BY TABLESPACE_NAME) A,(SELECT A.TABLESPACE_NAME,NVL(SUM(B.BYTES),0) BYTES
FROM SYS.DBA_DATA_FILES A,SYS.DBA_FREE_SPACE B WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME (+) AND A.FILE_ID = B.FILE_ID (+)
GROUP BY A.TABLESPACE_NAME) B,SYS.DBA_TABLESPACES C
WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME(+) AND A.TABLESPACE_NAME = C.TABLESPACE_NAME ORDER BY 6;
备注:如果是查询特定的可以在外面在嵌套一层select * from(sql)t1 where t1.TABLESPACE_NAME='表空间名称'的形式即可。
参考技术A 不好意思。。失误
应该加SUM
select sum(bytes)/1024/1024 from user_extents;

要是用户有多个表空间数据的话可以在最后加个where tablespace_name=xxx;来限定某个表空间
参考技术B (1)以DBA权限登录数据库执行,查询全部表空间使用情况。
SELECT c.tablespace_name,a.bytes/1048576 Megs_Total,(a.bytes-b.bytes)/1048576 Megs_Used,
b.bytes/1048576 Megs_Free,(a.bytes-b.bytes)/a.bytes * 100 Pct_Used, b.bytes/a.bytes * 100 Pct_Free
FROM (SELECT tablespace_name,SUM(a.bytes) bytes,MIN(a.bytes) minbytes,MAX(a.bytes) maxbytes
FROM sys.DBA_DATA_FILES a
GROUP BY tablespace_name) a,(SELECT a.tablespace_name,NVL(SUM(b.bytes),0) bytes
FROM sys.DBA_DATA_FILES a,sys.DBA_FREE_SPACE b
WHERE a.tablespace_name = b.tablespace_name (+)
AND a.file_id = b.file_id (+)
GROUP BY a.tablespace_name) b,sys.DBA_TABLESPACES c
WHERE a.tablespace_name = b.tablespace_name(+)
AND a.tablespace_name = c.tablespace_name
ORDER BY 6;
(2)确认一下关心的用户所属表空间与上述全部表空间使用情况比对,即可知道结果
(3)DMP文件本身经过压缩,基本可按照4倍的比例考虑表空间已使用的容量,即:179M*4
参考技术C select sum(bytes)/1024/1024 from user_extents;

如何在Oracle中查看各个表,表空间占用空间的大小

在Oracle中查看各表及表空间占用空间大小可用sql语句执行查看。

Oracle版本:Oracle 10g

一、查看表占用空间大小语句:

select t.segment_name, t.segment_type, sum(t.bytes / 1024 / 1024) "占用空间(M)"
from dba_segments t
where t.segment_type=\'TABLE\'
group by OWNER, t.segment_name, t.segment_type;

查询结果:

二、查看表空间占用空间大小语句:

select a.tablespace_name,a.bytes/1024/1024 "Sum MB",(a.bytes-b.bytes)/1024/1024 "used MB",b.bytes/1024/1024 "free MB",round(((a.bytes-b.bytes)/a.bytes)*100,2) "percent_used" 
from 
(select tablespace_name,sum(bytes) bytes from dba_data_files group by tablespace_name) a, 
(select tablespace_name,sum(bytes) bytes,max(bytes) largest from dba_free_space group by tablespace_name) b 
where a.tablespace_name=b.tablespace_name 
order by ((a.bytes-b.bytes)/a.bytes) desc

查询结果:

参考技术A 使用以下语句查看当前用户每个表占用空间的大小:
Select Segment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name

使用一下语句查看每个表空间占用空间的大小:
Select Tablespace_Name,Sum(bytes)/1024/1024 From Dba_Segments Group By Tablespace_Name

以上是关于如何查看oracle中某个用户占用表空间大小情况的主要内容,如果未能解决你的问题,请参考以下文章

如何在Oracle中查看各个表,表空间占用空间的大小

如何在Oracle中查看各个表,表空间占用空间的大小

如何在Oracle中查看各个表,表空间占用空间的大小

如何在oracle中查询某个表的占用了多大的空间!如果是sql语句请讲的详细子我是菜鸟!

oracle占用的空间特别大,该如何解决?

如何查询临时表空间被啥占用了