Dba_Segments .blocks=Dba_Tables.Blocks+Dba_Tables.Empty_Blocks ?
2007-11-02 14:28
435 查看
运行如下脚本,发现许多表不满足条件:Dba_Segments .blocks=Dba_Tables.Blocks+Dba_Tables.Empty_Blocks
SQL> SELECT ds.segment_type,ds.segment_name ,ds.blocks ds_block,dt.blocks dt_block,dt.empty_blocks dt_emp_block FROM Dba_Segments ds,dba_tables dt
2 WHERE ds.segment_name=dt.table_name
3 AND ds.blocks<>(dt.blocks+dt.empty_blocks)
4 AND ds.owner='TEST_USER'
5 AND dt.owner='TEST_USER'
6 AND ds.segment_name='ACCT';
SEGMENT_TYPE SEGMENT_NAME DS_BLOCK DT_BLOCK DT_EMP_BLOCK
------------------ --------------------------- ---------- ---------- ------------
TABLE ACCT 32 5 0
SQL>
这种现象,是由于统计信息不准确造成的,现在对表ACCT进行分析,计算统计信息:
SQL> analyze table acct compute statistics;
Table analyzed
SQL>
然后重新运行上面的查询:
SQL> SELECT ds.segment_type,ds.segment_name ,ds.blocks ds_block,dt.blocks dt_block,dt.empty_blocks dt_emp_block FROM Dba_Segments ds,dba_tables dt
2 WHERE ds.segment_name=dt.table_name
3 AND ds.blocks<>(dt.blocks+dt.empty_blocks)
4 AND ds.owner='TEST_USER'
5 AND dt.owner='TEST_USER'
6 AND ds.segment_name='ACCT';
SEGMENT_TYPE SEGMENT_NAME DS_BLOCK DT_BLOCK DT_EMP_BLOCK
------------------ --------------------------------- ---------- ---------- ------------
SQL>
上面的查询,没有返回结果,说明ACCT表满足如下条件:
Dba_Segments .blocks=Dba_Tables.Blocks+Dba_Tables.Empty_Blocks
可以使用如下脚本进行验证:
SQL> SELECT ds.segment_type,ds.segment_name ,ds.blocks ds_block,dt.blocks dt_block,dt.empty_blocks dt_emp_block FROM Dba_Segments ds,dba_tables dt
2 WHERE ds.segment_name=dt.table_name
3 AND ds.blocks=(dt.blocks+dt.empty_blocks)
4 AND ds.owner='TEST_USER'
5 AND dt.owner='TEST_USER'
6 AND ds.segment_name='ACCT';
SEGMENT_TYPE SEGMENT_NAME DS_BLOCK DT_BLOCK DT_EMP_BLOCK
------------------ --------------------------------- ---------- ---------- ------------
TABLE ACCT 32 5 27
SQL>
SQL> SELECT ds.segment_type,ds.segment_name ,ds.blocks ds_block,dt.blocks dt_block,dt.empty_blocks dt_emp_block FROM Dba_Segments ds,dba_tables dt
2 WHERE ds.segment_name=dt.table_name
3 AND ds.blocks<>(dt.blocks+dt.empty_blocks)
4 AND ds.owner='TEST_USER'
5 AND dt.owner='TEST_USER'
6 AND ds.segment_name='ACCT';
SEGMENT_TYPE SEGMENT_NAME DS_BLOCK DT_BLOCK DT_EMP_BLOCK
------------------ --------------------------- ---------- ---------- ------------
TABLE ACCT 32 5 0
SQL>
这种现象,是由于统计信息不准确造成的,现在对表ACCT进行分析,计算统计信息:
SQL> analyze table acct compute statistics;
Table analyzed
SQL>
然后重新运行上面的查询:
SQL> SELECT ds.segment_type,ds.segment_name ,ds.blocks ds_block,dt.blocks dt_block,dt.empty_blocks dt_emp_block FROM Dba_Segments ds,dba_tables dt
2 WHERE ds.segment_name=dt.table_name
3 AND ds.blocks<>(dt.blocks+dt.empty_blocks)
4 AND ds.owner='TEST_USER'
5 AND dt.owner='TEST_USER'
6 AND ds.segment_name='ACCT';
SEGMENT_TYPE SEGMENT_NAME DS_BLOCK DT_BLOCK DT_EMP_BLOCK
------------------ --------------------------------- ---------- ---------- ------------
SQL>
上面的查询,没有返回结果,说明ACCT表满足如下条件:
Dba_Segments .blocks=Dba_Tables.Blocks+Dba_Tables.Empty_Blocks
可以使用如下脚本进行验证:
SQL> SELECT ds.segment_type,ds.segment_name ,ds.blocks ds_block,dt.blocks dt_block,dt.empty_blocks dt_emp_block FROM Dba_Segments ds,dba_tables dt
2 WHERE ds.segment_name=dt.table_name
3 AND ds.blocks=(dt.blocks+dt.empty_blocks)
4 AND ds.owner='TEST_USER'
5 AND dt.owner='TEST_USER'
6 AND ds.segment_name='ACCT';
SEGMENT_TYPE SEGMENT_NAME DS_BLOCK DT_BLOCK DT_EMP_BLOCK
------------------ --------------------------------- ---------- ---------- ------------
TABLE ACCT 32 5 27
SQL>
相关文章推荐
- dba_tables 和 dba_segments 表中 blocks 的区别
- dba_tables 和 dba_segments 表中 blocks 的区别
- dba_tables 和 dba_segments 表中 blocks 的区别
- dba_tables 和 dba_segments 表中 blocks 的区别
- dba_tables.blocks V$ dba_segments.blocks
- dba_tables 和 dba_segments 表中 blocks 的区别
- dba_tables 和 dba_segments 表中 blocks 的区别
- dba_tables 和 dba_segments 表中 blocks 的区别
- dba_tables 和 dba_segments 表中 blocks 的区别
- dba_segments和dba_tables的不同
- dba_tables 和 dba_segments 表中块的区别
- dba_tables 和 dba_segments 表中块的区别
- DBA_TABLES之BLOCKS AND EMPTY_BLOCKS
- dba_tables和dba_segments里记录的表大小的比较
- oracle 中视图dba_segments 每个字段是什么意思
- dba_tables,all_tables,user_tables
- Oracle dba_data_files dba_segments dba_free_space
- DBA_SEGMENTS - 查看数据库对象所分配的物理存储空间
- dba_tables中的avg_row_len是如何被计算的
- Oracle “dba_tables”介绍