sql:SELECT CTABLESPACE_NAME,ABYTES/1048576 MEGS_TOTAL,(ABYTES-BBYTES)/1048576 MEGS_USED,
BBYTES/1048576 MEGS_FREE,(ABYTES-BBYTES)/ABYTES 100 PCT_USED, BBYTES/ABYTES 100 PCT_FREE
FROM (SELECT TABLESPACE_NAME,SUM(ABYTES) BYTES,MIN(ABYTES) MINBYTES,MAX(ABYTES) MAXBYTES FROM SYSDBA_DATA_FILES A
GROUP BY TABLESPACE_NAME) A,(SELECT ATABLESPACE_NAME,NVL(SUM(BBYTES),0) BYTES
FROM SYSDBA_DATA_FILES A,SYSDBA_FREE_SPACE B WHERE ATABLESPACE_NAME = BTABLESPACE_NAME (+) AND AFILE_ID = BFILE_ID (+)
GROUP BY ATABLESPACE_NAME) B,SYSDBA_TABLESPACES C
WHERE ATABLESPACE_NAME = BTABLESPACE_NAME(+) AND ATABLESPACE_NAME = CTABLESPACE_NAME ORDER BY 6;
备注:如果是查询特定的可以在外面在嵌套一层select from(sql)t1 where t1TABLESPACE_NAME='表空间名称'的形式即可。
1、查看Oracle数据库中数据文件信息的工具方法:使用上面介绍过的方法登录oracle enterprise manager console工具,选择‘存储’ 数据文件,会看到如下的界面,该界面显示了数据文件名称,表空间名称,以兆为单位的数据文件大小,已使用的数据文件大小及数据文件利用率。
每张表都是作为“段”来存储的,可以通过user_segments视图查看其相应信息。
段(segments)的定义:如果创建一个堆组织表,则该表就是一个段。
sql:SELECT segment_name AS TABLENAME,BYTES FROM user_segments WHERE segment_name='表名'。
解释:
segment_name 就是要查询的表名(大写),BYTES 为表存储所占用的字节数。本sql的意思就是查询出表名和表所占的存储空间大小。
1 全部表空间的大小
select tablespace_name, sum(bytes)/1024/1024 from dba_data_files group by tablespace_name;
TABLESPACE_NAME SUM(BYTES)/1024/1024
-------------------- --------------------
UNDOTBS1 65
SYSAUX 520
USERS 6
SYSTEM 680
EXAMPLE 100
2 空闲表空间大小
select tablespace_name, sum(bytes)/1024/1024 from dba_free_space group by tablespace_name;
TABLESPACE_NAME SUM(BYTES)/1024/1024
-------------------- --------------------
SYSAUX 34
UNDOTBS1 1
USERS 1
SYSTEM 4
EXAMPLE 22
3 已使用空间可以这样计算
select atablespace_name, total, free, total-free as used from
(select tablespace_name, sum(bytes)/1024/1024 as total from dba_data_files group by tablespace_name) a,
(select tablespace_name, sum(bytes)/1024/1024 as free from dba_free_space group by tablespace_name) b
where atablespace_name = btablespace_name;
TABLESPACE_NAME TOTAL FREE USED
-------------------- ---------- ---------- ----------
SYSAUX 520 336875 4863125
UNDOTBS1 65 1 64
USERS 625 125 5
SYSTEM 680 35 6765
EXAMPLE 100 215625 784375
更具体的sql语句:
select atablespace_name, total, free, total-free as used, substr(free/total 100, 1, 5) as "FREE%", substr((total - free)/total 100, 1, 5) as "USED%" from
(select tablespace_name, sum(bytes)/1024/1024 as total from dba_data_files group by tablespace_name) a,
(select tablespace_name, sum(bytes)/1024/1024 as free from dba_free_space group by tablespace_name) b
where atablespace_name = btablespace_name
order by atablespace_name;
select
bfile_name 物理文件名,
btablespace_name 表空间,
bbytes/1024/1024 大小M,
(bbytes-sum(nvl(abytes,0)))/1024/1024 已使用M,
substr((bbytes-sum(nvl(abytes,0)))/(bbytes)100,1,5) 利用率
from dba_free_space a,dba_data_files b
where afile_id=bfile_id
group by btablespace_name,bfile_name,bbytes
order by btablespace_name
该语句通过查询dba_free_space,dba_data_files,dba_tablespaces这三个数据字典表,得到了表空间名称,表空间类型,区管理类型,以”兆”为单位的表空间大小,已使用的表空间大小及表空间利用率。dba_free_space表描述了表空间的空闲大小,dba_data_files表描述了数据库中的数据文件,dba_tablespaces表描述了数据库中的表空间。
上面语句中from子句后有三个select语句,每个select语句相当于一个视图,视图的名称分别为a、b、c,通过它们之间的关联关系,我们得到了表空间的相关信息。
怎么查询oracle表空间总大小
查看所有表空间使用情况 :
select
bfile_id 文件ID号,
btablespace_name 表空间名,
bbytes/1024/1024||'M'字节数,
(bbytes-sum(nvl(abytes,0)))/1024/1024||'M' 已使用,
sum(nvl(abytes,0))/1024/1024||'M' 剩余空间,
100 - sum(nvl(abytes,0))/(bbytes)100 占用百分比
以上就是关于如何查看oracle中某个用户占用表空间大小情况全部的内容,包括:如何查看oracle中某个用户占用表空间大小情况、如何查询Oracle表空间和数据文件信息、如何查看ORACLE表空间里面某一张表所占用的内存大小等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)