dba_tables和dba_segments表中块有什么区别

oracle table blocks测试

创建测试表:

SQL> create table t5(id int);

表已创建。

SQL> insert into t5 values(1);

已创建 1 行。

SQL> insert into t5 values(2);

已创建 1 行。

SQL> insert into t5 values(3);

已创建 1 行。

SQL> insert into t5 values(4);

已创建 1 行。

SQL> commit;

提交完成。

多插入一点数据:

SQL> begin

2 for i in 1  1000 loop

3 insert into T5 values(10000);

4 commit;

5 end loop;

6 end;

7 /

分析表

SQL> analyze table T5 compute statistics;

表已分析。

说明:

为什么要收集统计信息,因为dba_tables 中的blocks 是只有收集统计信息以后才有值,而且对于empty_blocks 参数,还必须使用analyze 分析之后才有值。 如果使用dbms_stats.gather_table_stats收集,只能收集到blocks的值,empty_blocks 收集不到。

本栏目更多精彩内容:http://www.bianceng.cn/database/Oracle/

查看dba_segments 和 DBA_TABLES表中 blocks 值:

SQL> select segment_name,blocks,extents,bytes,segment_type,tablespace_name from

dba_segments where segment_name='T5';

SEGME     BLOCKS    EXTENTS      BYTES SEGMENT_TYPE       TABLESPACE_NAME

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

T5          6528         66   53477376 TABLE              SYSTEM

SQL> select blocks,empty_blocks from dba_tables where table_name = 'T5';

BLOCKS EMPTY_BLOCKS

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

6449           78

从上面的结果看以看出:

6528 = 6449+78 +1

即:

Dba_Segments .blocks = Dba_Tables.Blocks+Dba_Tables.Empty_Blocks +1(segment header block)

这个多加的1是,是segment header block.

如果查询的结果不是这样,可能是你没有分析表。 不妨分析表之后在查一下看看。

这两张表对blocks 的定义也不一样:

DBA_SEGMENTS.BLOCKS holds the total number of blocks allocated to the table.

USER_TABLES.BLOCKS holds the total number of blocks allocated for data.

时间: 2024-09-27 16:11:26

dba_tables和dba_segments表中块有什么区别的相关文章

Oracle内核技术揭密. 1.2 段中块的使用

1.2 段中块的使用 在讲解本节主题前,我们先来理清一个概念,什么是段.在Oracle中,表和段是两个截然不同的概念.表从逻辑上说明表的形式,比如表有几列,每列的类型.长度,这些信息都属于表.而段只代表存储空间,比如,上节中提到的区,就是属于段.一个段中至少要包含一个区. Oracle中,每个对象都有一个ID值,表有表的ID,段有段的ID.在DBA_OBJECTS数据字典视图中,object_id列是表ID,data_object_id列是段ID,下面查看了某个表的表ID和段ID: SQL> c

删除数据表中的重复记录

数据|重复|重复记录 删除交通违章数据表中的重复记录(同一时间[haptime].车号牌[numberplate].处罚原因[reason])一.方法原理:  1.Oracle中,每一条记录都有一个rowid,rowid在整个数据库中是唯一的, rowid确定了每条记录是在ORACLE中的哪一个数据文件.块.行上. 2.在重复的记录中,可能所有列的内容都相同,但rowid不会相同,所以只要确定出重复记录中那些具有最大rowid的就可以了,其余全部删除. 二.实现方法:1.查询重复记录select

如何查找、删除表中重复的记录

重复 如何查找.删除表中重复的记录软件环境: 1.Windows NT4.0+ORACLE 8.0.42.ORACLE安装路径为:C:\ORANT问题提出: 1.当我们想要为一个表创建唯一索引时,如果该表有重复的记录,则无法创建成功. 方法原理: 1.Oracle中,每一条记录都有一个rowid,rowid在整个数据库中是唯一的, rowid确定了每条记录是在ORACLE中的哪一个数据文件.块.行上. 2.在重复的记录中,可能所有列的内容都相同,但rowid不会相同,所以只要确定出重复记录中 那

在Oracle中如何利用Rowid查找和删除表中的重复记录

oracle|重复|重复记录 平时工作中可能会遇到当试图对库表中的某一列或几列创建唯一索引时,系统提示 ORA-01452 :不能创建唯一索引,发现重复记录. 下面总结一下几种查找和删除重复记录的方法(以表CZ为例):表CZ的结构如下:SQL> desc cz Name                                      Null?    Type ----------------------------------------- -------- ------------

如何在一个1亿行的大oracle表中删除1千万行数据

要在一个1亿行的大表中,删除1千万行数据 在对数据库其他应用影响最小的情况下,以最快的速度完成 那么操作期间应该注意什么?如果中途中断了,有木有方法再继续? 如果应用不可停,又该怎么办呢? 删除了10分之一的数据,索引可能还需重建,统计信息可能也得更新 由于昂贵的delete操作,Undo空间亚历山大.Redo log 也要担心被撑爆 而且批量delete虽然影响最小,但是可能会造成大量的空数据块 如此种种,剪不断.理还乱.是删除,别是一番滋味在心头啊 很显然,删除或更新的方法和数据库的设计及软

Access6.5在表中复制和粘贴数据

  在城市和省份两个字段里有很多重复的内容每次都输入一遍显得非常麻烦我们可以结合复制和粘贴数据两个命令将一个数据块很方便地放到很多位置上去 首先打开Access 的剪贴板单击视图菜单将鼠标移动到工具选项上在工具选项右边弹出一个菜单单击上面的剪贴板命令屏幕上出现一个剪贴板对话框 复制和粘贴命令就是将一些数据复制到剪贴板上然后再将这些数据从剪贴板上粘贴到我们需要用到这些数据的位置上选中表里的某个数据后在它上面单击鼠标右键并单击弹出菜单上的复制命令选中的内容就被复制到了剪贴板上然后将鼠标移动到一个新位

我想查询每个表中的数据有多少?

问题描述 select a.talname,count(1) from (SELECT distinct 'ysj.'||table_name talname from all_tab_cols where table_name IN ('YZ_YBZHF','YZ_JYMX','YZ_JYHZ','YS_ZLXGFORICK','YS_ZKZL', 'YS_ZKLCZL','YS_ZKHPZL_SBSJ','YS_ZKHPZL2','YS_ZKHPZL','YS_ZKFFJL', 'YS_ZK

SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型

原文:SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 R2调测. 2.具备 Transact-SQL 编程经验和使用 SQL Server Management Studio 的经验. 3.熟悉或了解Microsoft SQL Server 2008中的空间数据类型. 4.具备相应(比如OGC)的GIS专业理论知识. 5.其他相关知识.   通过前面几篇文章介

删除没有主键的表中的重复记录

删除没有主键的表中的重复记录 create procedure delrepeat as begin SELECT distinct *  INTO testTemp FROM test delete from test insert into test SELECT *  FROM testTemp drop table testTemp end distinct:用于查询中去除重复项 begin~end范围语句表示存储过程中作为整体执行的语句块 oracle数据库教程 delete from