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