查询 数据库表空间的大小以及每个表所占空间的大小,在网上搜索了一些查询语句,在此记录一下:
SELECT tablespace_name, sum( bytes ) / 1024 / 1024 FROM dba_data_files GROUP BY tablespace_name;
SELECT tablespace_name, file_id, file_name, round( bytes / ( 1024 * 1024 ), 0 ) total_space FROM dba_data_files ORDER BY tablespace_name;
SELECT a.tablespace_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 a.tablespace_name=b.tablespace_name ORDER BY a.tablespace_name;
SELECT t.segment_name, t.segment_type, sum( t.bytes / 1024 / 1024 ) "占用空间(M)" FROM dba_segments t WHERE t.segment_type='TABLE' AND t.segment_name='TABLE_NAME' GROUP BY OWNER, t.segment_name, t.segment_type;
一些 基础语句
在逻辑结构中, 从大到下,分别是如下的结构:数据库实例 -> 表空间 -> 数据段(表) -> 区 -> 块。
也就是说当我们要使用 作为项目的数据库时,我们需要先创建数据库实例,之后创建表空间,再创建相对应的表(也就是逻辑结构中的数据段)。
创建数据库实例一般使用 配置移植工具 -> 来创建。
创建名为 的表空间,数据文件为
create user csy identified by csy default tablespace ANIMAL;
查询当前用户拥有的所的有表空间:
select tablespace_name from user_tablespaces;
创建用户:
注意:这里的 必须大写(因为 自动将表空间名字全部转为大写)
create user csy identified by csy default tablespace ANIMAL;
最后,赋予用户 权限:
grant connect, resource, dba to csy;
下面的语句在 表控件下创建一个名为 的表:
create table dog ( name varchar(12), age varchar(12) ) tablespace animal;
使用下面的语句查看是否添加成功。查看 表空间下的所有表:
SELECT tablespace_name, table_name FROM user_tables WHERE tablespace_name='ANIMAL';
注意:上面的 一定要大写。即使你在创建表空间的时候输入的表空间名是小写的,也还是要大写。
因为 在存储表空间的时候自动将名字转化成大写了。
drop tablespace ANIMAL including contents and datafiles;
drop user user_name cascade;
到此这篇关于Oracle查询表空间大小及每个表所占空间的大小的文章就介绍到这了,更多相关Oracle查询表空间大小内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
大理古城戴威摸着贾跃亭过河?