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

如何查看oracle表空间已使用大小

1. 查看所有表空间大小

SQL> select tablespace_name,sum(bytes)/1024/1024 from dba_data_files
2 group by tablespace_name;

2. 已经使用的表空间大小
SQL> select tablespace_name,sum(bytes)/1024/1024 from dba_free_space
2 group by tablespace_name;

3. 所以使用空间可以这样计算

select a.tablespace_name,total,free,total-free used from
( select tablespace_name,sum(bytes)/1024/1024 total from dba_data_files
group by tablespace_name) a,
( select tablespace_name,sum(bytes)/1024/1024 free from dba_free_space
group by tablespace_name) b
where a.tablespace_name=b.tablespace_name;


4. 下面这条语句查看所有segment的大小。
Select Segment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name

5. 还有在命令行情况下如何将结果放到一个文件里。
SQL> spool out.txt
SQL> select * from v$database;
SQL> spool off

每张表都是作为“段”来存储的,可以通过user_segments视图查看其相应信息。
段(segments)的定义:如果创建一个堆组织表,则该表就是一个段。
sql:SELECT segment_name AS TABLENAME,BYTES FROM user_segments WHERE segment_name='表名'。
解释:
segment_name 就是要查询的表名(大写),BYTES 为表存储所占用的字节数。本sql的意思就是查询出表名和表所占的存储空间大小。

在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

查询结果:



使用以下语句查看当前用户每个表占用空间的大小:
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

  • 19760843173: “oracle”怎么查看表的空间里有哪些表?
    盖邦:6、在查询到表空间的信息之后,我们有时需要删除没用的表空间,使用命令drop tablespace xxx including contents and datafiles;即可。甲骨文股份有限公司(Oracle)是全球大型数据库软件公司,总部位于美国加州红木城的红木岸。...
  • 19760843173: oracle 怎样查询某用户下的所有表的表名
    盖邦:1、首先在计算机中,打开Oracle的连接程序,用新建的数据库管理员,进入【Oracle控制】的窗口上,鼠标左键单击【服务器】按钮,并选择【SQL工作表】。2、接着,在【Oracle服务器】的窗口上,在输入窗口中输入SQL查询语句,并...
  • 19760843173: oracle中如何查看一个视图里面有哪几个表
    盖邦:可以尝试在oracle中用PL\/SQL找到对应的视图,然后右击点“编辑”,就可以看到有哪些表了。
  • 19760843173: 怎么查看oracle里有哪些数据库,以及数据库里有哪些表
    盖邦:通过以下方式可以查看oracle里有哪些数据库,以及数据库里有哪些表:1、SELECT * FROM ALL_TABLES;系统里有权限的表。2、SELECT * FROM DBA_TABLES; 系统表。3、SELECT * FROM USER_TABLES; 当前用户下的表。1、甲骨文...
  • 19760843173: 如何在oracle中查询每个表的记录条数
    盖邦:select count(*) from user_tables t where table_name like 'TEST%';3、编写脚本,查询TEST开头表,每个表的记录数,declare v_sql varchar2(200);v_cnt number(10);begin for v_tab in (select table_name from...
  • 19760843173: oracle 查看表结构,表里的数据
    盖邦:1、首先,我们打开PLSQL工具连接到需要进行数据比对的ORACLE数据库。2、登录成功后,点击工具(tool)选择匹配用户结构(compare user objects)我们先匹配数据表结构以防止匹配数据时造成数据无法修改的风险。3、在弹出的界面中...
  • 19760843173: oracle 怎样查询某用户下的所有表的表名
    盖邦:select * from all_tab_comments -- 查询所有用户的表,视图等。select * from user_tab_comments -- 查询本用户的表,视图等。select * from all_col_comments --查询所有用户的表的列名和注释。select * from user_...
  • 19760843173: Oracle中如何查询所有表及其所使用的表空间
    盖邦:Oracle中查询所有表及其所使用的表空间可以使用SQL语句:select Segment_Name,Sum(bytes)\/1024\/1024 From User_Extents Group By Segment_Name;在数据库管理员的日常工作中,应该经常查询表空间的利用率,按照数据库系统的具体...
  • 19760843173: oracle中怎么用sql查表以及表的字段名
    盖邦:查表的时候需要用到user_tables、all_tables,user_tables查出来的是该用户拥有的表,all_tables查出来的是所有用户的表。2、用sql查表的字段 查表的字段需要用到user_tab_columns、all_tab_columns,一样的前者只能查到...
  • 19760843173: 用oracle怎么查询当前数据库中的所有表
    盖邦:如果有管理员权限的用户,可以执行:select * from dba_tables;这里可以看到此数据库下的所有表 如果没有管理员权限的用户,则执行:select * from tabs;或者select * from user_tables; 只能查询此用户有权限的表,不一定...

  • 相关链接

  • oracle 查看单表建表语句
  • oracle表空间文件位置
  • oracle查看某个表的表分区
  • 怎么查看oracle的库名
  • 经验分享为自博友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
    有问题请发邮件给我们
    © 经验分享网