
如何查看oracle中某个用户占用表空间大小情况 50
其实我就是想知道这个用户每个月数据增加量是多少,但是目前有多个用户,直接查看表空间大小,显示的是所有用户使用的容量,如果我想知道某一个用户使用了多大的表空间容量,需要怎么...
其实我就是想知道这个用户每个月数据增加量是多少,但是目前有多个用户,直接查看表空间大小,显示的是所有用户使用的容量,如果我想知道某一个用户使用了多大的表空间容量,需要怎么操作?我导出这个用户的所有表后DMP文件大小是179M,这个大小可以做参考么?
用select bytes/1024/1024 from user_extents;好像不行,出来490行结果,每行不是0.0625就是1 展开
用select bytes/1024/1024 from user_extents;好像不行,出来490行结果,每行不是0.0625就是1 展开
4个回答
展开全部
可以通过以下语句查看所有的表空间大小:
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='表空间名称'的形式即可。
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='表空间名称'的形式即可。
展开全部
不好意思。。失误
应该加SUM
select sum(bytes)/1024/1024 from user_extents;
要是用户有多个表空间数据的话可以在最后加个where tablespace_name=xxx;来限定某个表空间
应该加SUM
select sum(bytes)/1024/1024 from user_extents;
要是用户有多个表空间数据的话可以在最后加个where tablespace_name=xxx;来限定某个表空间
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
(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
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
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select sum(bytes)/1024/1024 from user_extents;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询