如何查看oracle 数据库中表的大小

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何查看oracle 数据库中表的大小相关的知识,希望对你有一定的参考价值。

好比有一张user(用户表),我想统计张表的数据信息的大小,请各位高手啊指点

select segment_name,segment_type,bytes/1024 from user_segments;
通关过segment,也可以查到你表的具体大小,上面精确到了字节单位,如果想变成M,则后面bytes/1024/1024即可。
参考技术A 数据字典 user_tables 数字字典中包含了你所需要的信息,比如表中存储的记录数 NUM_OWS,所占用的数据块数BLOCKS等。 但需要对你要关注的那张表进行统计分析user_tables 数据字典中的这些数据才是准确的, 对表进行分析的方法:

在 sqlpluse 中执行:
analyze table table_name compute statistics;

或者执行 oracle 系统包:
exec DBMS_STATS.GATHER_TABLE_STATS(.....);
参考技术B 每张表都是作为“段”来存储的,可以通过user_segments视图查看其相应信息。
段(segments)的定义:如果创建一个堆组织表,则该表就是一个段。
sql:SELECT segment_name AS TABLENAME,BYTES||'B' FROM user_segments WHERE segment_name='表名'。
解释:
segment_name 就是要查询的表名(大写),BYTES 为表存储所占用的字节数。本sql的意思就是查询出表名和表所占的存储空间大小。
参考技术C 关注。。。

如何查看数据库中的表?

参考技术A 怎样用SQL语句查询一个数据库中的所有表?
--读取库中的所有表名select name from sysobjects where xtype='u'--读取指定表的所有列名select name from syscolumns where id=(select max(id) from sysobjects where xtype='u' and name='表名')获取数据库表名和字段sqlserver中各个系统表的作用sysaltfiles 主数据库 保存数据库的文件syscharsets 主数据库 字符集与排序顺序sysconfigures 主数据库 配置选项syscurconfigs 主数据库 当前配置选项sysdatabases 主数据库 服务器中的数据库syslanguages 主数据库 语言syslogins 主数据库 登陆帐号信息sysoledbusers 主数据库 链接服务器登陆信息sysprocesses 主数据库 进程sysremotelogins主数据库 远程登录帐号syscolumns 每个数据库 列sysconstrains 每个数据库 限制sysfilegroups 每个数据库 文件组sysfiles 每个数据库 文件sysforeignkeys 每个数据库 外部关键字sysindexs 每个数据库 索引sy *** enbers 每个数据库 角色成员sysobjects 每个数据库 所有数据库对象syspermissions 每个数据库 权限systypes 每个数据库 用户定义数据类型select 列名=name from syscolumns where id=object_id(N'要查的表名')
如何查看oracle数据库中的所有表
觉得你应该先弄清楚oracle的常规数据字典的结构,像9i里的常规数据字典中对象名称就有以USER,ALL,DBA为前缀的对象。

以USER为例,我们查该对象下有些什么表,就应该执行下列的语句:

SQL>select table_name from user_tables;

类似的,你可以进行替换。:)

如果你想查数据库中所有的表的话,可以查询

SELECT * FROM dba_tables

如果你想查询数据库中某个用户下的表的话,也可以登录这个用户,再查询:

SELECT * FROM USER_TABLES

要想导入外部sql语句可以用命令

sql >@e:\文件名.sql

如你想保存 select * from tablename;语句的结果,可以在sql*plus 里面这样:

SPOOL c:\test.sql 这是保存文件的位置

select * from tablename;

SPOOL OFF
mysql如何进入数据库查看所有表
mysql> use my_db;

mysql> select * from rmation_schema.tables t where t.table_schema='my_db';

--大概

Mysql> create table lala (la_id int ,la_name varchar(55) primary(id)) enginee=innodb
怎样看SQL数据库中哪些表有数据
什么数据库

1.

select * from rmation_schema.tables

2.

select table_name from user_all_tables

-------------------------

CREATE PROCEDURE get_table AS

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tablespace]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)

create table tablespace --创建结果存储表

(name varchar(50) ,

rows int , reserved varchar(20) ,

data varchar(20) ,

index_size varchar(20) ,

unused varchar(20) )

truncate table tablespace --清空数据表

--这里.....关键部分.把存储过程的结果放到一个表里.

insert into tablespace exec sp_MSforeachtable "exec sp_spaceused '?'"

go

查询运行该存储过程后得到的结果

select * from tablespace order by cast(left(ltrim(rtrim(reserved)) , len(ltrim(rtrim(reserved)))-2) as int) desc

以上是关于如何查看oracle 数据库中表的大小的主要内容,如果未能解决你的问题,请参考以下文章

如何查看oracle数据文件大小

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

如何查看数据库中的表?

如何查看oracle中某个用户占用表空间大小情况

如何查看mysql中表的锁定情况

如何查看oracle临时表空间当前使用了多少空间的大小